diff --git a/.openzeppelin/polygon-mumbai.json b/.openzeppelin/polygon-mumbai.json index a26be43..fcf1301 100644 --- a/.openzeppelin/polygon-mumbai.json +++ b/.openzeppelin/polygon-mumbai.json @@ -1,1074 +1,20 @@ { "manifestVersion": "3.2", "admin": { - "address": "0x24012c0E4800F3122304314538cAdB09919b98e7", - "txHash": "0xd56ce21ed2f33063eeb4e6689f87096b92cadd3165bd126a5776bf7c7df08539" + "address": "0x0048A1caF94494aF8102770922464f27c36d51B0", + "txHash": "0xb4c6008d526e90a04fd9904473320f54961f68124c69d05e765dd032810d71eb" }, "proxies": [ { - "address": "0x643db3aa8adDFd1877453491d144aD184cf8261b", - "txHash": "0xe73774269dab2ec1842910b196be523a11718b17ed0e5c4456b54c5e5df967b1", + "address": "0x3fE1246CbC4eDf2A4f51f7CF442277bA863823e1", + "txHash": "0xf4c26b74a5f0e6971a21d1ca97576c969b6db98a994505861b13af1d4a620715", "kind": "transparent" - }, - { - "address": "0x69Afc555868Db29C6514Aea195210DeEeB72B8b2", - "txHash": "0xf7c0e4bfdf1a2782239909af34da1cec9ec74af880d7855dc56b58a4b7e0159f", - "kind": "transparent" - }, - { - "address": "0x8759Aa5d49CcBC659F7c62C6458EbEAD2E188cC9", - "txHash": "0x75f4bebb0c9139b698293428d57b8db0469f84ad3c76f6df048c4c4f3a21ddd9", - "kind": "transparent" - } - ], - "impls": { - "0df84c8962f4137a71edd6877ee9c960e3ee964ae0770be7baa2e099cb1227f2": { - "address": "0xa47d6C3197529E7439c97c7F79D7b6f0F35f384C", - "txHash": "0xbc585c640a67ab6569d9693eba9ddfc1b1be11c6cee0158a2a35621f99ad6b45", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "MAX_BPS", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:14" - }, - { - "label": "protocolFeePercent", - "offset": 0, - "slot": "102", - "type": "t_uint128", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:15" - }, - { - "label": "validatorFeePercent", - "offset": 16, - "slot": "102", - "type": "t_uint128", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:16" - }, - { - "label": "feeRecipient", - "offset": 0, - "slot": "103", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:17" - }, - { - "label": "PaycrestStakingContract", - "offset": 0, - "slot": "104", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:18" - }, - { - "label": "_liquidityAggregator", - "offset": 0, - "slot": "105", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:19" - }, - { - "label": "_isTokenSupported", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_bool)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:21" - }, - { - "label": "_isWhitelisted", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_bool)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:22" - }, - { - "label": "supportedInstitutions", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_bytes32,t_array(t_struct(Institution)3509_storage)dyn_storage)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:24" - }, - { - "label": "supportedInstitutionsByCode", - "offset": 0, - "slot": "109", - "type": "t_mapping(t_bytes32,t_struct(InstitutionByCode)3514_storage)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:25" - }, - { - "label": "order", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes32,t_struct(Order)3846_storage)", - "contract": "Paycrest", - "src": "contracts/Paycrest.sol:16" - }, - { - "label": "_nonce", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_address,t_uint256)", - "contract": "Paycrest", - "src": "contracts/Paycrest.sol:17" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_struct(Institution)3509_storage)dyn_storage": { - "label": "struct PaycrestSettingManager.Institution[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_uint256)": { - "label": "mapping(address => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_array(t_struct(Institution)3509_storage)dyn_storage)": { - "label": "mapping(bytes32 => struct PaycrestSettingManager.Institution[])", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(InstitutionByCode)3514_storage)": { - "label": "mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Order)3846_storage)": { - "label": "mapping(bytes32 => struct IPaycrest.Order)", - "numberOfBytes": "32" - }, - "t_struct(Institution)3509_storage": { - "label": "struct PaycrestSettingManager.Institution", - "members": [ - { - "label": "code", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "name", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(InstitutionByCode)3514_storage": { - "label": "struct PaycrestSettingManager.InstitutionByCode", - "members": [ - { - "label": "name", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "currency", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Order)3846_storage": { - "label": "struct IPaycrest.Order", - "members": [ - { - "label": "seller", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "token", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "senderFeeRecipient", - "type": "t_address", - "offset": 0, - "slot": "2" - }, - { - "label": "senderFee", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "rate", - "type": "t_uint96", - "offset": 0, - "slot": "4" - }, - { - "label": "isFulfilled", - "type": "t_bool", - "offset": 12, - "slot": "4" - }, - { - "label": "refundAddress", - "type": "t_address", - "offset": 0, - "slot": "5" - }, - { - "label": "currentBPS", - "type": "t_uint96", - "offset": 20, - "slot": "5" - }, - { - "label": "amount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_uint128": { - "label": "uint128", - "numberOfBytes": "16" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - }, - "t_uint96": { - "label": "uint96", - "numberOfBytes": "12" - } - } - } - }, - "240496fc0c8460a2599789f723106b0648ec8b43f199ac3cf93ee379a2225cdf": { - "address": "0xb391eF57440CA2f818D624152e479d36Fa0f918c", - "txHash": "0x3d73d9721b23ab0c0747b45bad803bd750fd69579e9e45efaba0cdcda8da9814", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_status", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" - }, - { - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" - }, - { - "label": "Paycrest", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "PaycrestValidator", - "src": "contracts/PaycrestValidator.sol:11" - }, - { - "label": "initialization", - "offset": 20, - "slot": "151", - "type": "t_bool", - "contract": "PaycrestValidator", - "src": "contracts/PaycrestValidator.sol:12" - }, - { - "label": "minimumAmount", - "offset": 0, - "slot": "152", - "type": "t_mapping(t_address,t_uint256)", - "contract": "PaycrestValidator", - "src": "contracts/PaycrestValidator.sol:13" - }, - { - "label": "_balance", - "offset": 0, - "slot": "153", - "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", - "contract": "PaycrestValidator", - "src": "contracts/PaycrestValidator.sol:14" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_mapping(t_address,t_uint256))": { - "label": "mapping(address => mapping(address => uint256))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_uint256)": { - "label": "mapping(address => uint256)", - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "3321a9c01b5133279cde883ec7271299fa6381fd8feb30e5e7800906329051f5": { - "address": "0x067ED50d3aF0969Ed25c2717b16775DA4372b431", - "txHash": "0x67211694851e10ab703397e96948c7167b7db050c979b99243399f24d96b4620", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "MAX_BPS", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:14" - }, - { - "label": "protocolFeePercent", - "offset": 0, - "slot": "102", - "type": "t_uint128", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:15" - }, - { - "label": "validatorFeePercent", - "offset": 16, - "slot": "102", - "type": "t_uint128", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:16" - }, - { - "label": "feeRecipient", - "offset": 0, - "slot": "103", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:17" - }, - { - "label": "PaycrestStakingContract", - "offset": 0, - "slot": "104", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:18" - }, - { - "label": "_liquidityAggregator", - "offset": 0, - "slot": "105", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:19" - }, - { - "label": "_isTokenSupported", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_bool)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:21" - }, - { - "label": "_isWhitelisted", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_bool)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:22" - }, - { - "label": "supportedInstitutions", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_bytes32,t_array(t_struct(Institution)3510_storage)dyn_storage)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:24" - }, - { - "label": "supportedInstitutionsByCode", - "offset": 0, - "slot": "109", - "type": "t_mapping(t_bytes32,t_struct(InstitutionByCode)3515_storage)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:25" - }, - { - "label": "order", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes32,t_struct(Order)3849_storage)", - "contract": "Paycrest", - "src": "contracts/Paycrest.sol:16" - }, - { - "label": "_nonce", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_address,t_uint256)", - "contract": "Paycrest", - "src": "contracts/Paycrest.sol:17" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_struct(Institution)3510_storage)dyn_storage": { - "label": "struct PaycrestSettingManager.Institution[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_uint256)": { - "label": "mapping(address => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_array(t_struct(Institution)3510_storage)dyn_storage)": { - "label": "mapping(bytes32 => struct PaycrestSettingManager.Institution[])", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(InstitutionByCode)3515_storage)": { - "label": "mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Order)3849_storage)": { - "label": "mapping(bytes32 => struct IPaycrest.Order)", - "numberOfBytes": "32" - }, - "t_struct(Institution)3510_storage": { - "label": "struct PaycrestSettingManager.Institution", - "members": [ - { - "label": "code", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "name", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(InstitutionByCode)3515_storage": { - "label": "struct PaycrestSettingManager.InstitutionByCode", - "members": [ - { - "label": "name", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "currency", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Order)3849_storage": { - "label": "struct IPaycrest.Order", - "members": [ - { - "label": "seller", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "token", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "senderFeeRecipient", - "type": "t_address", - "offset": 0, - "slot": "2" - }, - { - "label": "senderFee", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "rate", - "type": "t_uint96", - "offset": 0, - "slot": "4" - }, - { - "label": "isFulfilled", - "type": "t_bool", - "offset": 12, - "slot": "4" - }, - { - "label": "refundAddress", - "type": "t_address", - "offset": 0, - "slot": "5" - }, - { - "label": "currentBPS", - "type": "t_uint96", - "offset": 20, - "slot": "5" - }, - { - "label": "amount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_uint128": { - "label": "uint128", - "numberOfBytes": "16" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - }, - "t_uint96": { - "label": "uint96", - "numberOfBytes": "12" - } - } - } - }, - "2636de822fd44d416deca7edfb8879216a969f4ab221995b7ecb3999873b7bfc": { - "address": "0xC9163C10EFA61f4d03AC24C280176A79E1A34CA7", - "txHash": "0xd0dc330036f21f0aeee8059432d7e1d62ccf2ace5d71c2ed49de72455aa4f05a", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "MAX_BPS", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:14" - }, - { - "label": "protocolFeePercent", - "offset": 0, - "slot": "102", - "type": "t_uint128", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:15" - }, - { - "label": "validatorFeePercent", - "offset": 16, - "slot": "102", - "type": "t_uint128", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:16" - }, - { - "label": "feeRecipient", - "offset": 0, - "slot": "103", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:17" - }, - { - "label": "PaycrestStakingContract", - "offset": 0, - "slot": "104", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:18" - }, - { - "label": "_liquidityAggregator", - "offset": 0, - "slot": "105", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:19" - }, - { - "label": "_isTokenSupported", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_bool)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:21" - }, - { - "label": "_isWhitelisted", - "offset": 0, - "slot": "107", - "type": "t_mapping(t_address,t_bool)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:22" - }, - { - "label": "supportedInstitutions", - "offset": 0, - "slot": "108", - "type": "t_mapping(t_bytes32,t_array(t_struct(Institution)3529_storage)dyn_storage)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:24" - }, - { - "label": "supportedInstitutionsByCode", - "offset": 0, - "slot": "109", - "type": "t_mapping(t_bytes32,t_struct(InstitutionByCode)3534_storage)", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:25" - }, - { - "label": "order", - "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes32,t_struct(Order)3868_storage)", - "contract": "Paycrest", - "src": "contracts/Paycrest.sol:16" - }, - { - "label": "_nonce", - "offset": 0, - "slot": "111", - "type": "t_mapping(t_address,t_uint256)", - "contract": "Paycrest", - "src": "contracts/Paycrest.sol:17" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_struct(Institution)3529_storage)dyn_storage": { - "label": "struct PaycrestSettingManager.Institution[]", - "numberOfBytes": "32" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_uint256)": { - "label": "mapping(address => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_array(t_struct(Institution)3529_storage)dyn_storage)": { - "label": "mapping(bytes32 => struct PaycrestSettingManager.Institution[])", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(InstitutionByCode)3534_storage)": { - "label": "mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(Order)3868_storage)": { - "label": "mapping(bytes32 => struct IPaycrest.Order)", - "numberOfBytes": "32" - }, - "t_struct(Institution)3529_storage": { - "label": "struct PaycrestSettingManager.Institution", - "members": [ - { - "label": "code", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "name", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(InstitutionByCode)3534_storage": { - "label": "struct PaycrestSettingManager.InstitutionByCode", - "members": [ - { - "label": "name", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "currency", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_struct(Order)3868_storage": { - "label": "struct IPaycrest.Order", - "members": [ - { - "label": "seller", - "type": "t_address", - "offset": 0, - "slot": "0" - }, - { - "label": "token", - "type": "t_address", - "offset": 0, - "slot": "1" - }, - { - "label": "senderFeeRecipient", - "type": "t_address", - "offset": 0, - "slot": "2" - }, - { - "label": "senderFee", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "rate", - "type": "t_uint96", - "offset": 0, - "slot": "4" - }, - { - "label": "isFulfilled", - "type": "t_bool", - "offset": 12, - "slot": "4" - }, - { - "label": "refundAddress", - "type": "t_address", - "offset": 0, - "slot": "5" - }, - { - "label": "currentBPS", - "type": "t_uint96", - "offset": 20, - "slot": "5" - }, - { - "label": "amount", - "type": "t_uint256", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_uint128": { - "label": "uint128", - "numberOfBytes": "16" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - }, - "t_uint96": { - "label": "uint96", - "numberOfBytes": "12" - } - } - } - }, - "dad82dff5083650d729d2133902cf9b6af6905191b33d9439a1bd76ca77dab2b": { - "address": "0xB2a3b19a99aCBB7072aAc794D94963A70A3a43a9", - "txHash": "0xc5877f704a91dcce460e171461222f29a6cc78087fb0f7d29aad4a87c390a277", + } + ], + "impls": { + "951609168512da20c94b0b8689859956b09d89540f2220f5cdb31f5d102ee872": { + "address": "0x3bC5c933312293C763D8D442fe11BeD1238a5d56", + "txHash": "0x5531c79a3b30840048f2801e5bea14935d5bbd23b177b09b2222ece6e33ba0d9", "layout": { "solcVersion": "0.8.18", "storage": [ @@ -1125,20 +71,20 @@ "label": "protocolFeePercent", "offset": 0, "slot": "102", - "type": "t_uint128", + "type": "t_uint64", "contract": "PaycrestSettingManager", "src": "contracts/PaycrestSettingManager.sol:15" }, { - "label": "validatorFeePercent", - "offset": 16, + "label": "feeRecipient", + "offset": 8, "slot": "102", - "type": "t_uint128", + "type": "t_address", "contract": "PaycrestSettingManager", "src": "contracts/PaycrestSettingManager.sol:16" }, { - "label": "feeRecipient", + "label": "_aggregatorAddress", "offset": 0, "slot": "103", "type": "t_address", @@ -1146,76 +92,76 @@ "src": "contracts/PaycrestSettingManager.sol:17" }, { - "label": "PaycrestStakingContract", + "label": "_aggregator", "offset": 0, "slot": "104", - "type": "t_address", + "type": "t_bytes_storage", "contract": "PaycrestSettingManager", "src": "contracts/PaycrestSettingManager.sol:18" }, { - "label": "_liquidityAggregator", + "label": "__gap", "offset": 0, "slot": "105", - "type": "t_address", + "type": "t_array(t_uint256)50_storage", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:19" + "src": "contracts/PaycrestSettingManager.sol:21" }, { "label": "_isTokenSupported", "offset": 0, - "slot": "106", + "slot": "155", "type": "t_mapping(t_address,t_bool)", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:21" + "src": "contracts/PaycrestSettingManager.sol:23" }, { "label": "_isWhitelisted", "offset": 0, - "slot": "107", + "slot": "156", "type": "t_mapping(t_address,t_bool)", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:22" + "src": "contracts/PaycrestSettingManager.sol:24" }, { "label": "supportedInstitutions", "offset": 0, - "slot": "108", - "type": "t_mapping(t_bytes32,t_array(t_struct(Institution)3533_storage)dyn_storage)", + "slot": "157", + "type": "t_mapping(t_bytes32,t_array(t_struct(Institution)3526_storage)dyn_storage)", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:24" + "src": "contracts/PaycrestSettingManager.sol:26" }, { "label": "supportedInstitutionsByCode", "offset": 0, - "slot": "109", - "type": "t_mapping(t_bytes32,t_struct(InstitutionByCode)3538_storage)", + "slot": "158", + "type": "t_mapping(t_bytes32,t_struct(InstitutionByCode)3531_storage)", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:25" + "src": "contracts/PaycrestSettingManager.sol:27" }, { "label": "order", "offset": 0, - "slot": "110", - "type": "t_mapping(t_bytes32,t_struct(Order)3872_storage)", + "slot": "159", + "type": "t_mapping(t_bytes32,t_struct(Order)3841_storage)", "contract": "Paycrest", - "src": "contracts/Paycrest.sol:16" + "src": "contracts/Paycrest.sol:14" }, { "label": "_nonce", "offset": 0, - "slot": "111", + "slot": "160", "type": "t_mapping(t_address,t_uint256)", "contract": "Paycrest", - "src": "contracts/Paycrest.sol:17" + "src": "contracts/Paycrest.sol:15" }, { "label": "__gap", "offset": 0, - "slot": "112", + "slot": "161", "type": "t_array(t_uint256)50_storage", "contract": "Paycrest", - "src": "contracts/Paycrest.sol:18" + "src": "contracts/Paycrest.sol:16" } ], "types": { @@ -1223,7 +169,7 @@ "label": "address", "numberOfBytes": "20" }, - "t_array(t_struct(Institution)3533_storage)dyn_storage": { + "t_array(t_struct(Institution)3526_storage)dyn_storage": { "label": "struct PaycrestSettingManager.Institution[]", "numberOfBytes": "32" }, @@ -1243,6 +189,10 @@ "label": "bytes32", "numberOfBytes": "32" }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, "t_mapping(t_address,t_bool)": { "label": "mapping(address => bool)", "numberOfBytes": "32" @@ -1251,19 +201,19 @@ "label": "mapping(address => uint256)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_array(t_struct(Institution)3533_storage)dyn_storage)": { + "t_mapping(t_bytes32,t_array(t_struct(Institution)3526_storage)dyn_storage)": { "label": "mapping(bytes32 => struct PaycrestSettingManager.Institution[])", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(InstitutionByCode)3538_storage)": { + "t_mapping(t_bytes32,t_struct(InstitutionByCode)3531_storage)": { "label": "mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Order)3872_storage)": { + "t_mapping(t_bytes32,t_struct(Order)3841_storage)": { "label": "mapping(bytes32 => struct IPaycrest.Order)", "numberOfBytes": "32" }, - "t_struct(Institution)3533_storage": { + "t_struct(Institution)3526_storage": { "label": "struct PaycrestSettingManager.Institution", "members": [ { @@ -1281,7 +231,7 @@ ], "numberOfBytes": "64" }, - "t_struct(InstitutionByCode)3538_storage": { + "t_struct(InstitutionByCode)3531_storage": { "label": "struct PaycrestSettingManager.InstitutionByCode", "members": [ { @@ -1299,7 +249,7 @@ ], "numberOfBytes": "64" }, - "t_struct(Order)3872_storage": { + "t_struct(Order)3841_storage": { "label": "struct IPaycrest.Order", "members": [ { @@ -1359,14 +309,14 @@ ], "numberOfBytes": "224" }, - "t_uint128": { - "label": "uint128", - "numberOfBytes": "16" - }, "t_uint256": { "label": "uint256", "numberOfBytes": "32" }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, "t_uint8": { "label": "uint8", "numberOfBytes": "1" diff --git a/.openzeppelin/unknown-84531.json b/.openzeppelin/unknown-84531.json index b44e204..2612abf 100644 --- a/.openzeppelin/unknown-84531.json +++ b/.openzeppelin/unknown-84531.json @@ -1,25 +1,20 @@ { "manifestVersion": "3.2", "admin": { - "address": "0x92368Ad043cCe95b02F4F3beA9765Aa9caF3E070", - "txHash": "0xe6bee607fefad61671ca4c77d3d903d9092a132f0c493822dbac7db3f0e3171b" + "address": "0xEeeE313F91926C19Fdb9FD748762311046f87dd7", + "txHash": "0x53c2f74eb54fac908667c5559bc5acf851e3a9cbb15e42e38b39b66e34ddf5d8" }, "proxies": [ { - "address": "0x566dEA5BB1888C33bD3F1274168E0Fa91b9d51C8", - "txHash": "0xcf79399bdc6d70247a32f9dd1dc2c489fe4d8b6403d3cf3a907f1db2aed7bee3", - "kind": "transparent" - }, - { - "address": "0x5151739085Ad69b21b374A03A7c4AE6450A43B52", - "txHash": "0x1773683aa82cc21acd71b4f4e2ae261ec961b819383f78d8d64d04f09444b32a", + "address": "0xd7BD20A48430F6207d87D75E037820F63C174b96", + "txHash": "0xf0feecfba71b4f0d36f15d6eb48220dab15edc4ead1664e7b4a706eb7c9fef91", "kind": "transparent" } ], "impls": { - "8a47b1c9a4810df657ffeaa2dfddc691801b84230ce7251030e694afd0b68a3a": { - "address": "0xd39074fe0B5A571b7F09F42C736a88b01298d70D", - "txHash": "0xf3ff85c83044f1718348182548419fd5ad6335b736c04adb69b7a30785959a07", + "951609168512da20c94b0b8689859956b09d89540f2220f5cdb31f5d102ee872": { + "address": "0xf415a842677BEc3734c1c0c3F828d2Af8CeaFf13", + "txHash": "0xe66a612f80fb04256116df4cc1b7ce429b8de27326b93c99e6f4495ddc923a75", "layout": { "solcVersion": "0.8.18", "storage": [ @@ -76,105 +71,97 @@ "label": "protocolFeePercent", "offset": 0, "slot": "102", - "type": "t_uint128", + "type": "t_uint64", "contract": "PaycrestSettingManager", "src": "contracts/PaycrestSettingManager.sol:15" }, { - "label": "validatorFeePercent", - "offset": 16, + "label": "feeRecipient", + "offset": 8, "slot": "102", - "type": "t_uint128", + "type": "t_address", "contract": "PaycrestSettingManager", "src": "contracts/PaycrestSettingManager.sol:16" }, { - "label": "feeRecipient", + "label": "_aggregatorAddress", "offset": 0, "slot": "103", "type": "t_address", "contract": "PaycrestSettingManager", "src": "contracts/PaycrestSettingManager.sol:17" }, - { - "label": "_aggregatorAddress", - "offset": 0, - "slot": "104", - "type": "t_address", - "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:18" - }, { "label": "_aggregator", "offset": 0, - "slot": "105", + "slot": "104", "type": "t_bytes_storage", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:19" + "src": "contracts/PaycrestSettingManager.sol:18" }, { "label": "__gap", "offset": 0, - "slot": "106", + "slot": "105", "type": "t_array(t_uint256)50_storage", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:22" + "src": "contracts/PaycrestSettingManager.sol:21" }, { "label": "_isTokenSupported", "offset": 0, - "slot": "156", + "slot": "155", "type": "t_mapping(t_address,t_bool)", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:24" + "src": "contracts/PaycrestSettingManager.sol:23" }, { "label": "_isWhitelisted", "offset": 0, - "slot": "157", + "slot": "156", "type": "t_mapping(t_address,t_bool)", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:25" + "src": "contracts/PaycrestSettingManager.sol:24" }, { "label": "supportedInstitutions", "offset": 0, - "slot": "158", - "type": "t_mapping(t_bytes32,t_array(t_struct(Institution)3612_storage)dyn_storage)", + "slot": "157", + "type": "t_mapping(t_bytes32,t_array(t_struct(Institution)3526_storage)dyn_storage)", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:27" + "src": "contracts/PaycrestSettingManager.sol:26" }, { "label": "supportedInstitutionsByCode", "offset": 0, - "slot": "159", - "type": "t_mapping(t_bytes32,t_struct(InstitutionByCode)3617_storage)", + "slot": "158", + "type": "t_mapping(t_bytes32,t_struct(InstitutionByCode)3531_storage)", "contract": "PaycrestSettingManager", - "src": "contracts/PaycrestSettingManager.sol:28" + "src": "contracts/PaycrestSettingManager.sol:27" }, { "label": "order", "offset": 0, - "slot": "160", - "type": "t_mapping(t_bytes32,t_struct(Order)3938_storage)", + "slot": "159", + "type": "t_mapping(t_bytes32,t_struct(Order)3841_storage)", "contract": "Paycrest", - "src": "contracts/Paycrest.sol:15" + "src": "contracts/Paycrest.sol:14" }, { "label": "_nonce", "offset": 0, - "slot": "161", + "slot": "160", "type": "t_mapping(t_address,t_uint256)", "contract": "Paycrest", - "src": "contracts/Paycrest.sol:16" + "src": "contracts/Paycrest.sol:15" }, { "label": "__gap", "offset": 0, - "slot": "162", + "slot": "161", "type": "t_array(t_uint256)50_storage", "contract": "Paycrest", - "src": "contracts/Paycrest.sol:17" + "src": "contracts/Paycrest.sol:16" } ], "types": { @@ -182,7 +169,7 @@ "label": "address", "numberOfBytes": "20" }, - "t_array(t_struct(Institution)3612_storage)dyn_storage": { + "t_array(t_struct(Institution)3526_storage)dyn_storage": { "label": "struct PaycrestSettingManager.Institution[]", "numberOfBytes": "32" }, @@ -214,19 +201,19 @@ "label": "mapping(address => uint256)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_array(t_struct(Institution)3612_storage)dyn_storage)": { + "t_mapping(t_bytes32,t_array(t_struct(Institution)3526_storage)dyn_storage)": { "label": "mapping(bytes32 => struct PaycrestSettingManager.Institution[])", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(InstitutionByCode)3617_storage)": { + "t_mapping(t_bytes32,t_struct(InstitutionByCode)3531_storage)": { "label": "mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Order)3938_storage)": { + "t_mapping(t_bytes32,t_struct(Order)3841_storage)": { "label": "mapping(bytes32 => struct IPaycrest.Order)", "numberOfBytes": "32" }, - "t_struct(Institution)3612_storage": { + "t_struct(Institution)3526_storage": { "label": "struct PaycrestSettingManager.Institution", "members": [ { @@ -244,7 +231,7 @@ ], "numberOfBytes": "64" }, - "t_struct(InstitutionByCode)3617_storage": { + "t_struct(InstitutionByCode)3531_storage": { "label": "struct PaycrestSettingManager.InstitutionByCode", "members": [ { @@ -262,7 +249,7 @@ ], "numberOfBytes": "64" }, - "t_struct(Order)3938_storage": { + "t_struct(Order)3841_storage": { "label": "struct IPaycrest.Order", "members": [ { @@ -322,14 +309,14 @@ ], "numberOfBytes": "224" }, - "t_uint128": { - "label": "uint128", - "numberOfBytes": "16" - }, "t_uint256": { "label": "uint256", "numberOfBytes": "32" }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, "t_uint8": { "label": "uint8", "numberOfBytes": "1" @@ -340,146 +327,6 @@ } } } - }, - "24a5650cd12a3752212397740793a1612121247a69399118c59ab53164f2f942": { - "address": "0x58a6F98E3E2a048c07B7a250a14133D51545F53F", - "txHash": "0x16137a5c8a6c9aa881c03258fe90d15b07e4a7b7c06bb8f56e2c0c34ed4b2dfc", - "layout": { - "solcVersion": "0.8.18", - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_status", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" - }, - { - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" - }, - { - "label": "Paycrest", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "PaycrestValidator", - "src": "contracts/PaycrestValidator.sol:11" - }, - { - "label": "initialization", - "offset": 20, - "slot": "151", - "type": "t_bool", - "contract": "PaycrestValidator", - "src": "contracts/PaycrestValidator.sol:12" - }, - { - "label": "minimumAmount", - "offset": 0, - "slot": "152", - "type": "t_mapping(t_address,t_uint256)", - "contract": "PaycrestValidator", - "src": "contracts/PaycrestValidator.sol:13" - }, - { - "label": "_balance", - "offset": 0, - "slot": "153", - "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", - "contract": "PaycrestValidator", - "src": "contracts/PaycrestValidator.sol:14" - }, - { - "label": "__gap", - "offset": 0, - "slot": "154", - "type": "t_array(t_uint256)50_storage", - "contract": "PaycrestValidator", - "src": "contracts/PaycrestValidator.sol:15" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_mapping(t_address,t_uint256))": { - "label": "mapping(address => mapping(address => uint256))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_uint256)": { - "label": "mapping(address => uint256)", - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } } } } diff --git a/artifacts/build-info/5175d152885cc005596ba10118454f6e.json b/artifacts/build-info/5175d152885cc005596ba10118454f6e.json deleted file mode 100644 index cedeb0a..0000000 --- a/artifacts/build-info/5175d152885cc005596ba10118454f6e.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"5175d152885cc005596ba10118454f6e","_format":"hh-sol-build-info-1","solcVersion":"0.8.18","solcLongVersion":"0.8.18+commit.87f61d96","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n function __Ownable_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable_init_unchained() internal onlyInitializing {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20PermitUpgradeable {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20Upgradeable {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20Upgradeable.sol\";\nimport \"../extensions/IERC20PermitUpgradeable.sol\";\nimport \"../../../utils/AddressUpgradeable.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20Upgradeable {\n using AddressUpgradeable for address;\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n unchecked {\n uint256 oldAllowance = token.allowance(address(this), spender);\n require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n */\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n * Revert on invalid signature.\n */\n function safePermit(\n IERC20PermitUpgradeable token,\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal {\n uint256 nonceBefore = token.nonces(owner);\n token.permit(owner, spender, value, deadline, v, r, s);\n uint256 nonceAfter = token.nonces(owner);\n require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\n // and not revert is the subcall reverts.\n\n (bool success, bytes memory returndata) = address(token).call(data);\n return\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../StringsUpgradeable.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSAUpgradeable {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV // Deprecated in v4.8\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\")\n mstore(0x1c, hash)\n message := keccak256(0x00, 0x3c)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", StringsUpgradeable.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, \"\\x19\\x01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n data := keccak256(ptr, 0x42)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\n * `validator` and `data` according to the version 0 of EIP-191.\n *\n * See {recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x00\", validator, data));\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary MathUpgradeable {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMathUpgradeable {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/MathUpgradeable.sol\";\nimport \"./math/SignedMathUpgradeable.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary StringsUpgradeable {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = MathUpgradeable.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMathUpgradeable.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, MathUpgradeable.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"contracts/interface/IPaycrest.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n/**\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\n * Factory and global config params\n */\ninterface IPaycrest {\n \n /* ##################################################################\n EVENTS\n ################################################################## */\n /// @dev Emitted when deposit is made.\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\n /// @dev Emitted when aggregator settle transaction.\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\n /// @dev Emitted when aggregator refund transaction.\n event Refunded(bytes32 indexed orderId, bytes32 label);\n /// @dev Emitted when sender get therir rewards.\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\n /// @dev Emitted when primary validator get therir rewards.\n event RewardValidator(address indexed validator, uint256 indexed amount);\n\n /* ##################################################################\n STRUCTS\n ################################################################## */\n struct TransactionMetadata {\n bytes8 identifier; // slot 0\n bytes8 institution; // slot 0\n bytes8 name; // slot 0\n bytes8 currency; // slot 0\n uint256 liquidityProviderID; // slot 1\n }\n\n struct Order {\n address seller; // slot 0\n address token; // slot 1\n address senderFeeRecipient;\n uint256 senderFee;\n uint96 rate; // slot 1\n bool isFulfilled; // slot 2 {11 bytes available}\n address refundAddress; // slot 2 {12 bytes available}\n uint96 currentBPS; // slot 2 {}\n uint256 amount; // slot 3\n }\n\n\n /* ##################################################################\n EXTERNAL CALLS\n ################################################################## */\n /// @notice lock sender `_amount` of `token` into Paycrest.\n /// Requirements:\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\n /// `amount` must be greater than minimum\n /// `_refundable` refundable address must not be zero address\n /// @param _token address of the token.\n /// @param _amount amount in the decimal of `_token` above.\n /// @param _institutionCode institution code of the sender.\n /// @param _label reference of the sender.\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\n /// @return _orderId the bytes20 which is the orderId\n function createOrder(\n address _token, \n uint256 _amount, \n bytes32 _institutionCode,\n bytes32 _label,\n uint96 _rate, \n address _senderFeeRecipient,\n uint256 _senderFee,\n address _refundAddress, \n string calldata messageHash) external returns(bytes32 _orderId);\n\n /// @notice settle transaction and distribute rewards accordingly.\n /// Requirements:\n /// {only aggregators call}.\n /// `_orderId` it must be less than total ids.\n /// `_orderId` it must be an open Id.\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\n /// `amount` must be greater than minimum\n /// `_refundable` refundable address must not be zero address\n /// @param _orderId transaction Id.\n /// @param _label reference of the sender.\n /// @param _validators arrays of secondary validators.\n /// @param _liquidityProvider address of the liquidity provider.\n /// @param _settlePercent rate at which the transaction is settled.\n /// @param _isPartner is the liquidity provider a partner.\n /// @return return the status of transaction {bool}\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\n\n /// @notice refund to the specified refundable address.\n /// Requirements:\n /// {only aggregators call}.\n /// `_orderId` it must be less than total ids.\n /// `_orderId` it must be an open Id.\n /// `isFulfilled` must be false.\n /// @param _orderId transaction Id.\n /// @param _label reference of the sender.\n /// @return return the status of transaction {bool}\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\n\n /// @notice get supported token from Paycrest.\n /// @param _token address of the token to check.\n /// @return return the status of `_token` {bool}\n function isTokenSupported(address _token) external view returns(bool);\n\n /// @notice get order details.\n /// @param _orderId transaction Id.\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\n\n /// @notice get every rewards and address on Paycrest.\n /// @return protocolReward amount that will be taken in percentage on all trade.\n /// @return validatorFeePercent amount that will be given to primary validator in percentage from `protocolReward`\n /// @return max_bps maximum amount in bps \"100% == 100_000\".\n function getFeeDetails() external view returns(\n uint128 protocolReward, \n uint128 validatorFeePercent, \n uint256 max_bps\n );\n\n /// @notice get address of liquidity aggregator.\n /// @return address of `Aggregator`.\n function getAggregatorAddress() external view returns(address);\n\n /// @notice get aggregator public key.\n /// @return aggregator public key.\n function getAggregator() external view returns(bytes memory);\n \n /// @notice get address of sender whitelisting status.\n /// @param sender address of the sender.\n /// @return address of `status`.\n function getWhitelistedStatus(address sender) external view returns(bool);\n\n}\n"},"contracts/Paycrest.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\nimport \"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\";\nimport {PaycrestSettingManager} from \"./PaycrestSettingManager.sol\";\nimport {IPaycrest, IERC20} from \"./interface/IPaycrest.sol\";\ncontract Paycrest is IPaycrest, PaycrestSettingManager { \n using SafeERC20Upgradeable for IERC20;\n using ECDSAUpgradeable for bytes32;\n struct fee {\n uint256 protocolFee;\n uint256 liquidityProviderAmount;\n uint256 validatorsReward;\n }\n mapping(bytes32 => Order) private order;\n mapping(address => uint256) private _nonce;\n uint256[50] private __gap;\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize(address _usdc) external initializer { \n _isTokenSupported[_usdc] = true; \n MAX_BPS = 100_000; \n protocolFeePercent = 5000; // 5%\n validatorFeePercent = 500; // 0.5%\n __Ownable_init();\n }\n\n modifier onlyAggregator {\n require(msg.sender == _aggregatorAddress, \"OnlyAggregator\");\n _;\n }\n \n /* ##################################################################\n USER CALLS\n ################################################################## */\n /** @dev See {createOrder-IPaycrest}. */\n function createOrder(\n address _token, \n uint256 _amount, \n bytes32 _institutionCode,\n bytes32 _label,\n uint96 _rate, \n address _senderFeeRecipient,\n uint256 _senderFee,\n address _refundAddress, \n string calldata messageHash\n ) external returns(bytes32 orderId) {\n // checks that are required\n _handler(_token, _amount, _refundAddress, _senderFeeRecipient, _institutionCode);\n // require that sender fee is less than protocol fee\n require(_senderFee <= (_amount * protocolFeePercent) / MAX_BPS, \"SenderFeeTooHigh\");\n // first transfer token from msg.sender\n IERC20(_token).transferFrom(msg.sender, address(this), _amount);\n // increase users nonce to avoid replay attacks\n _nonce[msg.sender] ++;\n // @chibie @5ran6\n // @todo sender fee should have limit, let say the maximum amount of sender fee should be 1% of the amount\n // generate transaction id for the transaction\n orderId = keccak256(abi.encode(msg.sender, _nonce[msg.sender]));\n // update transaction\n order[orderId] = Order({\n seller: msg.sender,\n token: _token,\n senderFeeRecipient: _senderFeeRecipient,\n senderFee: _senderFee,\n rate: _rate,\n isFulfilled: false,\n refundAddress: _refundAddress,\n currentBPS: uint64(MAX_BPS),\n amount: _amount\n });\n // emit deposit event\n emit Deposit(_token, _amount, orderId, _rate, _institutionCode, _label, messageHash);\n }\n\n function _handler(address _token, uint256 _amount, address _refundAddress, address _senderFeeRecipient, bytes32 _institutionCode) internal view {\n // use require for all the custom errors\n require(_isTokenSupported[_token], \"TokenNotSupported\");\n require(_amount > 0, \"AmountIsZero\");\n require(_refundAddress != address(0), \"ThrowZeroAddress\");\n require(_senderFeeRecipient != address(0), \"ThrowZeroAddress\");\n require(supportedInstitutionsByCode[_institutionCode].name != bytes32(0), \"InvalidInstitutionCode\");\n }\n\n /* ##################################################################\n AGGREGATOR FUNCTIONS\n ################################################################## */\n /** @dev See {settle-IPaycrest}. */\n function settle(\n bytes32 _splitOrderId,\n bytes32 _orderId, \n bytes32 _label,\n address[] calldata _validators, \n address _liquidityProvider, \n uint64 _settlePercent,\n bool _isPartner\n ) external onlyAggregator() returns(bytes32, address) {\n // ensure the transaction has not been fulfilled\n require(!order[_orderId].isFulfilled, \"OrderFulfilled\");\n // load the token into memory\n address token = order[_orderId].token;\n // substract sum of amount based on the input _settlePercent\n order[_orderId].currentBPS -= _settlePercent;\n // if transaction amount is zero\n // load the fees and transfer associated protocol fees to protocol fee recipient\n ( fee memory _feeParams ) = _calculateFees(_orderId, _settlePercent, _isPartner);\n if(order[_orderId].currentBPS == 0) {\n // update the transaction to be fulfilled\n order[_orderId].isFulfilled = true;\n if (order[_orderId].senderFee > 0) {\n // transfer sender fee\n transferSenderFee(_orderId);\n }\n }\n \n if (_feeParams.protocolFee > 0) {\n // transfer protocol fee\n IERC20(token).transfer(feeRecipient, _feeParams.protocolFee);\n }\n // // transfer to liquidity provider \n IERC20(token).transfer(_liquidityProvider, _feeParams.liquidityProviderAmount);\n // // transfer to validators\n rewardValidators(_validators, token, _feeParams.validatorsReward);\n\n // emit event\n emit Settled(_splitOrderId, _orderId, _label, _liquidityProvider, _settlePercent);\n return (_orderId, token);\n }\n\n function rewardValidators(address[] calldata _validators, address token, uint256 _validatorsRewards) internal {\n uint256 length = _validators.length;\n uint256 _validatorReward = _validatorsRewards / length;\n for(uint256 i = 0; i < length; ) {\n IERC20(token).transfer(_validators[i], _validatorReward);\n // emit event\n emit RewardValidator(_validators[i], _validatorReward);\n unchecked {\n i++;\n }\n }\n }\n\n function transferSenderFee(bytes32 _orderId) internal {\n address recipient = order[_orderId].senderFeeRecipient;\n uint256 _fee = order[_orderId].senderFee;\n // transfer sender fee\n IERC20(order[_orderId].token).transfer(recipient, _fee);\n // emmit event\n emit TransferSenderFee(recipient, _fee);\n }\n\n /** @dev See {refund-IPaycrest}. */\n function refund(bytes32 _orderId, bytes32 _label) external onlyAggregator() returns(bool) {\n // ensure the transaction has not been fulfilled\n require(!order[_orderId].isFulfilled, \"OrderFulfilled\");\n // reser state values\n order[_orderId].isFulfilled = true;\n order[_orderId].currentBPS = 0;\n // transfer to seller \n IERC20(order[_orderId].token).transfer(order[_orderId].refundAddress, order[_orderId].amount);\n // emit\n emit Refunded(_orderId, _label);\n return true;\n }\n\n function _calculateFees(bytes32 _orderId, uint96 _settlePercent, bool _isPartner) private view returns(fee memory _feeParams ) {\n // get the total amount associated with the orderId\n uint256 amount = order[_orderId].amount;\n // get sender fee from amount\n amount = amount - order[_orderId].senderFee;\n // get the settled percent that is scheduled for this amount\n _feeParams.liquidityProviderAmount = (amount * _settlePercent) / MAX_BPS;\n // deduct protocol fees from the new total amount\n _feeParams.protocolFee = (_feeParams.liquidityProviderAmount * protocolFeePercent) / MAX_BPS; \n // substract total fees from the new amount after getting the scheduled amount\n _feeParams.liquidityProviderAmount = (_feeParams.liquidityProviderAmount - _feeParams.protocolFee);\n // get primary validators fees primaryValidatorsReward\n _feeParams.validatorsReward = (_feeParams.protocolFee * validatorFeePercent) / MAX_BPS;\n // if (_isPartner) protocol fee should be 0, and the whole protocol fee should be added to liquidity provider\n uint256 protocolFeeAmount = (_feeParams.protocolFee - _feeParams.validatorsReward);\n if (_isPartner) {\n _feeParams.liquidityProviderAmount += protocolFeeAmount;\n _feeParams.protocolFee = 0;\n } else {\n _feeParams.protocolFee = protocolFeeAmount;\n }\n }\n \n /* ##################################################################\n VIEW CALLS\n ################################################################## */\n /** @dev See {getOrderInfo-IPaycrest}. */\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory) {\n return order[_orderId];\n }\n\n /** @dev See {isTokenSupported-IPaycrest}. */\n function isTokenSupported(address _token) external view returns(bool) {\n return _isTokenSupported[_token];\n }\n\n /** @dev See {getSupportedInstitutionName-IPaycrest}. */\n function getSupportedInstitutionName(bytes32 code) external view returns (InstitutionByCode memory) {\n return supportedInstitutionsByCode[code];\n }\n\n function getSupportedInstitutions(bytes32 currency) external view returns (Institution[] memory) {\n Institution[] memory institutions = supportedInstitutions[currency];\n uint256 length = institutions.length;\n Institution[] memory result = new Institution[](length);\n \n for (uint256 i = 0; i < length; ) {\n result[i] = institutions[i];\n unchecked {\n i++;\n }\n }\n \n return result;\n }\n\n /** @dev See {getFeeDetails-IPaycrest}. */\n function getFeeDetails() external view returns(\n uint128, \n uint128, \n uint256\n ) {\n return(protocolFeePercent, validatorFeePercent, MAX_BPS);\n }\n\n /** @dev See {getAggregatorAddress-IPaycrest}. */\n function getAggregatorAddress() external view returns(address) {\n return _aggregatorAddress;\n }\n\n /** @dev See {getWhitelistedStatus-IPaycrest}. */\n function getWhitelistedStatus(address sender) external view returns(bool) {\n return _isWhitelisted[sender];\n }\n\n /** @dev See {getAggregator-IPaycrest}. */\n function getAggregator() external view returns(bytes memory) {\n return _aggregator;\n }\n\n\n // DECLARE A FUNCTION TO WITHDRAW ANY TOKEN FROM CONTRACT CAN ONLY NE CALLED BY OWNER\n function withdraw(address _token, address _recipient, uint256 _amount) external onlyOwner {\n IERC20(_token).transfer(_recipient, _amount);\n }\n\n}\n"},"contracts/PaycrestSettingManager.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\n\ncontract PaycrestSettingManager is OwnableUpgradeable { \n struct Institution {\n bytes32 code; // usually not more than 8 letters\n bytes32 name; // \n }\n struct InstitutionByCode {\n bytes32 name;\n bytes32 currency;\n }\n uint256 internal MAX_BPS;\n uint128 internal protocolFeePercent; // 5%\n uint128 internal validatorFeePercent; // 0.5%\n address internal feeRecipient;\n address internal _aggregatorAddress;\n bytes internal _aggregator;\n \n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\n uint256[50] private __gap;\n\n mapping(address => bool) internal _isTokenSupported;\n mapping(address => bool) internal _isWhitelisted;\n\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\n\n event SettingManagerBool(bytes32 what, address value, bool status);\n event PaycrestFees(uint128 protocolFee, uint128 validatorFeePercent);\n event SetAggregator(bytes aggregator);\n event SetFeeRecipient(address feeRecipient);\n\n \n /* ##################################################################\n OWNER FUNCTIONS\n ################################################################## */\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\n require(value != address(0), \"Paycrest: zero address\");\n if (what == \"token\") _isTokenSupported[value] = status;\n if (what == \"whitelist\") _isWhitelisted[value] = status;\n\n emit SettingManagerBool(what, value, status);\n }\n\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \n uint256 length = institutions.length;\n for (uint i = 0; i < length; ) {\n supportedInstitutions[currency].push(institutions[i]);\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\n name: institutions[i].name, currency: currency\n });\n unchecked {\n i++;\n }\n }\n }\n\n function updateProtocolFees(uint128 _protocolFeePercent, uint128 _validatorFeePercent) external onlyOwner {\n protocolFeePercent = _protocolFeePercent;\n validatorFeePercent = _validatorFeePercent;\n emit PaycrestFees(_protocolFeePercent, _validatorFeePercent);\n }\n\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\n require(value != address(0), \"Paycrest: zero address\");\n if (what == \"fee\") feeRecipient = value;\n if (what == \"aggregator\") _aggregatorAddress = value;\n }\n\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\n _aggregator = aggregator;\n emit SetAggregator(aggregator);\n }\n\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300],"OwnableUpgradeable":[131]},"id":132,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":132,"sourceUnit":1163,"src":"127:41:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":132,"sourceUnit":301,"src":"169:42:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5,"name":"Initializable","nameLocations":["748:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":300,"src":"748:13:0"},"id":6,"nodeType":"InheritanceSpecifier","src":"748:13:0"},{"baseName":{"id":7,"name":"ContextUpgradeable","nameLocations":["763:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":1162,"src":"763:18:0"},"id":8,"nodeType":"InheritanceSpecifier","src":"763:18:0"}],"canonicalName":"OwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"213:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":131,"linearizedBaseContracts":[131,1162,300],"name":"OwnableUpgradeable","nameLocation":"726:18:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10,"mutability":"mutable","name":"_owner","nameLocation":"804:6:0","nodeType":"VariableDeclaration","scope":131,"src":"788:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"788:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":16,"name":"OwnershipTransferred","nameLocation":"823:20:0","nodeType":"EventDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"860:13:0","nodeType":"VariableDeclaration","scope":16,"src":"844:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"844:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"891:8:0","nodeType":"VariableDeclaration","scope":16,"src":"875:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"843:57:0"},"src":"817:84:0"},{"body":{"id":25,"nodeType":"Block","src":"1055:43:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37,"src":"1065:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":23,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1065:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24,"nodeType":"ExpressionStatement","src":"1065:26:0"}]},"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"907:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":26,"implemented":true,"kind":"function","modifiers":[{"id":20,"kind":"modifierInvocation","modifierName":{"id":19,"name":"onlyInitializing","nameLocations":["1038:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"1038:16:0"},"nodeType":"ModifierInvocation","src":"1038:16:0"}],"name":"__Ownable_init","nameLocation":"1012:14:0","nodeType":"FunctionDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"1026:2:0"},"returnParameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"1055:0:0"},"scope":131,"src":"1003:95:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":36,"nodeType":"Block","src":"1166:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":32,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"1195:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":33,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1195:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"1176:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":34,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1176:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35,"nodeType":"ExpressionStatement","src":"1176:32:0"}]},"id":37,"implemented":true,"kind":"function","modifiers":[{"id":29,"kind":"modifierInvocation","modifierName":{"id":28,"name":"onlyInitializing","nameLocations":["1149:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"1149:16:0"},"nodeType":"ModifierInvocation","src":"1149:16:0"}],"name":"__Ownable_init_unchained","nameLocation":"1113:24:0","nodeType":"FunctionDefinition","parameters":{"id":27,"nodeType":"ParameterList","parameters":[],"src":"1137:2:0"},"returnParameters":{"id":30,"nodeType":"ParameterList","parameters":[],"src":"1166:0:0"},"scope":131,"src":"1104:111:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":44,"nodeType":"Block","src":"1324:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":40,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"1334:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1334:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42,"nodeType":"ExpressionStatement","src":"1334:13:0"},{"id":43,"nodeType":"PlaceholderStatement","src":"1357:1:0"}]},"documentation":{"id":38,"nodeType":"StructuredDocumentation","src":"1221:77:0","text":" @dev Throws if called by any account other than the owner."},"id":45,"name":"onlyOwner","nameLocation":"1312:9:0","nodeType":"ModifierDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"1321:2:0"},"src":"1303:62:0","virtual":false,"visibility":"internal"},{"body":{"id":53,"nodeType":"Block","src":"1496:30:0","statements":[{"expression":{"id":51,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"1513:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":50,"id":52,"nodeType":"Return","src":"1506:13:0"}]},"documentation":{"id":46,"nodeType":"StructuredDocumentation","src":"1371:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":54,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1450:5:0","nodeType":"FunctionDefinition","parameters":{"id":47,"nodeType":"ParameterList","parameters":[],"src":"1455:2:0"},"returnParameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54,"src":"1487:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1486:9:0"},"scope":131,"src":"1441:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":67,"nodeType":"Block","src":"1644:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":63,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1662:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":60,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1662:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":61,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"1673:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1662:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1687:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":58,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1654:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1654:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1654:68:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1532:62:0","text":" @dev Throws if the sender is not the owner."},"id":68,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1608:11:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1619:2:0"},"returnParameters":{"id":57,"nodeType":"ParameterList","parameters":[],"src":"1644:0:0"},"scope":131,"src":"1599:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":81,"nodeType":"Block","src":"2118:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":77,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2155:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2147:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"2147:7:0","typeDescriptions":{}}},"id":78,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2147:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"2128:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2128:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80,"nodeType":"ExpressionStatement","src":"2128:30:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1735:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":82,"implemented":true,"kind":"function","modifiers":[{"id":72,"kind":"modifierInvocation","modifierName":{"id":71,"name":"onlyOwner","nameLocations":["2108:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2108:9:0"},"nodeType":"ModifierInvocation","src":"2108:9:0"}],"name":"renounceOwnership","nameLocation":"2073:17:0","nodeType":"FunctionDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[],"src":"2090:2:0"},"returnParameters":{"id":73,"nodeType":"ParameterList","parameters":[],"src":"2118:0:0"},"scope":131,"src":"2064:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":104,"nodeType":"Block","src":"2384:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":96,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":91,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"2402:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2422:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":93,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2414:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"2414:7:0","typeDescriptions":{}}},"id":95,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2414:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2402:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":97,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2426:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":90,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2394:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":98,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2394:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":99,"nodeType":"ExpressionStatement","src":"2394:73:0"},{"expression":{"arguments":[{"id":101,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"2496:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":100,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"2477:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2477:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":103,"nodeType":"ExpressionStatement","src":"2477:28:0"}]},"documentation":{"id":83,"nodeType":"StructuredDocumentation","src":"2171:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":105,"implemented":true,"kind":"function","modifiers":[{"id":88,"kind":"modifierInvocation","modifierName":{"id":87,"name":"onlyOwner","nameLocations":["2374:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2374:9:0"},"nodeType":"ModifierInvocation","src":"2374:9:0"}],"name":"transferOwnership","nameLocation":"2323:17:0","nodeType":"FunctionDefinition","parameters":{"id":86,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85,"mutability":"mutable","name":"newOwner","nameLocation":"2349:8:0","nodeType":"VariableDeclaration","scope":105,"src":"2341:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2340:18:0"},"returnParameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"2384:0:0"},"scope":131,"src":"2314:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":124,"nodeType":"Block","src":"2729:124:0","statements":[{"assignments":[112],"declarations":[{"constant":false,"id":112,"mutability":"mutable","name":"oldOwner","nameLocation":"2747:8:0","nodeType":"VariableDeclaration","scope":124,"src":"2739:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":114,"initialValue":{"id":113,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"2758:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2739:25:0"},{"expression":{"id":117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":115,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"2774:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":116,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2783:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2774:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":118,"nodeType":"ExpressionStatement","src":"2774:17:0"},{"eventCall":{"arguments":[{"id":120,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112,"src":"2827:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2837:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":119,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"2806:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2806:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"EmitStatement","src":"2801:45:0"}]},"documentation":{"id":106,"nodeType":"StructuredDocumentation","src":"2518:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":125,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2675:18:0","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":108,"mutability":"mutable","name":"newOwner","nameLocation":"2702:8:0","nodeType":"VariableDeclaration","scope":125,"src":"2694:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"2694:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2693:18:0"},"returnParameters":{"id":110,"nodeType":"ParameterList","parameters":[],"src":"2729:0:0"},"scope":131,"src":"2666:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"2859:254:0","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":130,"mutability":"mutable","name":"__gap","nameLocation":"3138:5:0","nodeType":"VariableDeclaration","scope":131,"src":"3118:25:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":127,"name":"uint256","nodeType":"ElementaryTypeName","src":"3118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":129,"length":{"hexValue":"3439","id":128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3126:2:0","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"3118:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":132,"src":"708:2438:0","usedErrors":[]}],"src":"102:3045:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"Initializable":[300]},"id":301,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":133,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:1"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":134,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":301,"sourceUnit":1121,"src":"138:44:1","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":135,"nodeType":"StructuredDocumentation","src":"184:2209:1","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":300,"linearizedBaseContracts":[300],"name":"Initializable","nameLocation":"2412:13:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":136,"nodeType":"StructuredDocumentation","src":"2432:109:1","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":138,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:1","nodeType":"VariableDeclaration","scope":300,"src":"2546:26:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":137,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"2579:91:1","text":" @dev Indicates that the contract is in the process of being initialized."},"id":141,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:1","nodeType":"VariableDeclaration","scope":300,"src":"2675:26:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":140,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":142,"nodeType":"StructuredDocumentation","src":"2708:90:1","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":146,"name":"Initialized","nameLocation":"2809:11:1","nodeType":"EventDefinition","parameters":{"id":145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":144,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:1","nodeType":"VariableDeclaration","scope":146,"src":"2821:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":143,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:1"},"src":"2803:33:1"},{"body":{"id":201,"nodeType":"Block","src":"3269:483:1","statements":[{"assignments":[150],"declarations":[{"constant":false,"id":150,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:1","nodeType":"VariableDeclaration","scope":201,"src":"3279:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":149,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":153,"initialValue":{"id":152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:1","subExpression":{"id":151,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3302:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":155,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3347:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":156,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3365:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:1","subExpression":{"arguments":[{"arguments":[{"id":165,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3426:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$300","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$300","typeString":"contract Initializable"}],"id":164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:1","typeDescriptions":{}}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":161,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"3388:18:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1120_$","typeString":"type(library AddressUpgradeable)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:1","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":808,"src":"3388:29:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":169,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3436:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":173,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":154,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3325:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":177,"nodeType":"ExpressionStatement","src":"3325:201:1"},{"expression":{"id":180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":178,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3536:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":181,"nodeType":"ExpressionStatement","src":"3536:16:1"},{"condition":{"id":182,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3566:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":188,"nodeType":"IfStatement","src":"3562:65:1","trueBody":{"id":187,"nodeType":"Block","src":"3582:45:1","statements":[{"expression":{"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":183,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3596:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":186,"nodeType":"ExpressionStatement","src":"3596:20:1"}]}},{"id":189,"nodeType":"PlaceholderStatement","src":"3636:1:1"},{"condition":{"id":190,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3651:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":200,"nodeType":"IfStatement","src":"3647:99:1","trueBody":{"id":199,"nodeType":"Block","src":"3667:79:1","statements":[{"expression":{"id":193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":191,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3681:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":194,"nodeType":"ExpressionStatement","src":"3681:21:1"},{"eventCall":{"arguments":[{"hexValue":"31","id":196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":195,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"3721:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":198,"nodeType":"EmitStatement","src":"3716:19:1"}]}}]},"documentation":{"id":147,"nodeType":"StructuredDocumentation","src":"2842:399:1","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":202,"name":"initializer","nameLocation":"3255:11:1","nodeType":"ModifierDefinition","parameters":{"id":148,"nodeType":"ParameterList","parameters":[],"src":"3266:2:1"},"src":"3246:506:1","virtual":false,"visibility":"internal"},{"body":{"id":234,"nodeType":"Block","src":"4863:255:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:1","subExpression":{"id":208,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"4882:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":210,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4899:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":211,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"4914:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":207,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4873:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":216,"nodeType":"ExpressionStatement","src":"4873:99:1"},{"expression":{"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":217,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4982:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":218,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"4997:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":220,"nodeType":"ExpressionStatement","src":"4982:22:1"},{"expression":{"id":223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":221,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5014:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":224,"nodeType":"ExpressionStatement","src":"5014:20:1"},{"id":225,"nodeType":"PlaceholderStatement","src":"5044:1:1"},{"expression":{"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":226,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5055:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":229,"nodeType":"ExpressionStatement","src":"5055:21:1"},{"eventCall":{"arguments":[{"id":231,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"5103:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":230,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"5091:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":233,"nodeType":"EmitStatement","src":"5086:25:1"}]},"documentation":{"id":203,"nodeType":"StructuredDocumentation","src":"3758:1062:1","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":235,"name":"reinitializer","nameLocation":"4834:13:1","nodeType":"ModifierDefinition","parameters":{"id":206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":205,"mutability":"mutable","name":"version","nameLocation":"4854:7:1","nodeType":"VariableDeclaration","scope":235,"src":"4848:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":204,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:1"},"src":"4825:293:1","virtual":false,"visibility":"internal"},{"body":{"id":244,"nodeType":"Block","src":"5356:97:1","statements":[{"expression":{"arguments":[{"id":239,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5374:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":238,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5366:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":242,"nodeType":"ExpressionStatement","src":"5366:69:1"},{"id":243,"nodeType":"PlaceholderStatement","src":"5445:1:1"}]},"documentation":{"id":236,"nodeType":"StructuredDocumentation","src":"5124:199:1","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":245,"name":"onlyInitializing","nameLocation":"5337:16:1","nodeType":"ModifierDefinition","parameters":{"id":237,"nodeType":"ParameterList","parameters":[],"src":"5353:2:1"},"src":"5328:125:1","virtual":false,"visibility":"internal"},{"body":{"id":280,"nodeType":"Block","src":"5988:231:1","statements":[{"expression":{"arguments":[{"id":251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:1","subExpression":{"id":250,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6007:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":249,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5998:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":254,"nodeType":"ExpressionStatement","src":"5998:66:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":255,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6078:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":257,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":256,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6094:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:1","memberName":"max","nodeType":"MemberAccess","src":"6094:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":279,"nodeType":"IfStatement","src":"6074:139:1","trueBody":{"id":278,"nodeType":"Block","src":"6111:102:1","statements":[{"expression":{"id":268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":262,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6125:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":264,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":263,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6140:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:1","memberName":"max","nodeType":"MemberAccess","src":"6140:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":269,"nodeType":"ExpressionStatement","src":"6125:30:1"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":272,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":271,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6186:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:1","memberName":"max","nodeType":"MemberAccess","src":"6186:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":270,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"6174:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":277,"nodeType":"EmitStatement","src":"6169:33:1"}]}}]},"documentation":{"id":246,"nodeType":"StructuredDocumentation","src":"5459:475:1","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":281,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:1","nodeType":"FunctionDefinition","parameters":{"id":247,"nodeType":"ParameterList","parameters":[],"src":"5968:2:1"},"returnParameters":{"id":248,"nodeType":"ParameterList","parameters":[],"src":"5988:0:1"},"scope":300,"src":"5939:280:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":289,"nodeType":"Block","src":"6393:36:1","statements":[{"expression":{"id":287,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6410:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":286,"id":288,"nodeType":"Return","src":"6403:19:1"}]},"documentation":{"id":282,"nodeType":"StructuredDocumentation","src":"6225:99:1","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":290,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:1","nodeType":"FunctionDefinition","parameters":{"id":283,"nodeType":"ParameterList","parameters":[],"src":"6360:2:1"},"returnParameters":{"id":286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":290,"src":"6386:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":284,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:1"},"scope":300,"src":"6329:100:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":298,"nodeType":"Block","src":"6601:37:1","statements":[{"expression":{"id":296,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6618:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":295,"id":297,"nodeType":"Return","src":"6611:20:1"}]},"documentation":{"id":291,"nodeType":"StructuredDocumentation","src":"6435:105:1","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":299,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:1","nodeType":"FunctionDefinition","parameters":{"id":292,"nodeType":"ParameterList","parameters":[],"src":"6569:2:1"},"returnParameters":{"id":295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":299,"src":"6595:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":293,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:1"},"scope":300,"src":"6545:93:1","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":301,"src":"2394:4246:1","usedErrors":[]}],"src":"113:6528:1"},"id":1},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","exportedSymbols":{"IERC20Upgradeable":[378]},"id":379,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":302,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"131:70:2","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":378,"linearizedBaseContracts":[378],"name":"IERC20Upgradeable","nameLocation":"212:17:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":304,"nodeType":"StructuredDocumentation","src":"236:158:2","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":312,"name":"Transfer","nameLocation":"405:8:2","nodeType":"EventDefinition","parameters":{"id":311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":306,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"430:4:2","nodeType":"VariableDeclaration","scope":312,"src":"414:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":305,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":308,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"452:2:2","nodeType":"VariableDeclaration","scope":312,"src":"436:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":307,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":310,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"464:5:2","nodeType":"VariableDeclaration","scope":312,"src":"456:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"413:57:2"},"src":"399:72:2"},{"anonymous":false,"documentation":{"id":313,"nodeType":"StructuredDocumentation","src":"477:148:2","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":321,"name":"Approval","nameLocation":"636:8:2","nodeType":"EventDefinition","parameters":{"id":320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":315,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"661:5:2","nodeType":"VariableDeclaration","scope":321,"src":"645:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":317,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"684:7:2","nodeType":"VariableDeclaration","scope":321,"src":"668:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"668:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":319,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"701:5:2","nodeType":"VariableDeclaration","scope":321,"src":"693:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":318,"name":"uint256","nodeType":"ElementaryTypeName","src":"693:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"644:63:2"},"src":"630:78:2"},{"documentation":{"id":322,"nodeType":"StructuredDocumentation","src":"714:66:2","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":327,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"794:11:2","nodeType":"FunctionDefinition","parameters":{"id":323,"nodeType":"ParameterList","parameters":[],"src":"805:2:2"},"returnParameters":{"id":326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":327,"src":"831:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":324,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"830:9:2"},"scope":378,"src":"785:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"846:72:2","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":335,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"932:9:2","nodeType":"FunctionDefinition","parameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"account","nameLocation":"950:7:2","nodeType":"VariableDeclaration","scope":335,"src":"942:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":329,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"941:17:2"},"returnParameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":335,"src":"982:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":332,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"981:9:2"},"scope":378,"src":"923:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":336,"nodeType":"StructuredDocumentation","src":"997:202:2","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":345,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:2","nodeType":"FunctionDefinition","parameters":{"id":341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"to","nameLocation":"1230:2:2","nodeType":"VariableDeclaration","scope":345,"src":"1222:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":337,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":340,"mutability":"mutable","name":"amount","nameLocation":"1242:6:2","nodeType":"VariableDeclaration","scope":345,"src":"1234:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":339,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:28:2"},"returnParameters":{"id":344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":345,"src":"1268:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":342,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:2"},"scope":378,"src":"1204:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"1280:264:2","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":355,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:2","nodeType":"FunctionDefinition","parameters":{"id":351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"owner","nameLocation":"1576:5:2","nodeType":"VariableDeclaration","scope":355,"src":"1568:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":347,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":350,"mutability":"mutable","name":"spender","nameLocation":"1591:7:2","nodeType":"VariableDeclaration","scope":355,"src":"1583:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":349,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:2"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":355,"src":"1623:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":352,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:2"},"scope":378,"src":"1549:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"1638:642:2","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":365,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2294:7:2","nodeType":"FunctionDefinition","parameters":{"id":361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"spender","nameLocation":"2310:7:2","nodeType":"VariableDeclaration","scope":365,"src":"2302:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":360,"mutability":"mutable","name":"amount","nameLocation":"2327:6:2","nodeType":"VariableDeclaration","scope":365,"src":"2319:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"2319:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:33:2"},"returnParameters":{"id":364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":365,"src":"2353:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":362,"name":"bool","nodeType":"ElementaryTypeName","src":"2353:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2352:6:2"},"scope":378,"src":"2285:74:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":366,"nodeType":"StructuredDocumentation","src":"2365:287:2","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":377,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2666:12:2","nodeType":"FunctionDefinition","parameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":368,"mutability":"mutable","name":"from","nameLocation":"2687:4:2","nodeType":"VariableDeclaration","scope":377,"src":"2679:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":367,"name":"address","nodeType":"ElementaryTypeName","src":"2679:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":370,"mutability":"mutable","name":"to","nameLocation":"2701:2:2","nodeType":"VariableDeclaration","scope":377,"src":"2693:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":369,"name":"address","nodeType":"ElementaryTypeName","src":"2693:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"amount","nameLocation":"2713:6:2","nodeType":"VariableDeclaration","scope":377,"src":"2705:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":371,"name":"uint256","nodeType":"ElementaryTypeName","src":"2705:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2678:42:2"},"returnParameters":{"id":376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":377,"src":"2739:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":374,"name":"bool","nodeType":"ElementaryTypeName","src":"2739:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2738:6:2"},"scope":378,"src":"2657:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":379,"src":"202:2545:2","usedErrors":[]}],"src":"106:2642:2"},"id":2},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","exportedSymbols":{"IERC20PermitUpgradeable":[414]},"id":415,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":380,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"123:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20PermitUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"148:480:3","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":414,"linearizedBaseContracts":[414],"name":"IERC20PermitUpgradeable","nameLocation":"639:23:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"669:792:3","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":399,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1475:6:3","nodeType":"FunctionDefinition","parameters":{"id":397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"owner","nameLocation":"1499:5:3","nodeType":"VariableDeclaration","scope":399,"src":"1491:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":383,"name":"address","nodeType":"ElementaryTypeName","src":"1491:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":386,"mutability":"mutable","name":"spender","nameLocation":"1522:7:3","nodeType":"VariableDeclaration","scope":399,"src":"1514:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"1514:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":388,"mutability":"mutable","name":"value","nameLocation":"1547:5:3","nodeType":"VariableDeclaration","scope":399,"src":"1539:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":387,"name":"uint256","nodeType":"ElementaryTypeName","src":"1539:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"deadline","nameLocation":"1570:8:3","nodeType":"VariableDeclaration","scope":399,"src":"1562:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"1562:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":392,"mutability":"mutable","name":"v","nameLocation":"1594:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1588:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":391,"name":"uint8","nodeType":"ElementaryTypeName","src":"1588:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":394,"mutability":"mutable","name":"r","nameLocation":"1613:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1605:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1605:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":396,"mutability":"mutable","name":"s","nameLocation":"1632:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1624:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1624:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1481:158:3"},"returnParameters":{"id":398,"nodeType":"ParameterList","parameters":[],"src":"1648:0:3"},"scope":414,"src":"1466:183:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":400,"nodeType":"StructuredDocumentation","src":"1655:294:3","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":407,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"1963:6:3","nodeType":"FunctionDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":402,"mutability":"mutable","name":"owner","nameLocation":"1978:5:3","nodeType":"VariableDeclaration","scope":407,"src":"1970:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":401,"name":"address","nodeType":"ElementaryTypeName","src":"1970:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1969:15:3"},"returnParameters":{"id":406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":407,"src":"2008:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":404,"name":"uint256","nodeType":"ElementaryTypeName","src":"2008:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2007:9:3"},"scope":414,"src":"1954:63:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":408,"nodeType":"StructuredDocumentation","src":"2023:128:3","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":413,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"2218:16:3","nodeType":"FunctionDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[],"src":"2234:2:3"},"returnParameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":413,"src":"2260:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":410,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2260:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2259:9:3"},"scope":414,"src":"2209:60:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":415,"src":"629:1642:3","usedErrors":[]}],"src":"123:2149:3"},"id":3},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"IERC20PermitUpgradeable":[414],"IERC20Upgradeable":[378],"SafeERC20Upgradeable":[790]},"id":791,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":416,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","file":"../IERC20Upgradeable.sol","id":417,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":379,"src":"140:34:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","file":"../extensions/IERC20PermitUpgradeable.sol","id":418,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":415,"src":"175:51:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../../utils/AddressUpgradeable.sol","id":419,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":1121,"src":"227:47:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20Upgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":420,"nodeType":"StructuredDocumentation","src":"276:457:4","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":790,"linearizedBaseContracts":[790],"name":"SafeERC20Upgradeable","nameLocation":"742:20:4","nodeType":"ContractDefinition","nodes":[{"global":false,"id":423,"libraryName":{"id":421,"name":"AddressUpgradeable","nameLocations":["775:18:4"],"nodeType":"IdentifierPath","referencedDeclaration":1120,"src":"775:18:4"},"nodeType":"UsingForDirective","src":"769:37:4","typeName":{"id":422,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":446,"nodeType":"Block","src":"1079:103:4","statements":[{"expression":{"arguments":[{"id":435,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"1109:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":438,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"1139:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1145:8:4","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":345,"src":"1139:14:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1154:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1139:23:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":441,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"1164:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"1168:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":436,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1116:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1120:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1116:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":434,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"1089:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1089:86:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":445,"nodeType":"ExpressionStatement","src":"1089:86:4"}]},"documentation":{"id":424,"nodeType":"StructuredDocumentation","src":"812:179:4","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":447,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1005:12:4","nodeType":"FunctionDefinition","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":427,"mutability":"mutable","name":"token","nameLocation":"1036:5:4","nodeType":"VariableDeclaration","scope":447,"src":"1018:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":426,"nodeType":"UserDefinedTypeName","pathNode":{"id":425,"name":"IERC20Upgradeable","nameLocations":["1018:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1018:17:4"},"referencedDeclaration":378,"src":"1018:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":429,"mutability":"mutable","name":"to","nameLocation":"1051:2:4","nodeType":"VariableDeclaration","scope":447,"src":"1043:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":428,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"value","nameLocation":"1063:5:4","nodeType":"VariableDeclaration","scope":447,"src":"1055:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"1055:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1017:52:4"},"returnParameters":{"id":433,"nodeType":"ParameterList","parameters":[],"src":"1079:0:4"},"scope":790,"src":"996:186:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":473,"nodeType":"Block","src":"1522:113:4","statements":[{"expression":{"arguments":[{"id":461,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"1552:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":464,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"1582:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1588:12:4","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":377,"src":"1582:18:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1601:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1582:27:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":467,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"1611:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":468,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":455,"src":"1617:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":457,"src":"1621:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":462,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1559:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1563:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1559:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1559:68:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":460,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"1532:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1532:96:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":472,"nodeType":"ExpressionStatement","src":"1532:96:4"}]},"documentation":{"id":448,"nodeType":"StructuredDocumentation","src":"1188:228:4","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":474,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1430:16:4","nodeType":"FunctionDefinition","parameters":{"id":458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":451,"mutability":"mutable","name":"token","nameLocation":"1465:5:4","nodeType":"VariableDeclaration","scope":474,"src":"1447:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":450,"nodeType":"UserDefinedTypeName","pathNode":{"id":449,"name":"IERC20Upgradeable","nameLocations":["1447:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1447:17:4"},"referencedDeclaration":378,"src":"1447:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":453,"mutability":"mutable","name":"from","nameLocation":"1480:4:4","nodeType":"VariableDeclaration","scope":474,"src":"1472:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":452,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":455,"mutability":"mutable","name":"to","nameLocation":"1494:2:4","nodeType":"VariableDeclaration","scope":474,"src":"1486:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":454,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":457,"mutability":"mutable","name":"value","nameLocation":"1506:5:4","nodeType":"VariableDeclaration","scope":474,"src":"1498:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1446:66:4"},"returnParameters":{"id":459,"nodeType":"ParameterList","parameters":[],"src":"1522:0:4"},"scope":790,"src":"1421:214:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":517,"nodeType":"Block","src":"1982:497:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"2231:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2240:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2231:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2230:12:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":494,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2271:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2263:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:4","typeDescriptions":{}}},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":496,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2278:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":490,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2247:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2253:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"2247:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2247:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2290:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2247:44:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2246:46:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2230:62:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2306:56:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":485,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2209:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:163:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":504,"nodeType":"ExpressionStatement","src":"2209:163:4"},{"expression":{"arguments":[{"id":506,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2402:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":509,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2432:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2438:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"2432:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2446:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2432:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":512,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2456:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"2465:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":507,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2409:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2413:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2409:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:62:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":505,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"2382:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2382:90:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":516,"nodeType":"ExpressionStatement","src":"2382:90:4"}]},"documentation":{"id":475,"nodeType":"StructuredDocumentation","src":"1641:249:4","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":518,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1904:11:4","nodeType":"FunctionDefinition","parameters":{"id":483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"token","nameLocation":"1934:5:4","nodeType":"VariableDeclaration","scope":518,"src":"1916:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":477,"nodeType":"UserDefinedTypeName","pathNode":{"id":476,"name":"IERC20Upgradeable","nameLocations":["1916:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1916:17:4"},"referencedDeclaration":378,"src":"1916:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"spender","nameLocation":"1949:7:4","nodeType":"VariableDeclaration","scope":518,"src":"1941:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":479,"name":"address","nodeType":"ElementaryTypeName","src":"1941:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"value","nameLocation":"1966:5:4","nodeType":"VariableDeclaration","scope":518,"src":"1958:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"1958:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1915:57:4"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"1982:0:4"},"scope":790,"src":"1895:584:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":554,"nodeType":"Block","src":"2767:194:4","statements":[{"assignments":[530],"declarations":[{"constant":false,"id":530,"mutability":"mutable","name":"oldAllowance","nameLocation":"2785:12:4","nodeType":"VariableDeclaration","scope":554,"src":"2777:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":529,"name":"uint256","nodeType":"ElementaryTypeName","src":"2777:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":539,"initialValue":{"arguments":[{"arguments":[{"id":535,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2824:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2816:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"2816:7:4","typeDescriptions":{}}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2816:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":537,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2831:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":531,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2800:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2806:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"2800:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2800:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2777:62:4"},{"expression":{"arguments":[{"id":541,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2869:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":544,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2899:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2905:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"2899:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2913:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2899:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":547,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2923:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":548,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"2932:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"2947:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":542,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2876:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2880:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2876:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2876:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":540,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"2849:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2849:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":553,"nodeType":"ExpressionStatement","src":"2849:105:4"}]},"documentation":{"id":519,"nodeType":"StructuredDocumentation","src":"2485:180:4","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":555,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2679:21:4","nodeType":"FunctionDefinition","parameters":{"id":527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"token","nameLocation":"2719:5:4","nodeType":"VariableDeclaration","scope":555,"src":"2701:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":521,"nodeType":"UserDefinedTypeName","pathNode":{"id":520,"name":"IERC20Upgradeable","nameLocations":["2701:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"2701:17:4"},"referencedDeclaration":378,"src":"2701:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":524,"mutability":"mutable","name":"spender","nameLocation":"2734:7:4","nodeType":"VariableDeclaration","scope":555,"src":"2726:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":523,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":526,"mutability":"mutable","name":"value","nameLocation":"2751:5:4","nodeType":"VariableDeclaration","scope":555,"src":"2743:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":525,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2700:57:4"},"returnParameters":{"id":528,"nodeType":"ParameterList","parameters":[],"src":"2767:0:4"},"scope":790,"src":"2670:291:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":599,"nodeType":"Block","src":"3249:321:4","statements":[{"id":598,"nodeType":"UncheckedBlock","src":"3259:305:4","statements":[{"assignments":[567],"declarations":[{"constant":false,"id":567,"mutability":"mutable","name":"oldAllowance","nameLocation":"3291:12:4","nodeType":"VariableDeclaration","scope":598,"src":"3283:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":566,"name":"uint256","nodeType":"ElementaryTypeName","src":"3283:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":576,"initialValue":{"arguments":[{"arguments":[{"id":572,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3330:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3322:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"3322:7:4","typeDescriptions":{}}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3322:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":574,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"3337:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":568,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3306:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3312:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"3306:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3306:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3283:62:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":578,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"3367:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"3383:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3367:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3390:43:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":577,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3359:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":583,"nodeType":"ExpressionStatement","src":"3359:75:4"},{"expression":{"arguments":[{"id":585,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3468:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":588,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3498:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3504:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"3498:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3512:8:4","memberName":"selector","nodeType":"MemberAccess","src":"3498:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":591,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"3522:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":592,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"3531:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":593,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"3546:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3531:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":586,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3475:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3479:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3475:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3475:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":584,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"3448:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3448:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":597,"nodeType":"ExpressionStatement","src":"3448:105:4"}]}]},"documentation":{"id":556,"nodeType":"StructuredDocumentation","src":"2967:180:4","text":" @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":600,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"3161:21:4","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":559,"mutability":"mutable","name":"token","nameLocation":"3201:5:4","nodeType":"VariableDeclaration","scope":600,"src":"3183:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":558,"nodeType":"UserDefinedTypeName","pathNode":{"id":557,"name":"IERC20Upgradeable","nameLocations":["3183:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3183:17:4"},"referencedDeclaration":378,"src":"3183:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":561,"mutability":"mutable","name":"spender","nameLocation":"3216:7:4","nodeType":"VariableDeclaration","scope":600,"src":"3208:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":560,"name":"address","nodeType":"ElementaryTypeName","src":"3208:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":563,"mutability":"mutable","name":"value","nameLocation":"3233:5:4","nodeType":"VariableDeclaration","scope":600,"src":"3225:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":562,"name":"uint256","nodeType":"ElementaryTypeName","src":"3225:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3182:57:4"},"returnParameters":{"id":565,"nodeType":"ParameterList","parameters":[],"src":"3249:0:4"},"scope":790,"src":"3152:418:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":646,"nodeType":"Block","src":"3977:333:4","statements":[{"assignments":[612],"declarations":[{"constant":false,"id":612,"mutability":"mutable","name":"approvalCall","nameLocation":"4000:12:4","nodeType":"VariableDeclaration","scope":646,"src":"3987:25:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":611,"name":"bytes","nodeType":"ElementaryTypeName","src":"3987:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":621,"initialValue":{"arguments":[{"expression":{"expression":{"id":615,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4038:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4044:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"4038:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4052:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4038:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":618,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"4062:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"4071:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":613,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4015:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4019:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4015:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4015:62:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3987:90:4"},{"condition":{"id":626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4092:45:4","subExpression":{"arguments":[{"id":623,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4117:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"id":624,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"4124:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":622,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"4093:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20Upgradeable,bytes memory) returns (bool)"}},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4093:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":645,"nodeType":"IfStatement","src":"4088:216:4","trueBody":{"id":644,"nodeType":"Block","src":"4139:165:4","statements":[{"expression":{"arguments":[{"id":628,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4173:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":631,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4203:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4209:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"4203:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4217:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4203:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":634,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"4227:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":629,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4180:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4184:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4180:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4180:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":627,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"4153:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4153:86:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":638,"nodeType":"ExpressionStatement","src":"4153:86:4"},{"expression":{"arguments":[{"id":640,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4273:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"id":641,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"4280:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":639,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"4253:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4253:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":643,"nodeType":"ExpressionStatement","src":"4253:40:4"}]}}]},"documentation":{"id":601,"nodeType":"StructuredDocumentation","src":"3576:308:4","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT."},"id":647,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"3898:12:4","nodeType":"FunctionDefinition","parameters":{"id":609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"token","nameLocation":"3929:5:4","nodeType":"VariableDeclaration","scope":647,"src":"3911:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":603,"nodeType":"UserDefinedTypeName","pathNode":{"id":602,"name":"IERC20Upgradeable","nameLocations":["3911:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3911:17:4"},"referencedDeclaration":378,"src":"3911:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":606,"mutability":"mutable","name":"spender","nameLocation":"3944:7:4","nodeType":"VariableDeclaration","scope":647,"src":"3936:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":605,"name":"address","nodeType":"ElementaryTypeName","src":"3936:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":608,"mutability":"mutable","name":"value","nameLocation":"3961:5:4","nodeType":"VariableDeclaration","scope":647,"src":"3953:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":607,"name":"uint256","nodeType":"ElementaryTypeName","src":"3953:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3910:57:4"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[],"src":"3977:0:4"},"scope":790,"src":"3889:421:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":703,"nodeType":"Block","src":"4688:257:4","statements":[{"assignments":[669],"declarations":[{"constant":false,"id":669,"mutability":"mutable","name":"nonceBefore","nameLocation":"4706:11:4","nodeType":"VariableDeclaration","scope":703,"src":"4698:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":668,"name":"uint256","nodeType":"ElementaryTypeName","src":"4698:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":674,"initialValue":{"arguments":[{"id":672,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4733:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":670,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4720:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4726:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":407,"src":"4720:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4720:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4698:41:4"},{"expression":{"arguments":[{"id":678,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4762:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":679,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"4769:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"4778:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":681,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":659,"src":"4785:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":682,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":661,"src":"4795:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":683,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"4798:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":684,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"4801:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":675,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4749:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4755:6:4","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":399,"src":"4749:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:54:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":686,"nodeType":"ExpressionStatement","src":"4749:54:4"},{"assignments":[688],"declarations":[{"constant":false,"id":688,"mutability":"mutable","name":"nonceAfter","nameLocation":"4821:10:4","nodeType":"VariableDeclaration","scope":703,"src":"4813:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"4813:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":693,"initialValue":{"arguments":[{"id":691,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4847:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":689,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4834:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4840:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":407,"src":"4834:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4813:40:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":695,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"4871:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":696,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4885:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4899:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4885:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4871:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4902:35:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":694,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4863:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4863:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":702,"nodeType":"ExpressionStatement","src":"4863:75:4"}]},"documentation":{"id":648,"nodeType":"StructuredDocumentation","src":"4316:141:4","text":" @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n Revert on invalid signature."},"id":704,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"4471:10:4","nodeType":"FunctionDefinition","parameters":{"id":666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"token","nameLocation":"4515:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4491:29:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"},"typeName":{"id":650,"nodeType":"UserDefinedTypeName","pathNode":{"id":649,"name":"IERC20PermitUpgradeable","nameLocations":["4491:23:4"],"nodeType":"IdentifierPath","referencedDeclaration":414,"src":"4491:23:4"},"referencedDeclaration":414,"src":"4491:23:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"visibility":"internal"},{"constant":false,"id":653,"mutability":"mutable","name":"owner","nameLocation":"4538:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4530:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":652,"name":"address","nodeType":"ElementaryTypeName","src":"4530:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":655,"mutability":"mutable","name":"spender","nameLocation":"4561:7:4","nodeType":"VariableDeclaration","scope":704,"src":"4553:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":654,"name":"address","nodeType":"ElementaryTypeName","src":"4553:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":657,"mutability":"mutable","name":"value","nameLocation":"4586:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4578:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":656,"name":"uint256","nodeType":"ElementaryTypeName","src":"4578:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":659,"mutability":"mutable","name":"deadline","nameLocation":"4609:8:4","nodeType":"VariableDeclaration","scope":704,"src":"4601:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":658,"name":"uint256","nodeType":"ElementaryTypeName","src":"4601:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":661,"mutability":"mutable","name":"v","nameLocation":"4633:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4627:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":660,"name":"uint8","nodeType":"ElementaryTypeName","src":"4627:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":663,"mutability":"mutable","name":"r","nameLocation":"4652:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4644:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4644:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":665,"mutability":"mutable","name":"s","nameLocation":"4671:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4663:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4663:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4481:197:4"},"returnParameters":{"id":667,"nodeType":"ParameterList","parameters":[],"src":"4688:0:4"},"scope":790,"src":"4462:483:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":740,"nodeType":"Block","src":"5409:572:4","statements":[{"assignments":[714],"declarations":[{"constant":false,"id":714,"mutability":"mutable","name":"returndata","nameLocation":"5771:10:4","nodeType":"VariableDeclaration","scope":740,"src":"5758:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":713,"name":"bytes","nodeType":"ElementaryTypeName","src":"5758:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":723,"initialValue":{"arguments":[{"id":720,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":710,"src":"5812:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5818:34:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":717,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"5792:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5784:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":715,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:4","typeDescriptions":{}}},"id":718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5799:12:4","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":880,"src":"5784:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5758:95:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":725,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"5871:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5882:6:4","memberName":"length","nodeType":"MemberAccess","src":"5871:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5892:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5871:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":731,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"5908:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5921:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":732,"name":"bool","nodeType":"ElementaryTypeName","src":"5921:4:4","typeDescriptions":{}}}],"id":734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5920:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":729,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5897:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5901:6:4","memberName":"decode","nodeType":"MemberAccess","src":"5897:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5897:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5871:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5929:44:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5863:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5863:111:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":739,"nodeType":"ExpressionStatement","src":"5863:111:4"}]},"documentation":{"id":705,"nodeType":"StructuredDocumentation","src":"4951:372:4","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":741,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"5337:19:4","nodeType":"FunctionDefinition","parameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":708,"mutability":"mutable","name":"token","nameLocation":"5375:5:4","nodeType":"VariableDeclaration","scope":741,"src":"5357:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":707,"nodeType":"UserDefinedTypeName","pathNode":{"id":706,"name":"IERC20Upgradeable","nameLocations":["5357:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"5357:17:4"},"referencedDeclaration":378,"src":"5357:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":710,"mutability":"mutable","name":"data","nameLocation":"5395:4:4","nodeType":"VariableDeclaration","scope":741,"src":"5382:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":709,"name":"bytes","nodeType":"ElementaryTypeName","src":"5382:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5356:44:4"},"returnParameters":{"id":712,"nodeType":"ParameterList","parameters":[],"src":"5409:0:4"},"scope":790,"src":"5328:653:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":788,"nodeType":"Block","src":"6582:516:4","statements":[{"assignments":[753,755],"declarations":[{"constant":false,"id":753,"mutability":"mutable","name":"success","nameLocation":"6883:7:4","nodeType":"VariableDeclaration","scope":788,"src":"6878:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":752,"name":"bool","nodeType":"ElementaryTypeName","src":"6878:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":755,"mutability":"mutable","name":"returndata","nameLocation":"6905:10:4","nodeType":"VariableDeclaration","scope":788,"src":"6892:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":754,"name":"bytes","nodeType":"ElementaryTypeName","src":"6892:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":763,"initialValue":{"arguments":[{"id":761,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"6939:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":758,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"6927:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6919:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":756,"name":"address","nodeType":"ElementaryTypeName","src":"6919:7:4","typeDescriptions":{}}},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6934:4:4","memberName":"call","nodeType":"MemberAccess","src":"6919:19:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6877:67:4"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"6973:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":765,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6985:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6996:6:4","memberName":"length","nodeType":"MemberAccess","src":"6985:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7006:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6985:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":771,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"7022:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7035:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":772,"name":"bool","nodeType":"ElementaryTypeName","src":"7035:4:4","typeDescriptions":{}}}],"id":774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7034:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":769,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7011:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7015:6:4","memberName":"decode","nodeType":"MemberAccess","src":"7011:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7011:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6985:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":777,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6984:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:69:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"arguments":[{"id":783,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"7084:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7076:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":781,"name":"address","nodeType":"ElementaryTypeName","src":"7076:7:4","typeDescriptions":{}}},"id":784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7076:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":779,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"7046:18:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1120_$","typeString":"type(library AddressUpgradeable)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7065:10:4","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":808,"src":"7046:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7046:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:118:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":751,"id":787,"nodeType":"Return","src":"6954:137:4"}]},"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"5987:490:4","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead."},"id":789,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"6491:23:4","nodeType":"FunctionDefinition","parameters":{"id":748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":745,"mutability":"mutable","name":"token","nameLocation":"6533:5:4","nodeType":"VariableDeclaration","scope":789,"src":"6515:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":744,"nodeType":"UserDefinedTypeName","pathNode":{"id":743,"name":"IERC20Upgradeable","nameLocations":["6515:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"6515:17:4"},"referencedDeclaration":378,"src":"6515:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":747,"mutability":"mutable","name":"data","nameLocation":"6553:4:4","nodeType":"VariableDeclaration","scope":789,"src":"6540:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":746,"name":"bytes","nodeType":"ElementaryTypeName","src":"6540:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6514:44:4"},"returnParameters":{"id":751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":789,"src":"6576:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":749,"name":"bool","nodeType":"ElementaryTypeName","src":"6576:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6575:6:4"},"scope":790,"src":"6482:616:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":791,"src":"734:6366:4","usedErrors":[]}],"src":"115:6986:4"},"id":4},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120]},"id":1121,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":792,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":793,"nodeType":"StructuredDocumentation","src":"126:67:5","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1120,"linearizedBaseContracts":[1120],"name":"AddressUpgradeable","nameLocation":"202:18:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":807,"nodeType":"Block","src":"1489:254:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":801,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1713:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:5","memberName":"code","nodeType":"MemberAccess","src":"1713:12:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:5","memberName":"length","nodeType":"MemberAccess","src":"1713:19:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":800,"id":806,"nodeType":"Return","src":"1706:30:5"}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"227:1191:5","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":808,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:5","nodeType":"FunctionDefinition","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"account","nameLocation":"1451:7:5","nodeType":"VariableDeclaration","scope":808,"src":"1443:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":795,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:5"},"returnParameters":{"id":800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":808,"src":"1483:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":798,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:5"},"scope":1120,"src":"1423:320:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"2729:241:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":819,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2755:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}],"id":818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":817,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:5","typeDescriptions":{}}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:5","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":822,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2772:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":816,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2739:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":826,"nodeType":"ExpressionStatement","src":"2739:73:5"},{"assignments":[828,null],"declarations":[{"constant":false,"id":828,"mutability":"mutable","name":"success","nameLocation":"2829:7:5","nodeType":"VariableDeclaration","scope":841,"src":"2824:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":827,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":835,"initialValue":{"arguments":[{"hexValue":"","id":833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":829,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"2842:9:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:5","memberName":"call","nodeType":"MemberAccess","src":"2842:14:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":831,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2864:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:5"},{"expression":{"arguments":[{"id":837,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"2893:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":836,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2885:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":840,"nodeType":"ExpressionStatement","src":"2885:78:5"}]},"documentation":{"id":809,"nodeType":"StructuredDocumentation","src":"1749:904:5","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:5","nodeType":"FunctionDefinition","parameters":{"id":814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:5","nodeType":"VariableDeclaration","scope":842,"src":"2677:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":810,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:5","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":813,"mutability":"mutable","name":"amount","nameLocation":"2712:6:5","nodeType":"VariableDeclaration","scope":842,"src":"2704:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":812,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:5"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[],"src":"2729:0:5"},"scope":1120,"src":"2658:312:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":859,"nodeType":"Block","src":"3801:96:5","statements":[{"expression":{"arguments":[{"id":853,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"3840:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":854,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"3848:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":852,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"3818:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":851,"id":858,"nodeType":"Return","src":"3811:79:5"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"2976:731:5","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":860,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:5","nodeType":"FunctionDefinition","parameters":{"id":848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"target","nameLocation":"3742:6:5","nodeType":"VariableDeclaration","scope":860,"src":"3734:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"3763:4:5","nodeType":"VariableDeclaration","scope":860,"src":"3750:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:5"},"returnParameters":{"id":851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":860,"src":"3787:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":849,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:5"},"scope":1120,"src":"3712:185:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":879,"nodeType":"Block","src":"4266:76:5","statements":[{"expression":{"arguments":[{"id":873,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"4305:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":874,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":865,"src":"4313:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":876,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"4322:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":872,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"4283:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":871,"id":878,"nodeType":"Return","src":"4276:59:5"}]},"documentation":{"id":861,"nodeType":"StructuredDocumentation","src":"3903:211:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":880,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:5","nodeType":"FunctionDefinition","parameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":863,"mutability":"mutable","name":"target","nameLocation":"4158:6:5","nodeType":"VariableDeclaration","scope":880,"src":"4150:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":862,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":865,"mutability":"mutable","name":"data","nameLocation":"4187:4:5","nodeType":"VariableDeclaration","scope":880,"src":"4174:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":864,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":867,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:5","nodeType":"VariableDeclaration","scope":880,"src":"4201:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":866,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:5"},"returnParameters":{"id":871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":880,"src":"4252:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":869,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:5"},"scope":1120,"src":"4119:223:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":899,"nodeType":"Block","src":"4817:111:5","statements":[{"expression":{"arguments":[{"id":893,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"4856:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":894,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"4864:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"4870:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":892,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"4834:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":891,"id":898,"nodeType":"Return","src":"4827:94:5"}]},"documentation":{"id":881,"nodeType":"StructuredDocumentation","src":"4348:351:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":900,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:5","nodeType":"FunctionDefinition","parameters":{"id":888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"target","nameLocation":"4743:6:5","nodeType":"VariableDeclaration","scope":900,"src":"4735:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":882,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":885,"mutability":"mutable","name":"data","nameLocation":"4764:4:5","nodeType":"VariableDeclaration","scope":900,"src":"4751:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":884,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":887,"mutability":"mutable","name":"value","nameLocation":"4778:5:5","nodeType":"VariableDeclaration","scope":900,"src":"4770:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":886,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:5"},"returnParameters":{"id":891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":900,"src":"4803:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":889,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:5"},"scope":1120,"src":"4704:224:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":943,"nodeType":"Block","src":"5355:267:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":917,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5381:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}],"id":916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":915,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:5","typeDescriptions":{}}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:5","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":920,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"5398:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":914,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5365:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":924,"nodeType":"ExpressionStatement","src":"5365:81:5"},{"assignments":[926,928],"declarations":[{"constant":false,"id":926,"mutability":"mutable","name":"success","nameLocation":"5462:7:5","nodeType":"VariableDeclaration","scope":943,"src":"5457:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":925,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":928,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:5","nodeType":"VariableDeclaration","scope":943,"src":"5471:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":927,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":935,"initialValue":{"arguments":[{"id":933,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":905,"src":"5524:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":929,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"5498:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:5","memberName":"call","nodeType":"MemberAccess","src":"5498:11:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"5517:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:5"},{"expression":{"arguments":[{"id":937,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"5573:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":938,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"5581:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":939,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"5590:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":940,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"5602:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":936,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"5546:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":913,"id":942,"nodeType":"Return","src":"5539:76:5"}]},"documentation":{"id":901,"nodeType":"StructuredDocumentation","src":"4934:237:5","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":944,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:5","nodeType":"FunctionDefinition","parameters":{"id":910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"target","nameLocation":"5224:6:5","nodeType":"VariableDeclaration","scope":944,"src":"5216:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":905,"mutability":"mutable","name":"data","nameLocation":"5253:4:5","nodeType":"VariableDeclaration","scope":944,"src":"5240:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":904,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":907,"mutability":"mutable","name":"value","nameLocation":"5275:5:5","nodeType":"VariableDeclaration","scope":944,"src":"5267:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":906,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:5","nodeType":"VariableDeclaration","scope":944,"src":"5290:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":908,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:5"},"returnParameters":{"id":913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":912,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":944,"src":"5341:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":911,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:5"},"scope":1120,"src":"5176:446:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":960,"nodeType":"Block","src":"5899:97:5","statements":[{"expression":{"arguments":[{"id":955,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":947,"src":"5935:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":956,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"5943:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":954,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[961,990],"referencedDeclaration":990,"src":"5916:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":953,"id":959,"nodeType":"Return","src":"5909:80:5"}]},"documentation":{"id":945,"nodeType":"StructuredDocumentation","src":"5628:166:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":961,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:5","nodeType":"FunctionDefinition","parameters":{"id":950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":947,"mutability":"mutable","name":"target","nameLocation":"5835:6:5","nodeType":"VariableDeclaration","scope":961,"src":"5827:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":946,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":949,"mutability":"mutable","name":"data","nameLocation":"5856:4:5","nodeType":"VariableDeclaration","scope":961,"src":"5843:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":948,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:5"},"returnParameters":{"id":953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":961,"src":"5885:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":951,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:5"},"scope":1120,"src":"5799:197:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":989,"nodeType":"Block","src":"6338:168:5","statements":[{"assignments":[974,976],"declarations":[{"constant":false,"id":974,"mutability":"mutable","name":"success","nameLocation":"6354:7:5","nodeType":"VariableDeclaration","scope":989,"src":"6349:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":973,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":976,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:5","nodeType":"VariableDeclaration","scope":989,"src":"6363:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":975,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":981,"initialValue":{"arguments":[{"id":979,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"6408:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":977,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"6390:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:5","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:5","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:5"},{"expression":{"arguments":[{"id":983,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"6457:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":984,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"6465:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":985,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"6474:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":986,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"6486:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":982,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"6430:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":972,"id":988,"nodeType":"Return","src":"6423:76:5"}]},"documentation":{"id":962,"nodeType":"StructuredDocumentation","src":"6002:173:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":990,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:5","nodeType":"FunctionDefinition","parameters":{"id":969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":964,"mutability":"mutable","name":"target","nameLocation":"6225:6:5","nodeType":"VariableDeclaration","scope":990,"src":"6217:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":963,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":966,"mutability":"mutable","name":"data","nameLocation":"6254:4:5","nodeType":"VariableDeclaration","scope":990,"src":"6241:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":965,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":968,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:5","nodeType":"VariableDeclaration","scope":990,"src":"6268:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":967,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:5"},"returnParameters":{"id":972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":990,"src":"6324:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":970,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:5"},"scope":1120,"src":"6180:326:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1006,"nodeType":"Block","src":"6782:101:5","statements":[{"expression":{"arguments":[{"id":1001,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"6820:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1002,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":995,"src":"6828:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":1000,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[1007,1036],"referencedDeclaration":1036,"src":"6799:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":999,"id":1005,"nodeType":"Return","src":"6792:84:5"}]},"documentation":{"id":991,"nodeType":"StructuredDocumentation","src":"6512:168:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1007,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:5","nodeType":"FunctionDefinition","parameters":{"id":996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":993,"mutability":"mutable","name":"target","nameLocation":"6723:6:5","nodeType":"VariableDeclaration","scope":1007,"src":"6715:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":992,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":995,"mutability":"mutable","name":"data","nameLocation":"6744:4:5","nodeType":"VariableDeclaration","scope":1007,"src":"6731:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":994,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:5"},"returnParameters":{"id":999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1007,"src":"6768:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":997,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:5"},"scope":1120,"src":"6685:198:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1035,"nodeType":"Block","src":"7224:170:5","statements":[{"assignments":[1020,1022],"declarations":[{"constant":false,"id":1020,"mutability":"mutable","name":"success","nameLocation":"7240:7:5","nodeType":"VariableDeclaration","scope":1035,"src":"7235:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1019,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1022,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:5","nodeType":"VariableDeclaration","scope":1035,"src":"7249:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1021,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1027,"initialValue":{"arguments":[{"id":1025,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"7296:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1023,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"7276:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:5","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:5","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:5"},{"expression":{"arguments":[{"id":1029,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"7345:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1030,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"7353:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1031,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"7362:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1032,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1014,"src":"7374:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1028,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"7318:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1018,"id":1034,"nodeType":"Return","src":"7311:76:5"}]},"documentation":{"id":1008,"nodeType":"StructuredDocumentation","src":"6889:175:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1036,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:5","nodeType":"FunctionDefinition","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1010,"mutability":"mutable","name":"target","nameLocation":"7116:6:5","nodeType":"VariableDeclaration","scope":1036,"src":"7108:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1009,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1012,"mutability":"mutable","name":"data","nameLocation":"7145:4:5","nodeType":"VariableDeclaration","scope":1036,"src":"7132:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1011,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1014,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:5","nodeType":"VariableDeclaration","scope":1036,"src":"7159:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1013,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:5"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1036,"src":"7210:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1016,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:5"},"scope":1120,"src":"7069:325:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1074,"nodeType":"Block","src":"7876:434:5","statements":[{"condition":{"id":1050,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"7890:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1072,"nodeType":"Block","src":"8246:58:5","statements":[{"expression":{"arguments":[{"id":1068,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"8268:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1069,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"8280:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1067,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"8260:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1071,"nodeType":"ExpressionStatement","src":"8260:33:5"}]},"id":1073,"nodeType":"IfStatement","src":"7886:418:5","trueBody":{"id":1066,"nodeType":"Block","src":"7899:341:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1051,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"7917:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:5","memberName":"length","nodeType":"MemberAccess","src":"7917:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"7913:286:5","trueBody":{"id":1062,"nodeType":"Block","src":"7941:258:5","statements":[{"expression":{"arguments":[{"arguments":[{"id":1057,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1039,"src":"8143:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1056,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"8132:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":1055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8124:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1061,"nodeType":"ExpressionStatement","src":"8124:60:5"}]}},{"expression":{"id":1064,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"8219:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1049,"id":1065,"nodeType":"Return","src":"8212:17:5"}]}}]},"documentation":{"id":1037,"nodeType":"StructuredDocumentation","src":"7400:277:5","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":1075,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:5","nodeType":"FunctionDefinition","parameters":{"id":1046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1039,"mutability":"mutable","name":"target","nameLocation":"7735:6:5","nodeType":"VariableDeclaration","scope":1075,"src":"7727:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1038,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1041,"mutability":"mutable","name":"success","nameLocation":"7756:7:5","nodeType":"VariableDeclaration","scope":1075,"src":"7751:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1040,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1043,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:5","nodeType":"VariableDeclaration","scope":1075,"src":"7773:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1042,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1045,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:5","nodeType":"VariableDeclaration","scope":1075,"src":"7806:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1044,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:5"},"returnParameters":{"id":1049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1075,"src":"7862:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1047,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:5"},"scope":1120,"src":"7682:628:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1098,"nodeType":"Block","src":"8691:135:5","statements":[{"condition":{"id":1087,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"8705:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1096,"nodeType":"Block","src":"8762:58:5","statements":[{"expression":{"arguments":[{"id":1092,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"8784:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1093,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"8796:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1091,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"8776:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1095,"nodeType":"ExpressionStatement","src":"8776:33:5"}]},"id":1097,"nodeType":"IfStatement","src":"8701:119:5","trueBody":{"id":1090,"nodeType":"Block","src":"8714:42:5","statements":[{"expression":{"id":1088,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"8735:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1086,"id":1089,"nodeType":"Return","src":"8728:17:5"}]}}]},"documentation":{"id":1076,"nodeType":"StructuredDocumentation","src":"8316:210:5","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":1099,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:5","nodeType":"FunctionDefinition","parameters":{"id":1083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1078,"mutability":"mutable","name":"success","nameLocation":"8571:7:5","nodeType":"VariableDeclaration","scope":1099,"src":"8566:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1077,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1080,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:5","nodeType":"VariableDeclaration","scope":1099,"src":"8588:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1079,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1082,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:5","nodeType":"VariableDeclaration","scope":1099,"src":"8621:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1081,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:5"},"returnParameters":{"id":1086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1099,"src":"8677:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1084,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:5"},"scope":1120,"src":"8531:295:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1118,"nodeType":"Block","src":"8915:457:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1106,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"8991:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:5","memberName":"length","nodeType":"MemberAccess","src":"8991:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1116,"nodeType":"Block","src":"9321:45:5","statements":[{"expression":{"arguments":[{"id":1113,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"9342:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1112,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9335:6:5","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1115,"nodeType":"ExpressionStatement","src":"9335:20:5"}]},"id":1117,"nodeType":"IfStatement","src":"8987:379:5","trueBody":{"id":1111,"nodeType":"Block","src":"9014:301:5","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:5","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:5","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:5"},"nodeType":"YulFunctionCall","src":"9213:17:5"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:5","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:5","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:5"},"nodeType":"YulFunctionCall","src":"9254:19:5"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:5"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:5"},"nodeType":"YulFunctionCall","src":"9247:44:5"},"nodeType":"YulExpressionStatement","src":"9247:44:5"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1101,"isOffset":false,"isSlot":false,"src":"9219:10:5","valueSize":1},{"declaration":1101,"isOffset":false,"isSlot":false,"src":"9262:10:5","valueSize":1}],"id":1110,"nodeType":"InlineAssembly","src":"9163:142:5"}]}}]},"id":1119,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:5","nodeType":"FunctionDefinition","parameters":{"id":1104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1101,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:5","nodeType":"VariableDeclaration","scope":1119,"src":"8849:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1100,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1103,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:5","nodeType":"VariableDeclaration","scope":1119,"src":"8874:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1102,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:5"},"returnParameters":{"id":1105,"nodeType":"ParameterList","parameters":[],"src":"8915:0:5"},"scope":1120,"src":"8832:540:5","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1121,"src":"194:9180:5","usedErrors":[]}],"src":"101:9274:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300]},"id":1163,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1122,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:6"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1123,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1163,"sourceUnit":301,"src":"110:42:6","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1125,"name":"Initializable","nameLocations":["691:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":300,"src":"691:13:6"},"id":1126,"nodeType":"InheritanceSpecifier","src":"691:13:6"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1124,"nodeType":"StructuredDocumentation","src":"154:496:6","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1162,"linearizedBaseContracts":[1162,300],"name":"ContextUpgradeable","nameLocation":"669:18:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":1131,"nodeType":"Block","src":"763:7:6","statements":[]},"id":1132,"implemented":true,"kind":"function","modifiers":[{"id":1129,"kind":"modifierInvocation","modifierName":{"id":1128,"name":"onlyInitializing","nameLocations":["746:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"746:16:6"},"nodeType":"ModifierInvocation","src":"746:16:6"}],"name":"__Context_init","nameLocation":"720:14:6","nodeType":"FunctionDefinition","parameters":{"id":1127,"nodeType":"ParameterList","parameters":[],"src":"734:2:6"},"returnParameters":{"id":1130,"nodeType":"ParameterList","parameters":[],"src":"763:0:6"},"scope":1162,"src":"711:59:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1137,"nodeType":"Block","src":"838:7:6","statements":[]},"id":1138,"implemented":true,"kind":"function","modifiers":[{"id":1135,"kind":"modifierInvocation","modifierName":{"id":1134,"name":"onlyInitializing","nameLocations":["821:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"821:16:6"},"nodeType":"ModifierInvocation","src":"821:16:6"}],"name":"__Context_init_unchained","nameLocation":"785:24:6","nodeType":"FunctionDefinition","parameters":{"id":1133,"nodeType":"ParameterList","parameters":[],"src":"809:2:6"},"returnParameters":{"id":1136,"nodeType":"ParameterList","parameters":[],"src":"838:0:6"},"scope":1162,"src":"776:69:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1146,"nodeType":"Block","src":"912:34:6","statements":[{"expression":{"expression":{"id":1143,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"929:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"933:6:6","memberName":"sender","nodeType":"MemberAccess","src":"929:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1142,"id":1145,"nodeType":"Return","src":"922:17:6"}]},"id":1147,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"859:10:6","nodeType":"FunctionDefinition","parameters":{"id":1139,"nodeType":"ParameterList","parameters":[],"src":"869:2:6"},"returnParameters":{"id":1142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1147,"src":"903:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1140,"name":"address","nodeType":"ElementaryTypeName","src":"903:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"902:9:6"},"scope":1162,"src":"850:96:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1155,"nodeType":"Block","src":"1019:32:6","statements":[{"expression":{"expression":{"id":1152,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1036:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1040:4:6","memberName":"data","nodeType":"MemberAccess","src":"1036:8:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1151,"id":1154,"nodeType":"Return","src":"1029:15:6"}]},"id":1156,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"961:8:6","nodeType":"FunctionDefinition","parameters":{"id":1148,"nodeType":"ParameterList","parameters":[],"src":"969:2:6"},"returnParameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1156,"src":"1003:14:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1149,"name":"bytes","nodeType":"ElementaryTypeName","src":"1003:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1002:16:6"},"scope":1162,"src":"952:99:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":1157,"nodeType":"StructuredDocumentation","src":"1057:254:6","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1161,"mutability":"mutable","name":"__gap","nameLocation":"1336:5:6","nodeType":"VariableDeclaration","scope":1162,"src":"1316:25:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"1316:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1160,"length":{"hexValue":"3530","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1324:2:6","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1316:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1163,"src":"651:693:6","usedErrors":[]}],"src":"86:1259:6"},"id":6},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[2623],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":1392,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1164,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:7"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","file":"./math/MathUpgradeable.sol","id":1165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1392,"sourceUnit":2624,"src":"126:36:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol","file":"./math/SignedMathUpgradeable.sol","id":1166,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1392,"sourceUnit":2729,"src":"163:42:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"StringsUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1167,"nodeType":"StructuredDocumentation","src":"207:34:7","text":" @dev String operations."},"fullyImplemented":true,"id":1391,"linearizedBaseContracts":[1391],"name":"StringsUpgradeable","nameLocation":"250:18:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1170,"mutability":"constant","name":"_SYMBOLS","nameLocation":"300:8:7","nodeType":"VariableDeclaration","scope":1391,"src":"275:54:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1168,"name":"bytes16","nodeType":"ElementaryTypeName","src":"275:7:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":1173,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"358:15:7","nodeType":"VariableDeclaration","scope":1391,"src":"335:43:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1171,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"376:2:7","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":1220,"nodeType":"Block","src":"551:636:7","statements":[{"id":1219,"nodeType":"UncheckedBlock","src":"561:620:7","statements":[{"assignments":[1182],"declarations":[{"constant":false,"id":1182,"mutability":"mutable","name":"length","nameLocation":"593:6:7","nodeType":"VariableDeclaration","scope":1219,"src":"585:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"585:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1189,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"624:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1183,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2623,"src":"602:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$2623_$","typeString":"type(library MathUpgradeable)"}},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"618:5:7","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":2460,"src":"602:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"602:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"633:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"602:32:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"585:49:7"},{"assignments":[1191],"declarations":[{"constant":false,"id":1191,"mutability":"mutable","name":"buffer","nameLocation":"662:6:7","nodeType":"VariableDeclaration","scope":1219,"src":"648:20:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1190,"name":"string","nodeType":"ElementaryTypeName","src":"648:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1196,"initialValue":{"arguments":[{"id":1194,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"682:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"671:10:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1192,"name":"string","nodeType":"ElementaryTypeName","src":"675:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"671:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"648:41:7"},{"assignments":[1198],"declarations":[{"constant":false,"id":1198,"mutability":"mutable","name":"ptr","nameLocation":"711:3:7","nodeType":"VariableDeclaration","scope":1219,"src":"703:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1197,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1199,"nodeType":"VariableDeclarationStatement","src":"703:11:7"},{"AST":{"nodeType":"YulBlock","src":"784:67:7","statements":[{"nodeType":"YulAssignment","src":"802:35:7","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"813:6:7"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"825:2:7","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"829:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"821:3:7"},"nodeType":"YulFunctionCall","src":"821:15:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"809:3:7"},"nodeType":"YulFunctionCall","src":"809:28:7"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"802:3:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1191,"isOffset":false,"isSlot":false,"src":"813:6:7","valueSize":1},{"declaration":1182,"isOffset":false,"isSlot":false,"src":"829:6:7","valueSize":1},{"declaration":1198,"isOffset":false,"isSlot":false,"src":"802:3:7","valueSize":1}],"id":1200,"nodeType":"InlineAssembly","src":"775:76:7"},{"body":{"id":1215,"nodeType":"Block","src":"877:267:7","statements":[{"expression":{"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"895:5:7","subExpression":{"id":1202,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"895:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1204,"nodeType":"ExpressionStatement","src":"895:5:7"},{"AST":{"nodeType":"YulBlock","src":"978:84:7","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1008:3:7"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1022:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"1029:2:7","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"1018:3:7"},"nodeType":"YulFunctionCall","src":"1018:14:7"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"1034:8:7"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"1013:4:7"},"nodeType":"YulFunctionCall","src":"1013:30:7"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"1000:7:7"},"nodeType":"YulFunctionCall","src":"1000:44:7"},"nodeType":"YulExpressionStatement","src":"1000:44:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1170,"isOffset":false,"isSlot":false,"src":"1034:8:7","valueSize":1},{"declaration":1198,"isOffset":false,"isSlot":false,"src":"1008:3:7","valueSize":1},{"declaration":1176,"isOffset":false,"isSlot":false,"src":"1022:5:7","valueSize":1}],"id":1205,"nodeType":"InlineAssembly","src":"969:93:7"},{"expression":{"id":1208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"1079:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1088:2:7","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1079:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1209,"nodeType":"ExpressionStatement","src":"1079:11:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"1112:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1121:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1112:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1214,"nodeType":"IfStatement","src":"1108:21:7","trueBody":{"id":1213,"nodeType":"Break","src":"1124:5:7"}}]},"condition":{"hexValue":"74727565","id":1201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"871:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1216,"nodeType":"WhileStatement","src":"864:280:7"},{"expression":{"id":1217,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1191,"src":"1164:6:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1180,"id":1218,"nodeType":"Return","src":"1157:13:7"}]}]},"documentation":{"id":1174,"nodeType":"StructuredDocumentation","src":"385:90:7","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":1221,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"489:8:7","nodeType":"FunctionDefinition","parameters":{"id":1177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1176,"mutability":"mutable","name":"value","nameLocation":"506:5:7","nodeType":"VariableDeclaration","scope":1221,"src":"498:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1175,"name":"uint256","nodeType":"ElementaryTypeName","src":"498:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"497:15:7"},"returnParameters":{"id":1180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1221,"src":"536:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1178,"name":"string","nodeType":"ElementaryTypeName","src":"536:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"535:15:7"},"scope":1391,"src":"480:707:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1248,"nodeType":"Block","src":"1357:114:7","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1224,"src":"1398:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1406:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1398:9:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1416:2:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1398:20:7","trueExpression":{"hexValue":"2d","id":1236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1410:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1224,"src":"1455:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1240,"name":"SignedMathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"1429:21:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMathUpgradeable_$2728_$","typeString":"type(library SignedMathUpgradeable)"}},"id":1241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1451:3:7","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":2727,"src":"1429:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1429:32:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1239,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[1221,1249],"referencedDeclaration":1221,"src":"1420:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1231,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1381:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1385:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"1381:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1381:82:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1374:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1229,"name":"string","nodeType":"ElementaryTypeName","src":"1374:6:7","typeDescriptions":{}}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1374:90:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1228,"id":1247,"nodeType":"Return","src":"1367:97:7"}]},"documentation":{"id":1222,"nodeType":"StructuredDocumentation","src":"1193:89:7","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":1249,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1296:8:7","nodeType":"FunctionDefinition","parameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1224,"mutability":"mutable","name":"value","nameLocation":"1312:5:7","nodeType":"VariableDeclaration","scope":1249,"src":"1305:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1223,"name":"int256","nodeType":"ElementaryTypeName","src":"1305:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1304:14:7"},"returnParameters":{"id":1228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1249,"src":"1342:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1226,"name":"string","nodeType":"ElementaryTypeName","src":"1342:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1341:15:7"},"scope":1391,"src":"1287:184:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1268,"nodeType":"Block","src":"1650:111:7","statements":[{"id":1267,"nodeType":"UncheckedBlock","src":"1660:95:7","statements":[{"expression":{"arguments":[{"id":1258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"1703:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1261,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"1733:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1259,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2623,"src":"1710:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$2623_$","typeString":"type(library MathUpgradeable)"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:7","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":2583,"src":"1710:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1710:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1742:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1710:33:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1257,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1269,1345,1365],"referencedDeclaration":1345,"src":"1691:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1691:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1256,"id":1266,"nodeType":"Return","src":"1684:60:7"}]}]},"documentation":{"id":1250,"nodeType":"StructuredDocumentation","src":"1477:94:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":1269,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1585:11:7","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1252,"mutability":"mutable","name":"value","nameLocation":"1605:5:7","nodeType":"VariableDeclaration","scope":1269,"src":"1597:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1251,"name":"uint256","nodeType":"ElementaryTypeName","src":"1597:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1596:15:7"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1269,"src":"1635:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1254,"name":"string","nodeType":"ElementaryTypeName","src":"1635:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1634:15:7"},"scope":1391,"src":"1576:185:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1344,"nodeType":"Block","src":"1974:347:7","statements":[{"assignments":[1280],"declarations":[{"constant":false,"id":1280,"mutability":"mutable","name":"buffer","nameLocation":"1997:6:7","nodeType":"VariableDeclaration","scope":1344,"src":"1984:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1279,"name":"bytes","nodeType":"ElementaryTypeName","src":"1984:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1289,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2016:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1284,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"2020:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2016:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2029:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2016:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2006:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1281,"name":"bytes","nodeType":"ElementaryTypeName","src":"2010:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2006:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1984:47:7"},{"expression":{"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1290,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2041:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1292,"indexExpression":{"hexValue":"30","id":1291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2048:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2041:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2053:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2041:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1295,"nodeType":"ExpressionStatement","src":"2041:15:7"},{"expression":{"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1296,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2066:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1298,"indexExpression":{"hexValue":"31","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2073:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2066:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2078:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2066:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1301,"nodeType":"ExpressionStatement","src":"2066:15:7"},{"body":{"id":1330,"nodeType":"Block","src":"2136:83:7","statements":[{"expression":{"id":1324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1316,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2150:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1318,"indexExpression":{"id":1317,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2157:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2150:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1319,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"2162:8:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1323,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2171:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:3:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2171:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2162:21:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2150:33:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1325,"nodeType":"ExpressionStatement","src":"2150:33:7"},{"expression":{"id":1328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2197:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2207:1:7","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2197:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1329,"nodeType":"ExpressionStatement","src":"2197:11:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1310,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2124:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2128:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2124:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1331,"initializationExpression":{"assignments":[1303],"declarations":[{"constant":false,"id":1303,"mutability":"mutable","name":"i","nameLocation":"2104:1:7","nodeType":"VariableDeclaration","scope":1331,"src":"2096:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1309,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2108:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1305,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"2112:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2108:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2121:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2108:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2096:26:7"},"loopExpression":{"expression":{"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2131:3:7","subExpression":{"id":1313,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2133:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1315,"nodeType":"ExpressionStatement","src":"2131:3:7"},"nodeType":"ForStatement","src":"2091:128:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2236:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2245:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2248:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":1332,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2228:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2228:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1338,"nodeType":"ExpressionStatement","src":"2228:55:7"},{"expression":{"arguments":[{"id":1341,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2307:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2300:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1339,"name":"string","nodeType":"ElementaryTypeName","src":"2300:6:7","typeDescriptions":{}}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1278,"id":1343,"nodeType":"Return","src":"2293:21:7"}]},"documentation":{"id":1270,"nodeType":"StructuredDocumentation","src":"1767:112:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":1345,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1893:11:7","nodeType":"FunctionDefinition","parameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"value","nameLocation":"1913:5:7","nodeType":"VariableDeclaration","scope":1345,"src":"1905:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"1905:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"length","nameLocation":"1928:6:7","nodeType":"VariableDeclaration","scope":1345,"src":"1920:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1273,"name":"uint256","nodeType":"ElementaryTypeName","src":"1920:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1904:31:7"},"returnParameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1345,"src":"1959:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1276,"name":"string","nodeType":"ElementaryTypeName","src":"1959:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1958:15:7"},"scope":1391,"src":"1884:437:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1364,"nodeType":"Block","src":"2546:76:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1358,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"2591:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2583:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1356,"name":"uint160","nodeType":"ElementaryTypeName","src":"2583:7:7","typeDescriptions":{}}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2583:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2575:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1354,"name":"uint256","nodeType":"ElementaryTypeName","src":"2575:7:7","typeDescriptions":{}}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2575:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1361,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"2599:15:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1353,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1269,1345,1365],"referencedDeclaration":1345,"src":"2563:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1352,"id":1363,"nodeType":"Return","src":"2556:59:7"}]},"documentation":{"id":1346,"nodeType":"StructuredDocumentation","src":"2327:141:7","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":1365,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2482:11:7","nodeType":"FunctionDefinition","parameters":{"id":1349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1348,"mutability":"mutable","name":"addr","nameLocation":"2502:4:7","nodeType":"VariableDeclaration","scope":1365,"src":"2494:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1347,"name":"address","nodeType":"ElementaryTypeName","src":"2494:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2493:14:7"},"returnParameters":{"id":1352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1365,"src":"2531:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1350,"name":"string","nodeType":"ElementaryTypeName","src":"2531:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2530:15:7"},"scope":1391,"src":"2473:149:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1389,"nodeType":"Block","src":"2777:66:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1378,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"2810:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2804:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1376,"name":"bytes","nodeType":"ElementaryTypeName","src":"2804:5:7","typeDescriptions":{}}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2804:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1375,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2794:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2794:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1384,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1370,"src":"2833:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2827:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1382,"name":"bytes","nodeType":"ElementaryTypeName","src":"2827:5:7","typeDescriptions":{}}},"id":1385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2827:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1381,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2817:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2817:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2794:42:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1374,"id":1388,"nodeType":"Return","src":"2787:49:7"}]},"documentation":{"id":1366,"nodeType":"StructuredDocumentation","src":"2628:66:7","text":" @dev Returns true if the two strings are equal."},"id":1390,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2708:5:7","nodeType":"FunctionDefinition","parameters":{"id":1371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1368,"mutability":"mutable","name":"a","nameLocation":"2728:1:7","nodeType":"VariableDeclaration","scope":1390,"src":"2714:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1367,"name":"string","nodeType":"ElementaryTypeName","src":"2714:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1370,"mutability":"mutable","name":"b","nameLocation":"2745:1:7","nodeType":"VariableDeclaration","scope":1390,"src":"2731:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1369,"name":"string","nodeType":"ElementaryTypeName","src":"2731:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2713:34:7"},"returnParameters":{"id":1374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1390,"src":"2771:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1372,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:7"},"scope":1391,"src":"2699:144:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1392,"src":"242:2603:7","usedErrors":[]}],"src":"101:2745:7"},"id":7},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","exportedSymbols":{"ECDSAUpgradeable":[1757],"MathUpgradeable":[2623],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":1758,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1393,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:8"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","file":"../StringsUpgradeable.sol","id":1394,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1758,"sourceUnit":1392,"src":"137:35:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSAUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1395,"nodeType":"StructuredDocumentation","src":"174:205:8","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":1757,"linearizedBaseContracts":[1757],"name":"ECDSAUpgradeable","nameLocation":"388:16:8","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSAUpgradeable.RecoverError","id":1401,"members":[{"id":1396,"name":"NoError","nameLocation":"439:7:8","nodeType":"EnumValue","src":"439:7:8"},{"id":1397,"name":"InvalidSignature","nameLocation":"456:16:8","nodeType":"EnumValue","src":"456:16:8"},{"id":1398,"name":"InvalidSignatureLength","nameLocation":"482:22:8","nodeType":"EnumValue","src":"482:22:8"},{"id":1399,"name":"InvalidSignatureS","nameLocation":"514:17:8","nodeType":"EnumValue","src":"514:17:8"},{"id":1400,"name":"InvalidSignatureV","nameLocation":"541:17:8","nodeType":"EnumValue","src":"541:17:8"}],"name":"RecoverError","nameLocation":"416:12:8","nodeType":"EnumDefinition","src":"411:175:8"},{"body":{"id":1444,"nodeType":"Block","src":"646:457:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1407,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"660:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1408,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"669:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"682:7:8","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":1396,"src":"669:20:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"660:29:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1413,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"756:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1414,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"765:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"778:16:8","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"765:29:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"756:38:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1422,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"865:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1423,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"874:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"887:22:8","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":1398,"src":"874:35:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"865:44:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1431,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"987:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1432,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"996:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1009:17:8","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":1399,"src":"996:30:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"987:39:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1440,"nodeType":"IfStatement","src":"983:114:8","trueBody":{"id":1439,"nodeType":"Block","src":"1028:69:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265202773272076616c7565","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1049:36:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""},"value":"ECDSA: invalid signature 's' value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""}],"id":1435,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1042:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1042:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1438,"nodeType":"ExpressionStatement","src":"1042:44:8"}]}},"id":1441,"nodeType":"IfStatement","src":"861:236:8","trueBody":{"id":1430,"nodeType":"Block","src":"911:66:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265206c656e677468","id":1427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"932:33:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""},"value":"ECDSA: invalid signature length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""}],"id":1426,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"925:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"925:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1429,"nodeType":"ExpressionStatement","src":"925:41:8"}]}},"id":1442,"nodeType":"IfStatement","src":"752:345:8","trueBody":{"id":1421,"nodeType":"Block","src":"796:59:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"817:26:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""},"value":"ECDSA: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""}],"id":1417,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"810:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"810:34:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1420,"nodeType":"ExpressionStatement","src":"810:34:8"}]}},"id":1443,"nodeType":"IfStatement","src":"656:441:8","trueBody":{"id":1412,"nodeType":"Block","src":"691:55:8","statements":[{"functionReturnParameters":1406,"id":1411,"nodeType":"Return","src":"705:7:8"}]}}]},"id":1445,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"601:11:8","nodeType":"FunctionDefinition","parameters":{"id":1405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1404,"mutability":"mutable","name":"error","nameLocation":"626:5:8","nodeType":"VariableDeclaration","scope":1445,"src":"613:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1403,"nodeType":"UserDefinedTypeName","pathNode":{"id":1402,"name":"RecoverError","nameLocations":["613:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"613:12:8"},"referencedDeclaration":1401,"src":"613:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"612:20:8"},"returnParameters":{"id":1406,"nodeType":"ParameterList","parameters":[],"src":"646:0:8"},"scope":1757,"src":"592:511:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1490,"nodeType":"Block","src":"2271:626:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1458,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"2285:9:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2295:6:8","memberName":"length","nodeType":"MemberAccess","src":"2285:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":1460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2305:2:8","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2285:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1488,"nodeType":"Block","src":"2810:81:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2840:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2832:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1480,"name":"address","nodeType":"ElementaryTypeName","src":"2832:7:8","typeDescriptions":{}}},"id":1483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1484,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"2844:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2857:22:8","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":1398,"src":"2844:35:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1486,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2831:49:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1457,"id":1487,"nodeType":"Return","src":"2824:56:8"}]},"id":1489,"nodeType":"IfStatement","src":"2281:610:8","trueBody":{"id":1479,"nodeType":"Block","src":"2309:495:8","statements":[{"assignments":[1463],"declarations":[{"constant":false,"id":1463,"mutability":"mutable","name":"r","nameLocation":"2331:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2323:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2323:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1464,"nodeType":"VariableDeclarationStatement","src":"2323:9:8"},{"assignments":[1466],"declarations":[{"constant":false,"id":1466,"mutability":"mutable","name":"s","nameLocation":"2354:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2346:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1465,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2346:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1467,"nodeType":"VariableDeclarationStatement","src":"2346:9:8"},{"assignments":[1469],"declarations":[{"constant":false,"id":1469,"mutability":"mutable","name":"v","nameLocation":"2375:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2369:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1468,"name":"uint8","nodeType":"ElementaryTypeName","src":"2369:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1470,"nodeType":"VariableDeclarationStatement","src":"2369:7:8"},{"AST":{"nodeType":"YulBlock","src":"2577:171:8","statements":[{"nodeType":"YulAssignment","src":"2595:32:8","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2610:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2621:4:8","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:8"},"nodeType":"YulFunctionCall","src":"2606:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2600:5:8"},"nodeType":"YulFunctionCall","src":"2600:27:8"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"2595:1:8"}]},{"nodeType":"YulAssignment","src":"2644:32:8","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2659:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2670:4:8","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2655:3:8"},"nodeType":"YulFunctionCall","src":"2655:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2649:5:8"},"nodeType":"YulFunctionCall","src":"2649:27:8"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"2644:1:8"}]},{"nodeType":"YulAssignment","src":"2693:41:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2703:1:8","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2716:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2727:4:8","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2712:3:8"},"nodeType":"YulFunctionCall","src":"2712:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2706:5:8"},"nodeType":"YulFunctionCall","src":"2706:27:8"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"2698:4:8"},"nodeType":"YulFunctionCall","src":"2698:36:8"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"2693:1:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1463,"isOffset":false,"isSlot":false,"src":"2595:1:8","valueSize":1},{"declaration":1466,"isOffset":false,"isSlot":false,"src":"2644:1:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2610:9:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2659:9:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2716:9:8","valueSize":1},{"declaration":1469,"isOffset":false,"isSlot":false,"src":"2693:1:8","valueSize":1}],"id":1471,"nodeType":"InlineAssembly","src":"2568:180:8"},{"expression":{"arguments":[{"id":1473,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1448,"src":"2779:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1474,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"2785:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1475,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2788:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1476,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2791:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1472,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"2768:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2768:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1457,"id":1478,"nodeType":"Return","src":"2761:32:8"}]}}]},"documentation":{"id":1446,"nodeType":"StructuredDocumentation","src":"1109:1053:8","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature` or error string. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n _Available since v4.3._"},"id":1491,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2176:10:8","nodeType":"FunctionDefinition","parameters":{"id":1451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1448,"mutability":"mutable","name":"hash","nameLocation":"2195:4:8","nodeType":"VariableDeclaration","scope":1491,"src":"2187:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1447,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2187:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1450,"mutability":"mutable","name":"signature","nameLocation":"2214:9:8","nodeType":"VariableDeclaration","scope":1491,"src":"2201:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1449,"name":"bytes","nodeType":"ElementaryTypeName","src":"2201:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2186:38:8"},"returnParameters":{"id":1457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1491,"src":"2248:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1452,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1491,"src":"2257:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1455,"nodeType":"UserDefinedTypeName","pathNode":{"id":1454,"name":"RecoverError","nameLocations":["2257:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"2257:12:8"},"referencedDeclaration":1401,"src":"2257:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"2247:23:8"},"scope":1757,"src":"2167:730:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1517,"nodeType":"Block","src":"3770:140:8","statements":[{"assignments":[1502,1505],"declarations":[{"constant":false,"id":1502,"mutability":"mutable","name":"recovered","nameLocation":"3789:9:8","nodeType":"VariableDeclaration","scope":1517,"src":"3781:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1501,"name":"address","nodeType":"ElementaryTypeName","src":"3781:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1505,"mutability":"mutable","name":"error","nameLocation":"3813:5:8","nodeType":"VariableDeclaration","scope":1517,"src":"3800:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1504,"nodeType":"UserDefinedTypeName","pathNode":{"id":1503,"name":"RecoverError","nameLocations":["3800:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"3800:12:8"},"referencedDeclaration":1401,"src":"3800:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1510,"initialValue":{"arguments":[{"id":1507,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1494,"src":"3833:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1508,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1496,"src":"3839:9:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1506,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1491,"src":"3822:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3822:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"3780:69:8"},{"expression":{"arguments":[{"id":1512,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1505,"src":"3871:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1511,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"3859:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1514,"nodeType":"ExpressionStatement","src":"3859:18:8"},{"expression":{"id":1515,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"3894:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1500,"id":1516,"nodeType":"Return","src":"3887:16:8"}]},"documentation":{"id":1492,"nodeType":"StructuredDocumentation","src":"2903:775:8","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it."},"id":1518,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3692:7:8","nodeType":"FunctionDefinition","parameters":{"id":1497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1494,"mutability":"mutable","name":"hash","nameLocation":"3708:4:8","nodeType":"VariableDeclaration","scope":1518,"src":"3700:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1493,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3700:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1496,"mutability":"mutable","name":"signature","nameLocation":"3727:9:8","nodeType":"VariableDeclaration","scope":1518,"src":"3714:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1495,"name":"bytes","nodeType":"ElementaryTypeName","src":"3714:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3699:38:8"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1499,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1518,"src":"3761:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1498,"name":"address","nodeType":"ElementaryTypeName","src":"3761:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3760:9:8"},"scope":1757,"src":"3683:227:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1564,"nodeType":"Block","src":"4267:203:8","statements":[{"assignments":[1534],"declarations":[{"constant":false,"id":1534,"mutability":"mutable","name":"s","nameLocation":"4285:1:8","nodeType":"VariableDeclaration","scope":1564,"src":"4277:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4277:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1541,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1535,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"4289:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":1538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4302:66:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":1537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4294:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4294:7:8","typeDescriptions":{}}},"id":1539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4294:75:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4289:80:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4277:92:8"},{"assignments":[1543],"declarations":[{"constant":false,"id":1543,"mutability":"mutable","name":"v","nameLocation":"4385:1:8","nodeType":"VariableDeclaration","scope":1564,"src":"4379:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1542,"name":"uint8","nodeType":"ElementaryTypeName","src":"4379:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1556,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1548,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"4404:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4396:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1546,"name":"uint256","nodeType":"ElementaryTypeName","src":"4396:7:8","typeDescriptions":{}}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4396:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4411:3:8","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4396:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1552,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4395:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":1553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4418:2:8","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4395:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4389:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1544,"name":"uint8","nodeType":"ElementaryTypeName","src":"4389:5:8","typeDescriptions":{}}},"id":1555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4389:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4379:42:8"},{"expression":{"arguments":[{"id":1558,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"4449:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1559,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"4455:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1560,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"4458:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1561,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1534,"src":"4461:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1557,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"4438:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1532,"id":1563,"nodeType":"Return","src":"4431:32:8"}]},"documentation":{"id":1519,"nodeType":"StructuredDocumentation","src":"3916:243:8","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n _Available since v4.3._"},"id":1565,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4173:10:8","nodeType":"FunctionDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1521,"mutability":"mutable","name":"hash","nameLocation":"4192:4:8","nodeType":"VariableDeclaration","scope":1565,"src":"4184:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1520,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4184:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1523,"mutability":"mutable","name":"r","nameLocation":"4206:1:8","nodeType":"VariableDeclaration","scope":1565,"src":"4198:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4198:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1525,"mutability":"mutable","name":"vs","nameLocation":"4217:2:8","nodeType":"VariableDeclaration","scope":1565,"src":"4209:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1524,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4209:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4183:37:8"},"returnParameters":{"id":1532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1565,"src":"4244:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1527,"name":"address","nodeType":"ElementaryTypeName","src":"4244:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1565,"src":"4253:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1530,"nodeType":"UserDefinedTypeName","pathNode":{"id":1529,"name":"RecoverError","nameLocations":["4253:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"4253:12:8"},"referencedDeclaration":1401,"src":"4253:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"4243:23:8"},"scope":1757,"src":"4164:306:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1594,"nodeType":"Block","src":"4721:136:8","statements":[{"assignments":[1578,1581],"declarations":[{"constant":false,"id":1578,"mutability":"mutable","name":"recovered","nameLocation":"4740:9:8","nodeType":"VariableDeclaration","scope":1594,"src":"4732:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1577,"name":"address","nodeType":"ElementaryTypeName","src":"4732:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"error","nameLocation":"4764:5:8","nodeType":"VariableDeclaration","scope":1594,"src":"4751:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1580,"nodeType":"UserDefinedTypeName","pathNode":{"id":1579,"name":"RecoverError","nameLocations":["4751:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"4751:12:8"},"referencedDeclaration":1401,"src":"4751:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1587,"initialValue":{"arguments":[{"id":1583,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"4784:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1584,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1570,"src":"4790:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1585,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1572,"src":"4793:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1582,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1565,"src":"4773:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4773:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"4731:65:8"},{"expression":{"arguments":[{"id":1589,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"4818:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1588,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"4806:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4806:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1591,"nodeType":"ExpressionStatement","src":"4806:18:8"},{"expression":{"id":1592,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"4841:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1576,"id":1593,"nodeType":"Return","src":"4834:16:8"}]},"documentation":{"id":1566,"nodeType":"StructuredDocumentation","src":"4476:154:8","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n _Available since v4.2._"},"id":1595,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4644:7:8","nodeType":"FunctionDefinition","parameters":{"id":1573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1568,"mutability":"mutable","name":"hash","nameLocation":"4660:4:8","nodeType":"VariableDeclaration","scope":1595,"src":"4652:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4652:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1570,"mutability":"mutable","name":"r","nameLocation":"4674:1:8","nodeType":"VariableDeclaration","scope":1595,"src":"4666:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4666:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1572,"mutability":"mutable","name":"vs","nameLocation":"4685:2:8","nodeType":"VariableDeclaration","scope":1595,"src":"4677:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1571,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4677:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4651:37:8"},"returnParameters":{"id":1576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1595,"src":"4712:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"4712:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4711:9:8"},"scope":1757,"src":"4635:222:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1658,"nodeType":"Block","src":"5142:1345:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1614,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"6038:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6030:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1612,"name":"uint256","nodeType":"ElementaryTypeName","src":"6030:7:8","typeDescriptions":{}}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6030:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":1616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6043:66:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6030:79:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1627,"nodeType":"IfStatement","src":"6026:161:8","trueBody":{"id":1626,"nodeType":"Block","src":"6111:76:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6141:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6133:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1618,"name":"address","nodeType":"ElementaryTypeName","src":"6133:7:8","typeDescriptions":{}}},"id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6133:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1622,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6145:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6158:17:8","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":1399,"src":"6145:30:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6132:44:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1625,"nodeType":"Return","src":"6125:51:8"}]}},{"assignments":[1629],"declarations":[{"constant":false,"id":1629,"mutability":"mutable","name":"signer","nameLocation":"6289:6:8","nodeType":"VariableDeclaration","scope":1658,"src":"6281:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1628,"name":"address","nodeType":"ElementaryTypeName","src":"6281:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1636,"initialValue":{"arguments":[{"id":1631,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1598,"src":"6308:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1632,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"6314:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1633,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"6317:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1634,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"6320:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1630,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6298:9:8","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6281:41:8"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1637,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"6336:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6354:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6346:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"6346:7:8","typeDescriptions":{}}},"id":1641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6346:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6336:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1652,"nodeType":"IfStatement","src":"6332:101:8","trueBody":{"id":1651,"nodeType":"Block","src":"6358:75:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6388:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6380:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1643,"name":"address","nodeType":"ElementaryTypeName","src":"6380:7:8","typeDescriptions":{}}},"id":1646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6380:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1647,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6392:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6405:16:8","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"6392:29:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1649,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6379:43:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1650,"nodeType":"Return","src":"6372:50:8"}]}},{"expression":{"components":[{"id":1653,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"6451:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1654,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6459:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6472:7:8","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":1396,"src":"6459:20:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1656,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6450:30:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1657,"nodeType":"Return","src":"6443:37:8"}]},"documentation":{"id":1596,"nodeType":"StructuredDocumentation","src":"4863:163:8","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately.\n _Available since v4.3._"},"id":1659,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5040:10:8","nodeType":"FunctionDefinition","parameters":{"id":1605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1598,"mutability":"mutable","name":"hash","nameLocation":"5059:4:8","nodeType":"VariableDeclaration","scope":1659,"src":"5051:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1597,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5051:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1600,"mutability":"mutable","name":"v","nameLocation":"5071:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5065:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1599,"name":"uint8","nodeType":"ElementaryTypeName","src":"5065:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1602,"mutability":"mutable","name":"r","nameLocation":"5082:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5074:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5074:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1604,"mutability":"mutable","name":"s","nameLocation":"5093:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5085:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5085:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5050:45:8"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1659,"src":"5119:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1606,"name":"address","nodeType":"ElementaryTypeName","src":"5119:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1659,"src":"5128:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1609,"nodeType":"UserDefinedTypeName","pathNode":{"id":1608,"name":"RecoverError","nameLocations":["5128:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"5128:12:8"},"referencedDeclaration":1401,"src":"5128:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"5118:23:8"},"scope":1757,"src":"5031:1456:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1691,"nodeType":"Block","src":"6714:138:8","statements":[{"assignments":[1674,1677],"declarations":[{"constant":false,"id":1674,"mutability":"mutable","name":"recovered","nameLocation":"6733:9:8","nodeType":"VariableDeclaration","scope":1691,"src":"6725:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1673,"name":"address","nodeType":"ElementaryTypeName","src":"6725:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"error","nameLocation":"6757:5:8","nodeType":"VariableDeclaration","scope":1691,"src":"6744:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1676,"nodeType":"UserDefinedTypeName","pathNode":{"id":1675,"name":"RecoverError","nameLocations":["6744:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"6744:12:8"},"referencedDeclaration":1401,"src":"6744:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1684,"initialValue":{"arguments":[{"id":1679,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1662,"src":"6777:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1680,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"6783:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1681,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"6786:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1682,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"6789:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1678,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"6766:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6766:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"6724:67:8"},{"expression":{"arguments":[{"id":1686,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"6813:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1685,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"6801:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6801:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1688,"nodeType":"ExpressionStatement","src":"6801:18:8"},{"expression":{"id":1689,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"6836:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1672,"id":1690,"nodeType":"Return","src":"6829:16:8"}]},"documentation":{"id":1660,"nodeType":"StructuredDocumentation","src":"6493:122:8","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":1692,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6629:7:8","nodeType":"FunctionDefinition","parameters":{"id":1669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1662,"mutability":"mutable","name":"hash","nameLocation":"6645:4:8","nodeType":"VariableDeclaration","scope":1692,"src":"6637:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6637:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1664,"mutability":"mutable","name":"v","nameLocation":"6657:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6651:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1663,"name":"uint8","nodeType":"ElementaryTypeName","src":"6651:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1666,"mutability":"mutable","name":"r","nameLocation":"6668:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6660:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6660:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1668,"mutability":"mutable","name":"s","nameLocation":"6679:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6671:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6671:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6636:45:8"},"returnParameters":{"id":1672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1692,"src":"6705:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"6705:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6704:9:8"},"scope":1757,"src":"6620:232:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1701,"nodeType":"Block","src":"7228:310:8","statements":[{"AST":{"nodeType":"YulBlock","src":"7384:148:8","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7405:4:8","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nodeType":"YulLiteral","src":"7411:34:8","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7398:6:8"},"nodeType":"YulFunctionCall","src":"7398:48:8"},"nodeType":"YulExpressionStatement","src":"7398:48:8"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7466:4:8","type":"","value":"0x1c"},{"name":"hash","nodeType":"YulIdentifier","src":"7472:4:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7459:6:8"},"nodeType":"YulFunctionCall","src":"7459:18:8"},"nodeType":"YulExpressionStatement","src":"7459:18:8"},{"nodeType":"YulAssignment","src":"7490:32:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7511:4:8","type":"","value":"0x00"},{"kind":"number","nodeType":"YulLiteral","src":"7517:4:8","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"7501:9:8"},"nodeType":"YulFunctionCall","src":"7501:21:8"},"variableNames":[{"name":"message","nodeType":"YulIdentifier","src":"7490:7:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1695,"isOffset":false,"isSlot":false,"src":"7472:4:8","valueSize":1},{"declaration":1698,"isOffset":false,"isSlot":false,"src":"7490:7:8","valueSize":1}],"id":1700,"nodeType":"InlineAssembly","src":"7375:157:8"}]},"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"6858:279:8","text":" @dev Returns an Ethereum Signed Message, created from a `hash`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":1702,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7151:22:8","nodeType":"FunctionDefinition","parameters":{"id":1696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"mutability":"mutable","name":"hash","nameLocation":"7182:4:8","nodeType":"VariableDeclaration","scope":1702,"src":"7174:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7174:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7173:14:8"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1698,"mutability":"mutable","name":"message","nameLocation":"7219:7:8","nodeType":"VariableDeclaration","scope":1702,"src":"7211:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7211:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7210:17:8"},"scope":1757,"src":"7142:396:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1723,"nodeType":"Block","src":"7903:127:8","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":1713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7947:32:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"expression":{"id":1716,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"8009:1:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8011:6:8","memberName":"length","nodeType":"MemberAccess","src":"8009:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1714,"name":"StringsUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1391,"src":"7981:18:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StringsUpgradeable_$1391_$","typeString":"type(library StringsUpgradeable)"}},"id":1715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8000:8:8","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1221,"src":"7981:27:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7981:37:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1719,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"8020:1:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1711,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7930:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7934:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"7930:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7930:92:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1710,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7920:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7920:103:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1709,"id":1722,"nodeType":"Return","src":"7913:110:8"}]},"documentation":{"id":1703,"nodeType":"StructuredDocumentation","src":"7544:274:8","text":" @dev Returns an Ethereum Signed Message, created from `s`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":1724,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7832:22:8","nodeType":"FunctionDefinition","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1705,"mutability":"mutable","name":"s","nameLocation":"7868:1:8","nodeType":"VariableDeclaration","scope":1724,"src":"7855:14:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1704,"name":"bytes","nodeType":"ElementaryTypeName","src":"7855:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7854:16:8"},"returnParameters":{"id":1709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1724,"src":"7894:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7894:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7893:9:8"},"scope":1757,"src":"7823:207:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1735,"nodeType":"Block","src":"8476:290:8","statements":[{"AST":{"nodeType":"YulBlock","src":"8538:222:8","statements":[{"nodeType":"YulVariableDeclaration","src":"8552:22:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8569:4:8","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8563:5:8"},"nodeType":"YulFunctionCall","src":"8563:11:8"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"8556:3:8","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8594:3:8"},{"hexValue":"1901","kind":"string","nodeType":"YulLiteral","src":"8599:10:8","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8587:6:8"},"nodeType":"YulFunctionCall","src":"8587:23:8"},"nodeType":"YulExpressionStatement","src":"8587:23:8"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8634:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8639:4:8","type":"","value":"0x02"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8630:3:8"},"nodeType":"YulFunctionCall","src":"8630:14:8"},{"name":"domainSeparator","nodeType":"YulIdentifier","src":"8646:15:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8623:6:8"},"nodeType":"YulFunctionCall","src":"8623:39:8"},"nodeType":"YulExpressionStatement","src":"8623:39:8"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8686:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8691:4:8","type":"","value":"0x22"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8682:3:8"},"nodeType":"YulFunctionCall","src":"8682:14:8"},{"name":"structHash","nodeType":"YulIdentifier","src":"8698:10:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8675:6:8"},"nodeType":"YulFunctionCall","src":"8675:34:8"},"nodeType":"YulExpressionStatement","src":"8675:34:8"},{"nodeType":"YulAssignment","src":"8722:28:8","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8740:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8745:4:8","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"8730:9:8"},"nodeType":"YulFunctionCall","src":"8730:20:8"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"8722:4:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1732,"isOffset":false,"isSlot":false,"src":"8722:4:8","valueSize":1},{"declaration":1727,"isOffset":false,"isSlot":false,"src":"8646:15:8","valueSize":1},{"declaration":1729,"isOffset":false,"isSlot":false,"src":"8698:10:8","valueSize":1}],"id":1734,"nodeType":"InlineAssembly","src":"8529:231:8"}]},"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"8036:328:8","text":" @dev Returns an Ethereum Signed Typed Data, created from a\n `domainSeparator` and a `structHash`. This produces hash corresponding\n to the one signed with the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n JSON-RPC method as part of EIP-712.\n See {recover}."},"id":1736,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"8378:15:8","nodeType":"FunctionDefinition","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"domainSeparator","nameLocation":"8402:15:8","nodeType":"VariableDeclaration","scope":1736,"src":"8394:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1726,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8394:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"structHash","nameLocation":"8427:10:8","nodeType":"VariableDeclaration","scope":1736,"src":"8419:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8419:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8393:45:8"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"data","nameLocation":"8470:4:8","nodeType":"VariableDeclaration","scope":1736,"src":"8462:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8462:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8461:14:8"},"scope":1757,"src":"8369:397:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1755,"nodeType":"Block","src":"9081:80:8","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":1749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9125:10:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":1750,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"9137:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1751,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"9148:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1747,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9108:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9112:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"9108:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9108:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1746,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9098:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9098:56:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1745,"id":1754,"nodeType":"Return","src":"9091:63:8"}]},"documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"8772:193:8","text":" @dev Returns an Ethereum Signed Data with intended validator, created from a\n `validator` and `data` according to the version 0 of EIP-191.\n See {recover}."},"id":1756,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"8979:31:8","nodeType":"FunctionDefinition","parameters":{"id":1742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1739,"mutability":"mutable","name":"validator","nameLocation":"9019:9:8","nodeType":"VariableDeclaration","scope":1756,"src":"9011:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1738,"name":"address","nodeType":"ElementaryTypeName","src":"9011:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1741,"mutability":"mutable","name":"data","nameLocation":"9043:4:8","nodeType":"VariableDeclaration","scope":1756,"src":"9030:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1740,"name":"bytes","nodeType":"ElementaryTypeName","src":"9030:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9010:38:8"},"returnParameters":{"id":1745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1756,"src":"9072:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1743,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9072:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9071:9:8"},"scope":1757,"src":"8970:191:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1758,"src":"380:8783:8","usedErrors":[]}],"src":"112:9052:8"},"id":8},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[2623]},"id":2624,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1759,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"MathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1760,"nodeType":"StructuredDocumentation","src":"128:73:9","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2623,"linearizedBaseContracts":[2623],"name":"MathUpgradeable","nameLocation":"210:15:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"MathUpgradeable.Rounding","id":1764,"members":[{"id":1761,"name":"Down","nameLocation":"256:4:9","nodeType":"EnumValue","src":"256:4:9"},{"id":1762,"name":"Up","nameLocation":"298:2:9","nodeType":"EnumValue","src":"298:2:9"},{"id":1763,"name":"Zero","nameLocation":"329:4:9","nodeType":"EnumValue","src":"329:4:9"}],"name":"Rounding","nameLocation":"237:8:9","nodeType":"EnumDefinition","src":"232:122:9"},{"body":{"id":1781,"nodeType":"Block","src":"491:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1774,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"508:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1775,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1769,"src":"512:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"508:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1778,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1769,"src":"520:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"508:13:9","trueExpression":{"id":1777,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"516:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1773,"id":1780,"nodeType":"Return","src":"501:20:9"}]},"documentation":{"id":1765,"nodeType":"StructuredDocumentation","src":"360:59:9","text":" @dev Returns the largest of two numbers."},"id":1782,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"433:3:9","nodeType":"FunctionDefinition","parameters":{"id":1770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1767,"mutability":"mutable","name":"a","nameLocation":"445:1:9","nodeType":"VariableDeclaration","scope":1782,"src":"437:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1766,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1769,"mutability":"mutable","name":"b","nameLocation":"456:1:9","nodeType":"VariableDeclaration","scope":1782,"src":"448:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1768,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"436:22:9"},"returnParameters":{"id":1773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1782,"src":"482:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1771,"name":"uint256","nodeType":"ElementaryTypeName","src":"482:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"481:9:9"},"scope":2623,"src":"424:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1799,"nodeType":"Block","src":"666:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1792,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"683:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1793,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"687:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"683:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1796,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"695:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"683:13:9","trueExpression":{"id":1795,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"691:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1791,"id":1798,"nodeType":"Return","src":"676:20:9"}]},"documentation":{"id":1783,"nodeType":"StructuredDocumentation","src":"534:60:9","text":" @dev Returns the smallest of two numbers."},"id":1800,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"608:3:9","nodeType":"FunctionDefinition","parameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1785,"mutability":"mutable","name":"a","nameLocation":"620:1:9","nodeType":"VariableDeclaration","scope":1800,"src":"612:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1784,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1787,"mutability":"mutable","name":"b","nameLocation":"631:1:9","nodeType":"VariableDeclaration","scope":1800,"src":"623:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1786,"name":"uint256","nodeType":"ElementaryTypeName","src":"623:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"611:22:9"},"returnParameters":{"id":1791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1800,"src":"657:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1789,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"656:9:9"},"scope":2623,"src":"599:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1822,"nodeType":"Block","src":"887:82:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1810,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"942:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1811,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"946:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"942:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1813,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"941:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1814,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"952:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1815,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"956:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"951:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"961:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"951:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1809,"id":1821,"nodeType":"Return","src":"934:28:9"}]},"documentation":{"id":1801,"nodeType":"StructuredDocumentation","src":"709:102:9","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":1823,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"825:7:9","nodeType":"FunctionDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1803,"mutability":"mutable","name":"a","nameLocation":"841:1:9","nodeType":"VariableDeclaration","scope":1823,"src":"833:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1802,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1805,"mutability":"mutable","name":"b","nameLocation":"852:1:9","nodeType":"VariableDeclaration","scope":1823,"src":"844:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"844:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"832:22:9"},"returnParameters":{"id":1809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1808,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1823,"src":"878:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1807,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"877:9:9"},"scope":2623,"src":"816:153:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1847,"nodeType":"Block","src":"1239:123:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1833,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"1327:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1332:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1327:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1837,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"1341:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1341:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1840,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1340:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1841,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"1350:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1354:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1340:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1327:28:9","trueExpression":{"hexValue":"30","id":1836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1336:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1832,"id":1846,"nodeType":"Return","src":"1320:35:9"}]},"documentation":{"id":1824,"nodeType":"StructuredDocumentation","src":"975:188:9","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":1848,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1177:7:9","nodeType":"FunctionDefinition","parameters":{"id":1829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"a","nameLocation":"1193:1:9","nodeType":"VariableDeclaration","scope":1848,"src":"1185:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1825,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1828,"mutability":"mutable","name":"b","nameLocation":"1204:1:9","nodeType":"VariableDeclaration","scope":1848,"src":"1196:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1196:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1184:22:9"},"returnParameters":{"id":1832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1848,"src":"1230:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1830,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:9"},"scope":2623,"src":"1168:194:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1970,"nodeType":"Block","src":"1776:4115:9","statements":[{"id":1969,"nodeType":"UncheckedBlock","src":"1786:4099:9","statements":[{"assignments":[1861],"declarations":[{"constant":false,"id":1861,"mutability":"mutable","name":"prod0","nameLocation":"2115:5:9","nodeType":"VariableDeclaration","scope":1969,"src":"2107:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1860,"name":"uint256","nodeType":"ElementaryTypeName","src":"2107:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1862,"nodeType":"VariableDeclarationStatement","src":"2107:13:9"},{"assignments":[1864],"declarations":[{"constant":false,"id":1864,"mutability":"mutable","name":"prod1","nameLocation":"2187:5:9","nodeType":"VariableDeclaration","scope":1969,"src":"2179:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1863,"name":"uint256","nodeType":"ElementaryTypeName","src":"2179:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1865,"nodeType":"VariableDeclarationStatement","src":"2179:13:9"},{"AST":{"nodeType":"YulBlock","src":"2259:157:9","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:30:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2294:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2297:1:9"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2304:1:9","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2300:3:9"},"nodeType":"YulFunctionCall","src":"2300:6:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2287:6:9"},"nodeType":"YulFunctionCall","src":"2287:20:9"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2281:2:9","type":""}]},{"nodeType":"YulAssignment","src":"2324:18:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2337:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2340:1:9"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2333:3:9"},"nodeType":"YulFunctionCall","src":"2333:9:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2324:5:9"}]},{"nodeType":"YulAssignment","src":"2359:43:9","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2376:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2380:5:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2372:3:9"},"nodeType":"YulFunctionCall","src":"2372:14:9"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2391:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2395:5:9"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2388:2:9"},"nodeType":"YulFunctionCall","src":"2388:13:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2368:3:9"},"nodeType":"YulFunctionCall","src":"2368:34:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2359:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2324:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2380:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2395:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"2359:5:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"2294:1:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"2337:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"2297:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"2340:1:9","valueSize":1}],"id":1866,"nodeType":"InlineAssembly","src":"2250:166:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1867,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2497:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2506:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2497:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1875,"nodeType":"IfStatement","src":"2493:368:9","trueBody":{"id":1874,"nodeType":"Block","src":"2509:352:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1870,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"2827:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1871,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"2835:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2827:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1859,"id":1873,"nodeType":"Return","src":"2820:26:9"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1877,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"2971:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1878,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2985:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2971:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":1880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2992:23:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":1876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2963:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2963:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1882,"nodeType":"ExpressionStatement","src":"2963:53:9"},{"assignments":[1884],"declarations":[{"constant":false,"id":1884,"mutability":"mutable","name":"remainder","nameLocation":"3280:9:9","nodeType":"VariableDeclaration","scope":1969,"src":"3272:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1883,"name":"uint256","nodeType":"ElementaryTypeName","src":"3272:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1885,"nodeType":"VariableDeclarationStatement","src":"3272:17:9"},{"AST":{"nodeType":"YulBlock","src":"3312:291:9","statements":[{"nodeType":"YulAssignment","src":"3381:38:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3401:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"3404:1:9"},{"name":"denominator","nodeType":"YulIdentifier","src":"3407:11:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3394:6:9"},"nodeType":"YulFunctionCall","src":"3394:25:9"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3381:9:9"}]},{"nodeType":"YulAssignment","src":"3501:41:9","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3514:5:9"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3524:9:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"3535:5:9"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3521:2:9"},"nodeType":"YulFunctionCall","src":"3521:20:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3510:3:9"},"nodeType":"YulFunctionCall","src":"3510:32:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3501:5:9"}]},{"nodeType":"YulAssignment","src":"3559:30:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3572:5:9"},{"name":"remainder","nodeType":"YulIdentifier","src":"3579:9:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3568:3:9"},"nodeType":"YulFunctionCall","src":"3568:21:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3559:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1855,"isOffset":false,"isSlot":false,"src":"3407:11:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3535:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3559:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3572:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"3501:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"3514:5:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3381:9:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3524:9:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3579:9:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"3401:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"3404:1:9","valueSize":1}],"id":1886,"nodeType":"InlineAssembly","src":"3303:300:9"},{"assignments":[1888],"declarations":[{"constant":false,"id":1888,"mutability":"mutable","name":"twos","nameLocation":"3918:4:9","nodeType":"VariableDeclaration","scope":1969,"src":"3910:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1887,"name":"uint256","nodeType":"ElementaryTypeName","src":"3910:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1896,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1889,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"3925:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3940:12:9","subExpression":{"id":1890,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"3941:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3955:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3940:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3939:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3925:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3910:47:9"},{"AST":{"nodeType":"YulBlock","src":"3980:362:9","statements":[{"nodeType":"YulAssignment","src":"4045:37:9","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4064:11:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4077:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4060:3:9"},"nodeType":"YulFunctionCall","src":"4060:22:9"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4045:11:9"}]},{"nodeType":"YulAssignment","src":"4149:25:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4162:5:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4169:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4158:3:9"},"nodeType":"YulFunctionCall","src":"4158:16:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4149:5:9"}]},{"nodeType":"YulAssignment","src":"4289:39:9","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4309:1:9","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4312:4:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4305:3:9"},"nodeType":"YulFunctionCall","src":"4305:12:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4319:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4301:3:9"},"nodeType":"YulFunctionCall","src":"4301:23:9"},{"kind":"number","nodeType":"YulLiteral","src":"4326:1:9","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4297:3:9"},"nodeType":"YulFunctionCall","src":"4297:31:9"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4289:4:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1855,"isOffset":false,"isSlot":false,"src":"4045:11:9","valueSize":1},{"declaration":1855,"isOffset":false,"isSlot":false,"src":"4064:11:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"4149:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"4162:5:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4077:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4169:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4289:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4312:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4319:4:9","valueSize":1}],"id":1897,"nodeType":"InlineAssembly","src":"3971:371:9"},{"expression":{"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1898,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"4408:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1899,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"4417:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1900,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1888,"src":"4425:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4417:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4408:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1903,"nodeType":"ExpressionStatement","src":"4408:21:9"},{"assignments":[1905],"declarations":[{"constant":false,"id":1905,"mutability":"mutable","name":"inverse","nameLocation":"4755:7:9","nodeType":"VariableDeclaration","scope":1969,"src":"4747:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1904,"name":"uint256","nodeType":"ElementaryTypeName","src":"4747:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1912,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4766:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1907,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"4770:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4766:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4765:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4785:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4765:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4747:39:9"},{"expression":{"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1913,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5003:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5014:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1915,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5018:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1916,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5032:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5018:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5014:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1920,"nodeType":"ExpressionStatement","src":"5003:36:9"},{"expression":{"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1921,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5072:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5083:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1923,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5087:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1924,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5101:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5087:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5083:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1928,"nodeType":"ExpressionStatement","src":"5072:36:9"},{"expression":{"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1929,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5142:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5153:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1931,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5157:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1932,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5157:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5153:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1936,"nodeType":"ExpressionStatement","src":"5142:36:9"},{"expression":{"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1937,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5212:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5223:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1939,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5227:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1940,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5241:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5227:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5223:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1944,"nodeType":"ExpressionStatement","src":"5212:36:9"},{"expression":{"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1945,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5282:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5293:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1947,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5297:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1948,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5311:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5297:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5293:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1952,"nodeType":"ExpressionStatement","src":"5282:36:9"},{"expression":{"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1953,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5353:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5364:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1955,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5368:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1956,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5382:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5368:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5364:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1960,"nodeType":"ExpressionStatement","src":"5353:36:9"},{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1961,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"5823:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1962,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"5832:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1963,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5840:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5832:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5823:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"5823:24:9"},{"expression":{"id":1967,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"5868:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1859,"id":1968,"nodeType":"Return","src":"5861:13:9"}]}]},"documentation":{"id":1849,"nodeType":"StructuredDocumentation","src":"1368:305:9","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1971,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1687:6:9","nodeType":"FunctionDefinition","parameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"x","nameLocation":"1702:1:9","nodeType":"VariableDeclaration","scope":1971,"src":"1694:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1853,"mutability":"mutable","name":"y","nameLocation":"1713:1:9","nodeType":"VariableDeclaration","scope":1971,"src":"1705:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1855,"mutability":"mutable","name":"denominator","nameLocation":"1724:11:9","nodeType":"VariableDeclaration","scope":1971,"src":"1716:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1693:43:9"},"returnParameters":{"id":1859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1858,"mutability":"mutable","name":"result","nameLocation":"1768:6:9","nodeType":"VariableDeclaration","scope":1971,"src":"1760:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1857,"name":"uint256","nodeType":"ElementaryTypeName","src":"1760:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:16:9"},"scope":2623,"src":"1678:4213:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2014,"nodeType":"Block","src":"6133:189:9","statements":[{"assignments":[1987],"declarations":[{"constant":false,"id":1987,"mutability":"mutable","name":"result","nameLocation":"6151:6:9","nodeType":"VariableDeclaration","scope":2014,"src":"6143:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1986,"name":"uint256","nodeType":"ElementaryTypeName","src":"6143:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1993,"initialValue":{"arguments":[{"id":1989,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"6167:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1990,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"6170:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1991,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"6173:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1988,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1971,2015],"referencedDeclaration":1971,"src":"6160:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6160:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6143:42:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1994,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"6199:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1995,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"6211:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":1996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6220:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"6211:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"6199:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1999,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"6233:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2000,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"6236:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2001,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"6239:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1998,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"6226:6:9","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6226:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6254:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6226:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6199:56:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2011,"nodeType":"IfStatement","src":"6195:98:9","trueBody":{"id":2010,"nodeType":"Block","src":"6257:36:9","statements":[{"expression":{"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2006,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"6271:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6281:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6271:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2009,"nodeType":"ExpressionStatement","src":"6271:11:9"}]}},{"expression":{"id":2012,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"6309:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1985,"id":2013,"nodeType":"Return","src":"6302:13:9"}]},"documentation":{"id":1972,"nodeType":"StructuredDocumentation","src":"5897:121:9","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2015,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6032:6:9","nodeType":"FunctionDefinition","parameters":{"id":1982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1974,"mutability":"mutable","name":"x","nameLocation":"6047:1:9","nodeType":"VariableDeclaration","scope":2015,"src":"6039:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1973,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1976,"mutability":"mutable","name":"y","nameLocation":"6058:1:9","nodeType":"VariableDeclaration","scope":2015,"src":"6050:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1975,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1978,"mutability":"mutable","name":"denominator","nameLocation":"6069:11:9","nodeType":"VariableDeclaration","scope":2015,"src":"6061:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"6061:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1981,"mutability":"mutable","name":"rounding","nameLocation":"6091:8:9","nodeType":"VariableDeclaration","scope":2015,"src":"6082:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":1980,"nodeType":"UserDefinedTypeName","pathNode":{"id":1979,"name":"Rounding","nameLocations":["6082:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"6082:8:9"},"referencedDeclaration":1764,"src":"6082:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"6038:62:9"},"returnParameters":{"id":1985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"6124:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1983,"name":"uint256","nodeType":"ElementaryTypeName","src":"6124:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6123:9:9"},"scope":2623,"src":"6023:299:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2126,"nodeType":"Block","src":"6598:1585:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2023,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"6612:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6617:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6612:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2029,"nodeType":"IfStatement","src":"6608:45:9","trueBody":{"id":2028,"nodeType":"Block","src":"6620:33:9","statements":[{"expression":{"hexValue":"30","id":2026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6641:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2022,"id":2027,"nodeType":"Return","src":"6634:8:9"}]}},{"assignments":[2031],"declarations":[{"constant":false,"id":2031,"mutability":"mutable","name":"result","nameLocation":"7340:6:9","nodeType":"VariableDeclaration","scope":2126,"src":"7332:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"7332:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2040,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7349:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2034,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7360:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2033,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2295,2331],"referencedDeclaration":2295,"src":"7355:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7355:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7355:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2038,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7354:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7349:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7332:36:9"},{"id":2125,"nodeType":"UncheckedBlock","src":"7769:408:9","statements":[{"expression":{"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7793:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2042,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7803:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2043,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7812:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2044,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7816:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7812:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7803:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2047,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7827:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7802:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7793:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2051,"nodeType":"ExpressionStatement","src":"7793:35:9"},{"expression":{"id":2061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2052,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7842:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2053,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7852:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2054,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7861:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2055,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7865:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7861:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7852:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7851:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7876:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7851:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7842:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2062,"nodeType":"ExpressionStatement","src":"7842:35:9"},{"expression":{"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2063,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7891:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2064,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7901:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2065,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7910:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2066,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7914:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7910:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7901:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7900:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7925:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7900:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7891:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2073,"nodeType":"ExpressionStatement","src":"7891:35:9"},{"expression":{"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2074,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7940:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7950:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2076,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7959:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2077,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7963:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7959:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7950:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2080,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7949:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7974:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7949:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7940:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2084,"nodeType":"ExpressionStatement","src":"7940:35:9"},{"expression":{"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2085,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7989:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2086,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7999:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2087,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8008:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2088,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8012:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8008:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7999:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7998:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8023:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7998:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7989:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2095,"nodeType":"ExpressionStatement","src":"7989:35:9"},{"expression":{"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2096,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8038:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2097,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8048:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2098,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8057:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2099,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8061:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8057:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8048:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8047:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8072:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8047:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8038:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2106,"nodeType":"ExpressionStatement","src":"8038:35:9"},{"expression":{"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2107,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8087:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8097:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8106:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8110:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8106:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8096:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8121:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8096:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8087:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2117,"nodeType":"ExpressionStatement","src":"8087:35:9"},{"expression":{"arguments":[{"id":2119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8147:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2120,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8155:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2121,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8159:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8155:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2118,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"8143:3:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8143:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2022,"id":2124,"nodeType":"Return","src":"8136:30:9"}]}]},"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"6328:208:9","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":2127,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6550:4:9","nodeType":"FunctionDefinition","parameters":{"id":2019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"a","nameLocation":"6563:1:9","nodeType":"VariableDeclaration","scope":2127,"src":"6555:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"6555:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6554:11:9"},"returnParameters":{"id":2022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2127,"src":"6589:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2020,"name":"uint256","nodeType":"ElementaryTypeName","src":"6589:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6588:9:9"},"scope":2623,"src":"6541:1642:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2162,"nodeType":"Block","src":"8359:161:9","statements":[{"id":2161,"nodeType":"UncheckedBlock","src":"8369:145:9","statements":[{"assignments":[2139],"declarations":[{"constant":false,"id":2139,"mutability":"mutable","name":"result","nameLocation":"8401:6:9","nodeType":"VariableDeclaration","scope":2161,"src":"8393:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2138,"name":"uint256","nodeType":"ElementaryTypeName","src":"8393:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2143,"initialValue":{"arguments":[{"id":2141,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"8415:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2140,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2127,2163],"referencedDeclaration":2127,"src":"8410:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8410:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8393:24:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2144,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8438:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2145,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2133,"src":"8448:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2146,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"8460:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8469:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"8460:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"8448:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8475:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2150,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8484:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2152,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"8493:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8448:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8501:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8448:54:9","trueExpression":{"hexValue":"31","id":2155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8497:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8447:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8438:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2137,"id":2160,"nodeType":"Return","src":"8431:72:9"}]}]},"documentation":{"id":2128,"nodeType":"StructuredDocumentation","src":"8189:89:9","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":2163,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8292:4:9","nodeType":"FunctionDefinition","parameters":{"id":2134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2130,"mutability":"mutable","name":"a","nameLocation":"8305:1:9","nodeType":"VariableDeclaration","scope":2163,"src":"8297:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2129,"name":"uint256","nodeType":"ElementaryTypeName","src":"8297:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2133,"mutability":"mutable","name":"rounding","nameLocation":"8317:8:9","nodeType":"VariableDeclaration","scope":2163,"src":"8308:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2132,"nodeType":"UserDefinedTypeName","pathNode":{"id":2131,"name":"Rounding","nameLocations":["8308:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"8308:8:9"},"referencedDeclaration":1764,"src":"8308:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"8296:30:9"},"returnParameters":{"id":2137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2163,"src":"8350:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2135,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8349:9:9"},"scope":2623,"src":"8283:237:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2294,"nodeType":"Block","src":"8705:922:9","statements":[{"assignments":[2172],"declarations":[{"constant":false,"id":2172,"mutability":"mutable","name":"result","nameLocation":"8723:6:9","nodeType":"VariableDeclaration","scope":2294,"src":"8715:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"8715:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2174,"initialValue":{"hexValue":"30","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8732:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8715:18:9"},{"id":2291,"nodeType":"UncheckedBlock","src":"8743:855:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8771:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8780:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8771:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8786:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8771:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2189,"nodeType":"IfStatement","src":"8767:99:9","trueBody":{"id":2188,"nodeType":"Block","src":"8789:77:9","statements":[{"expression":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8807:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8817:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8807:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2183,"nodeType":"ExpressionStatement","src":"8807:13:9"},{"expression":{"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"8838:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8848:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8838:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2187,"nodeType":"ExpressionStatement","src":"8838:13:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8883:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8892:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8883:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8897:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8883:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2204,"nodeType":"IfStatement","src":"8879:96:9","trueBody":{"id":2203,"nodeType":"Block","src":"8900:75:9","statements":[{"expression":{"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8918:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8918:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2198,"nodeType":"ExpressionStatement","src":"8918:12:9"},{"expression":{"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"8948:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8958:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8948:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2202,"nodeType":"ExpressionStatement","src":"8948:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8992:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9001:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8992:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9006:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8992:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2219,"nodeType":"IfStatement","src":"8988:96:9","trueBody":{"id":2218,"nodeType":"Block","src":"9009:75:9","statements":[{"expression":{"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9027:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9037:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9027:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2213,"nodeType":"ExpressionStatement","src":"9027:12:9"},{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9057:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9067:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9057:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"9057:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9101:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9110:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9101:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9115:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9101:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2234,"nodeType":"IfStatement","src":"9097:96:9","trueBody":{"id":2233,"nodeType":"Block","src":"9118:75:9","statements":[{"expression":{"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2225,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9136:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9146:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9136:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2228,"nodeType":"ExpressionStatement","src":"9136:12:9"},{"expression":{"id":2231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2229,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9166:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9176:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9166:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2232,"nodeType":"ExpressionStatement","src":"9166:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2235,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9210:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9219:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9210:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9223:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9210:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2249,"nodeType":"IfStatement","src":"9206:93:9","trueBody":{"id":2248,"nodeType":"Block","src":"9226:73:9","statements":[{"expression":{"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2240,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9244:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9254:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9244:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2243,"nodeType":"ExpressionStatement","src":"9244:11:9"},{"expression":{"id":2246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2244,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9273:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9283:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9273:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2247,"nodeType":"ExpressionStatement","src":"9273:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9316:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9325:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9316:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9329:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9316:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2264,"nodeType":"IfStatement","src":"9312:93:9","trueBody":{"id":2263,"nodeType":"Block","src":"9332:73:9","statements":[{"expression":{"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9350:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9360:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9350:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2258,"nodeType":"ExpressionStatement","src":"9350:11:9"},{"expression":{"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2259,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9379:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9389:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9379:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2262,"nodeType":"ExpressionStatement","src":"9379:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2265,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9422:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9431:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9422:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9435:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9422:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"9418:93:9","trueBody":{"id":2278,"nodeType":"Block","src":"9438:73:9","statements":[{"expression":{"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9456:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":2271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9466:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9456:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2273,"nodeType":"ExpressionStatement","src":"9456:11:9"},{"expression":{"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2274,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9485:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9495:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9485:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2277,"nodeType":"ExpressionStatement","src":"9485:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9528:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9537:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9528:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9541:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9528:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2290,"nodeType":"IfStatement","src":"9524:64:9","trueBody":{"id":2289,"nodeType":"Block","src":"9544:44:9","statements":[{"expression":{"id":2287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2285,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9562:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9572:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9562:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2288,"nodeType":"ExpressionStatement","src":"9562:11:9"}]}}]},{"expression":{"id":2292,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9614:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2170,"id":2293,"nodeType":"Return","src":"9607:13:9"}]},"documentation":{"id":2164,"nodeType":"StructuredDocumentation","src":"8526:113:9","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8653:4:9","nodeType":"FunctionDefinition","parameters":{"id":2167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2166,"mutability":"mutable","name":"value","nameLocation":"8666:5:9","nodeType":"VariableDeclaration","scope":2295,"src":"8658:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2165,"name":"uint256","nodeType":"ElementaryTypeName","src":"8658:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8657:15:9"},"returnParameters":{"id":2170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2295,"src":"8696:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2168,"name":"uint256","nodeType":"ElementaryTypeName","src":"8696:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8695:9:9"},"scope":2623,"src":"8644:983:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2330,"nodeType":"Block","src":"9860:165:9","statements":[{"id":2329,"nodeType":"UncheckedBlock","src":"9870:149:9","statements":[{"assignments":[2307],"declarations":[{"constant":false,"id":2307,"mutability":"mutable","name":"result","nameLocation":"9902:6:9","nodeType":"VariableDeclaration","scope":2329,"src":"9894:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"9894:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2311,"initialValue":{"arguments":[{"id":2309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9916:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2308,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2295,2331],"referencedDeclaration":2295,"src":"9911:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9911:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9894:28:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2312,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"9943:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2313,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"9953:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2314,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"9965:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9974:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"9965:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"9953:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9980:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2318,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"9985:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9994:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9953:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10006:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9953:54:9","trueExpression":{"hexValue":"31","id":2323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10002:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2326,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9952:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9943:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2305,"id":2328,"nodeType":"Return","src":"9936:72:9"}]}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"9633:142:9","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2331,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9789:4:9","nodeType":"FunctionDefinition","parameters":{"id":2302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"value","nameLocation":"9802:5:9","nodeType":"VariableDeclaration","scope":2331,"src":"9794:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2297,"name":"uint256","nodeType":"ElementaryTypeName","src":"9794:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2301,"mutability":"mutable","name":"rounding","nameLocation":"9818:8:9","nodeType":"VariableDeclaration","scope":2331,"src":"9809:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2300,"nodeType":"UserDefinedTypeName","pathNode":{"id":2299,"name":"Rounding","nameLocations":["9809:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"9809:8:9"},"referencedDeclaration":1764,"src":"9809:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"9793:34:9"},"returnParameters":{"id":2305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2331,"src":"9851:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2303,"name":"uint256","nodeType":"ElementaryTypeName","src":"9851:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9850:9:9"},"scope":2623,"src":"9780:245:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2459,"nodeType":"Block","src":"10212:854:9","statements":[{"assignments":[2340],"declarations":[{"constant":false,"id":2340,"mutability":"mutable","name":"result","nameLocation":"10230:6:9","nodeType":"VariableDeclaration","scope":2459,"src":"10222:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2339,"name":"uint256","nodeType":"ElementaryTypeName","src":"10222:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2342,"initialValue":{"hexValue":"30","id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10239:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10222:18:9"},{"id":2456,"nodeType":"UncheckedBlock","src":"10250:787:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10278:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10287:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10293:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10287:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10278:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2359,"nodeType":"IfStatement","src":"10274:103:9","trueBody":{"id":2358,"nodeType":"Block","src":"10297:80:9","statements":[{"expression":{"id":2352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10315:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10324:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10330:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10324:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10315:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2353,"nodeType":"ExpressionStatement","src":"10315:17:9"},{"expression":{"id":2356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2354,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10350:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10360:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10350:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2357,"nodeType":"ExpressionStatement","src":"10350:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2360,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10394:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10403:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10409:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10403:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10394:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2376,"nodeType":"IfStatement","src":"10390:103:9","trueBody":{"id":2375,"nodeType":"Block","src":"10413:80:9","statements":[{"expression":{"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2365,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10431:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10440:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10446:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10440:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10431:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2370,"nodeType":"ExpressionStatement","src":"10431:17:9"},{"expression":{"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2371,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10466:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10476:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10466:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2374,"nodeType":"ExpressionStatement","src":"10466:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10510:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10519:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10525:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10519:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10510:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2393,"nodeType":"IfStatement","src":"10506:103:9","trueBody":{"id":2392,"nodeType":"Block","src":"10529:80:9","statements":[{"expression":{"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2382,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10547:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10556:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10562:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10556:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10547:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2387,"nodeType":"ExpressionStatement","src":"10547:17:9"},{"expression":{"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2388,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10582:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10592:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10582:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2391,"nodeType":"ExpressionStatement","src":"10582:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10626:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10635:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10641:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10635:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10626:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2410,"nodeType":"IfStatement","src":"10622:100:9","trueBody":{"id":2409,"nodeType":"Block","src":"10644:78:9","statements":[{"expression":{"id":2403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10662:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10671:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10677:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10671:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10662:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2404,"nodeType":"ExpressionStatement","src":"10662:16:9"},{"expression":{"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2405,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10696:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10706:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10696:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2408,"nodeType":"ExpressionStatement","src":"10696:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10739:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10754:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10748:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10739:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2427,"nodeType":"IfStatement","src":"10735:100:9","trueBody":{"id":2426,"nodeType":"Block","src":"10757:78:9","statements":[{"expression":{"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10775:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10784:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10790:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10784:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10775:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2421,"nodeType":"ExpressionStatement","src":"10775:16:9"},{"expression":{"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2422,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10809:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10819:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10809:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2425,"nodeType":"ExpressionStatement","src":"10809:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10852:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10861:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10867:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10861:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10852:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2444,"nodeType":"IfStatement","src":"10848:100:9","trueBody":{"id":2443,"nodeType":"Block","src":"10870:78:9","statements":[{"expression":{"id":2437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2433,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10888:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10897:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10897:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10888:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2438,"nodeType":"ExpressionStatement","src":"10888:16:9"},{"expression":{"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2439,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10922:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10932:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10922:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2442,"nodeType":"ExpressionStatement","src":"10922:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10965:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10974:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10980:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10974:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10965:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2455,"nodeType":"IfStatement","src":"10961:66:9","trueBody":{"id":2454,"nodeType":"Block","src":"10983:44:9","statements":[{"expression":{"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2450,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"11001:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11011:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11001:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2453,"nodeType":"ExpressionStatement","src":"11001:11:9"}]}}]},{"expression":{"id":2457,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"11053:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2338,"id":2458,"nodeType":"Return","src":"11046:13:9"}]},"documentation":{"id":2332,"nodeType":"StructuredDocumentation","src":"10031:114:9","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2460,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10159:5:9","nodeType":"FunctionDefinition","parameters":{"id":2335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2334,"mutability":"mutable","name":"value","nameLocation":"10173:5:9","nodeType":"VariableDeclaration","scope":2460,"src":"10165:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2333,"name":"uint256","nodeType":"ElementaryTypeName","src":"10165:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10164:15:9"},"returnParameters":{"id":2338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2460,"src":"10203:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2336,"name":"uint256","nodeType":"ElementaryTypeName","src":"10203:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10202:9:9"},"scope":2623,"src":"10150:916:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2495,"nodeType":"Block","src":"11301:167:9","statements":[{"id":2494,"nodeType":"UncheckedBlock","src":"11311:151:9","statements":[{"assignments":[2472],"declarations":[{"constant":false,"id":2472,"mutability":"mutable","name":"result","nameLocation":"11343:6:9","nodeType":"VariableDeclaration","scope":2494,"src":"11335:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11335:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2476,"initialValue":{"arguments":[{"id":2474,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"11358:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2473,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2460,2496],"referencedDeclaration":2460,"src":"11352:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11352:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11335:29:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2477,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"11385:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2478,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"11395:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2479,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"11407:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11416:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"11407:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"11395:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11422:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2483,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"11428:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2485,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"11437:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11395:47:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11449:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11395:55:9","trueExpression":{"hexValue":"31","id":2488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11445:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2491,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11394:57:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11385:66:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2470,"id":2493,"nodeType":"Return","src":"11378:73:9"}]}]},"documentation":{"id":2461,"nodeType":"StructuredDocumentation","src":"11072:143:9","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2496,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11229:5:9","nodeType":"FunctionDefinition","parameters":{"id":2467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2463,"mutability":"mutable","name":"value","nameLocation":"11243:5:9","nodeType":"VariableDeclaration","scope":2496,"src":"11235:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2462,"name":"uint256","nodeType":"ElementaryTypeName","src":"11235:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2466,"mutability":"mutable","name":"rounding","nameLocation":"11259:8:9","nodeType":"VariableDeclaration","scope":2496,"src":"11250:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2465,"nodeType":"UserDefinedTypeName","pathNode":{"id":2464,"name":"Rounding","nameLocations":["11250:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"11250:8:9"},"referencedDeclaration":1764,"src":"11250:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"11234:34:9"},"returnParameters":{"id":2470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2496,"src":"11292:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2468,"name":"uint256","nodeType":"ElementaryTypeName","src":"11292:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11291:9:9"},"scope":2623,"src":"11220:248:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2582,"nodeType":"Block","src":"11782:600:9","statements":[{"assignments":[2505],"declarations":[{"constant":false,"id":2505,"mutability":"mutable","name":"result","nameLocation":"11800:6:9","nodeType":"VariableDeclaration","scope":2582,"src":"11792:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2504,"name":"uint256","nodeType":"ElementaryTypeName","src":"11792:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2507,"initialValue":{"hexValue":"30","id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11809:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11792:18:9"},{"id":2579,"nodeType":"UncheckedBlock","src":"11820:533:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11848:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11857:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11848:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11863:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11848:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2522,"nodeType":"IfStatement","src":"11844:98:9","trueBody":{"id":2521,"nodeType":"Block","src":"11866:76:9","statements":[{"expression":{"id":2515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11884:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11894:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11884:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2516,"nodeType":"ExpressionStatement","src":"11884:13:9"},{"expression":{"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2517,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"11915:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11925:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11915:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2520,"nodeType":"ExpressionStatement","src":"11915:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11959:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11959:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11973:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11959:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2537,"nodeType":"IfStatement","src":"11955:95:9","trueBody":{"id":2536,"nodeType":"Block","src":"11976:74:9","statements":[{"expression":{"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2528,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11994:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12004:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11994:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2531,"nodeType":"ExpressionStatement","src":"11994:12:9"},{"expression":{"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2532,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12024:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12034:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12024:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2535,"nodeType":"ExpressionStatement","src":"12024:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2538,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12067:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12076:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12067:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12081:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12067:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2552,"nodeType":"IfStatement","src":"12063:95:9","trueBody":{"id":2551,"nodeType":"Block","src":"12084:74:9","statements":[{"expression":{"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2543,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12102:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12112:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12102:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2546,"nodeType":"ExpressionStatement","src":"12102:12:9"},{"expression":{"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2547,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12132:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12142:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12132:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2550,"nodeType":"ExpressionStatement","src":"12132:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12175:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12184:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12175:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12189:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12175:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2567,"nodeType":"IfStatement","src":"12171:95:9","trueBody":{"id":2566,"nodeType":"Block","src":"12192:74:9","statements":[{"expression":{"id":2560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12210:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12220:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12210:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2561,"nodeType":"ExpressionStatement","src":"12210:12:9"},{"expression":{"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2562,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12240:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12250:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12240:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2565,"nodeType":"ExpressionStatement","src":"12240:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12283:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12292:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12283:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12283:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2578,"nodeType":"IfStatement","src":"12279:64:9","trueBody":{"id":2577,"nodeType":"Block","src":"12299:44:9","statements":[{"expression":{"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2573,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12317:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12327:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12317:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2576,"nodeType":"ExpressionStatement","src":"12317:11:9"}]}}]},{"expression":{"id":2580,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12369:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2503,"id":2581,"nodeType":"Return","src":"12362:13:9"}]},"documentation":{"id":2497,"nodeType":"StructuredDocumentation","src":"11474:240:9","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":2583,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11728:6:9","nodeType":"FunctionDefinition","parameters":{"id":2500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2499,"mutability":"mutable","name":"value","nameLocation":"11743:5:9","nodeType":"VariableDeclaration","scope":2583,"src":"11735:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2498,"name":"uint256","nodeType":"ElementaryTypeName","src":"11735:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11734:15:9"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2583,"src":"11773:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2501,"name":"uint256","nodeType":"ElementaryTypeName","src":"11773:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11772:9:9"},"scope":2623,"src":"11719:663:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2621,"nodeType":"Block","src":"12619:174:9","statements":[{"id":2620,"nodeType":"UncheckedBlock","src":"12629:158:9","statements":[{"assignments":[2595],"declarations":[{"constant":false,"id":2595,"mutability":"mutable","name":"result","nameLocation":"12661:6:9","nodeType":"VariableDeclaration","scope":2620,"src":"12653:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2594,"name":"uint256","nodeType":"ElementaryTypeName","src":"12653:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2599,"initialValue":{"arguments":[{"id":2597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"12677:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2596,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[2583,2622],"referencedDeclaration":2583,"src":"12670:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12670:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12653:30:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2600,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"12704:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2601,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"12714:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2602,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"12726:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12735:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"12726:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"12714:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2606,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"12747:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12757:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12747:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2609,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12746:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"12762:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12714:53:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12774:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12714:61:9","trueExpression":{"hexValue":"31","id":2614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2617,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12713:63:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12704:72:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2593,"id":2619,"nodeType":"Return","src":"12697:79:9"}]}]},"documentation":{"id":2584,"nodeType":"StructuredDocumentation","src":"12388:144:9","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2622,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12546:6:9","nodeType":"FunctionDefinition","parameters":{"id":2590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2586,"mutability":"mutable","name":"value","nameLocation":"12561:5:9","nodeType":"VariableDeclaration","scope":2622,"src":"12553:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2585,"name":"uint256","nodeType":"ElementaryTypeName","src":"12553:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2589,"mutability":"mutable","name":"rounding","nameLocation":"12577:8:9","nodeType":"VariableDeclaration","scope":2622,"src":"12568:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2588,"nodeType":"UserDefinedTypeName","pathNode":{"id":2587,"name":"Rounding","nameLocations":["12568:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"12568:8:9"},"referencedDeclaration":1764,"src":"12568:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"12552:34:9"},"returnParameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2622,"src":"12610:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"12610:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12609:9:9"},"scope":2623,"src":"12537:256:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2624,"src":"202:12593:9","usedErrors":[]}],"src":"103:12693:9"},"id":9},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol","exportedSymbols":{"SignedMathUpgradeable":[2728]},"id":2729,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2625,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2626,"nodeType":"StructuredDocumentation","src":"134:80:10","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2728,"linearizedBaseContracts":[2728],"name":"SignedMathUpgradeable","nameLocation":"223:21:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":2643,"nodeType":"Block","src":"386:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2636,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"403:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2637,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"407:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"403:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2640,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"415:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"403:13:10","trueExpression":{"id":2639,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"411:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2635,"id":2642,"nodeType":"Return","src":"396:20:10"}]},"documentation":{"id":2627,"nodeType":"StructuredDocumentation","src":"251:66:10","text":" @dev Returns the largest of two signed numbers."},"id":2644,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"331:3:10","nodeType":"FunctionDefinition","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2629,"mutability":"mutable","name":"a","nameLocation":"342:1:10","nodeType":"VariableDeclaration","scope":2644,"src":"335:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2628,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"b","nameLocation":"352:1:10","nodeType":"VariableDeclaration","scope":2644,"src":"345:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2630,"name":"int256","nodeType":"ElementaryTypeName","src":"345:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"334:20:10"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2644,"src":"378:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2633,"name":"int256","nodeType":"ElementaryTypeName","src":"378:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"377:8:10"},"scope":2728,"src":"322:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2661,"nodeType":"Block","src":"565:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2654,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"582:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2655,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"586:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"582:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2658,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"594:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"582:13:10","trueExpression":{"id":2657,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"590:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2653,"id":2660,"nodeType":"Return","src":"575:20:10"}]},"documentation":{"id":2645,"nodeType":"StructuredDocumentation","src":"429:67:10","text":" @dev Returns the smallest of two signed numbers."},"id":2662,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"510:3:10","nodeType":"FunctionDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2647,"mutability":"mutable","name":"a","nameLocation":"521:1:10","nodeType":"VariableDeclaration","scope":2662,"src":"514:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2646,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2649,"mutability":"mutable","name":"b","nameLocation":"531:1:10","nodeType":"VariableDeclaration","scope":2662,"src":"524:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2648,"name":"int256","nodeType":"ElementaryTypeName","src":"524:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"513:20:10"},"returnParameters":{"id":2653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2662,"src":"557:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2651,"name":"int256","nodeType":"ElementaryTypeName","src":"557:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"556:8:10"},"scope":2728,"src":"501:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2705,"nodeType":"Block","src":"807:162:10","statements":[{"assignments":[2673],"declarations":[{"constant":false,"id":2673,"mutability":"mutable","name":"x","nameLocation":"876:1:10","nodeType":"VariableDeclaration","scope":2705,"src":"869:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2672,"name":"int256","nodeType":"ElementaryTypeName","src":"869:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2686,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2674,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"881:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2675,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"885:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"892:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2679,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"896:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"892:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2681,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"891:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"902:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"891:12:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2684,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"890:14:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"880:24:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"869:35:10"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2687,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"921:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2692,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"941:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"933:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2690,"name":"uint256","nodeType":"ElementaryTypeName","src":"933:7:10","typeDescriptions":{}}},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":2694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"947:3:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"933:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"926:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2688,"name":"int256","nodeType":"ElementaryTypeName","src":"926:6:10","typeDescriptions":{}}},"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"926:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2697,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"955:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2698,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"959:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"955:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"954:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"926:35:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"925:37:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"921:41:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2671,"id":2704,"nodeType":"Return","src":"914:48:10"}]},"documentation":{"id":2663,"nodeType":"StructuredDocumentation","src":"608:126:10","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":2706,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"748:7:10","nodeType":"FunctionDefinition","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"a","nameLocation":"763:1:10","nodeType":"VariableDeclaration","scope":2706,"src":"756:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2664,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2667,"mutability":"mutable","name":"b","nameLocation":"773:1:10","nodeType":"VariableDeclaration","scope":2706,"src":"766:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2666,"name":"int256","nodeType":"ElementaryTypeName","src":"766:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"755:20:10"},"returnParameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2706,"src":"799:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2669,"name":"int256","nodeType":"ElementaryTypeName","src":"799:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"798:8:10"},"scope":2728,"src":"739:230:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2726,"nodeType":"Block","src":"1113:158:10","statements":[{"id":2725,"nodeType":"UncheckedBlock","src":"1123:142:10","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2716,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1238:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":2717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1243:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1238:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1251:2:10","subExpression":{"id":2720,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1252:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1238:15:10","trueExpression":{"id":2719,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1247:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1230:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2714,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:10","typeDescriptions":{}}},"id":2723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1230:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2713,"id":2724,"nodeType":"Return","src":"1223:31:10"}]}]},"documentation":{"id":2707,"nodeType":"StructuredDocumentation","src":"975:78:10","text":" @dev Returns the absolute unsigned value of a signed value."},"id":2727,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1067:3:10","nodeType":"FunctionDefinition","parameters":{"id":2710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2709,"mutability":"mutable","name":"n","nameLocation":"1078:1:10","nodeType":"VariableDeclaration","scope":2727,"src":"1071:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2708,"name":"int256","nodeType":"ElementaryTypeName","src":"1071:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1070:10:10"},"returnParameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2727,"src":"1104:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2711,"name":"uint256","nodeType":"ElementaryTypeName","src":"1104:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1103:9:10"},"scope":2728,"src":"1058:213:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2729,"src":"215:1058:10","usedErrors":[]}],"src":"109:1165:10"},"id":10},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[2806]},"id":2807,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2730,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2731,"nodeType":"StructuredDocumentation","src":"131:70:11","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2806,"linearizedBaseContracts":[2806],"name":"IERC20","nameLocation":"212:6:11","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2732,"nodeType":"StructuredDocumentation","src":"225:158:11","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":2740,"name":"Transfer","nameLocation":"394:8:11","nodeType":"EventDefinition","parameters":{"id":2739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2734,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:11","nodeType":"VariableDeclaration","scope":2740,"src":"403:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2733,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2736,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:11","nodeType":"VariableDeclaration","scope":2740,"src":"425:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2735,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2738,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:11","nodeType":"VariableDeclaration","scope":2740,"src":"445:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2737,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:11"},"src":"388:72:11"},{"anonymous":false,"documentation":{"id":2741,"nodeType":"StructuredDocumentation","src":"466:148:11","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":2749,"name":"Approval","nameLocation":"625:8:11","nodeType":"EventDefinition","parameters":{"id":2748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2743,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:11","nodeType":"VariableDeclaration","scope":2749,"src":"634:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2742,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2745,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:11","nodeType":"VariableDeclaration","scope":2749,"src":"657:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2744,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2747,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:11","nodeType":"VariableDeclaration","scope":2749,"src":"682:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2746,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:11"},"src":"619:78:11"},{"documentation":{"id":2750,"nodeType":"StructuredDocumentation","src":"703:66:11","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":2755,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:11","nodeType":"FunctionDefinition","parameters":{"id":2751,"nodeType":"ParameterList","parameters":[],"src":"794:2:11"},"returnParameters":{"id":2754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2755,"src":"820:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2752,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:11"},"scope":2806,"src":"774:55:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2756,"nodeType":"StructuredDocumentation","src":"835:72:11","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":2763,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:11","nodeType":"FunctionDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2758,"mutability":"mutable","name":"account","nameLocation":"939:7:11","nodeType":"VariableDeclaration","scope":2763,"src":"931:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2757,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:11"},"returnParameters":{"id":2762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2763,"src":"971:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2760,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:11"},"scope":2806,"src":"912:68:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2764,"nodeType":"StructuredDocumentation","src":"986:202:11","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2773,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:11","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2766,"mutability":"mutable","name":"to","nameLocation":"1219:2:11","nodeType":"VariableDeclaration","scope":2773,"src":"1211:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2765,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2768,"mutability":"mutable","name":"amount","nameLocation":"1231:6:11","nodeType":"VariableDeclaration","scope":2773,"src":"1223:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2767,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:11"},"returnParameters":{"id":2772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2773,"src":"1257:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2770,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:11"},"scope":2806,"src":"1193:70:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2774,"nodeType":"StructuredDocumentation","src":"1269:264:11","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":2783,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:11","nodeType":"FunctionDefinition","parameters":{"id":2779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2776,"mutability":"mutable","name":"owner","nameLocation":"1565:5:11","nodeType":"VariableDeclaration","scope":2783,"src":"1557:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2775,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2778,"mutability":"mutable","name":"spender","nameLocation":"1580:7:11","nodeType":"VariableDeclaration","scope":2783,"src":"1572:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2777,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:11"},"returnParameters":{"id":2782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2783,"src":"1612:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:11"},"scope":2806,"src":"1538:83:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2784,"nodeType":"StructuredDocumentation","src":"1627:642:11","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2793,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:11","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2786,"mutability":"mutable","name":"spender","nameLocation":"2299:7:11","nodeType":"VariableDeclaration","scope":2793,"src":"2291:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2788,"mutability":"mutable","name":"amount","nameLocation":"2316:6:11","nodeType":"VariableDeclaration","scope":2793,"src":"2308:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2787,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:11"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2793,"src":"2342:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2790,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:11"},"scope":2806,"src":"2274:74:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2794,"nodeType":"StructuredDocumentation","src":"2354:287:11","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2805,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:11","nodeType":"FunctionDefinition","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2796,"mutability":"mutable","name":"from","nameLocation":"2685:4:11","nodeType":"VariableDeclaration","scope":2805,"src":"2677:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2795,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2798,"mutability":"mutable","name":"to","nameLocation":"2707:2:11","nodeType":"VariableDeclaration","scope":2805,"src":"2699:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2797,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2800,"mutability":"mutable","name":"amount","nameLocation":"2727:6:11","nodeType":"VariableDeclaration","scope":2805,"src":"2719:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2799,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:11"},"returnParameters":{"id":2804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2805,"src":"2758:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2802,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:11"},"scope":2806,"src":"2646:118:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2807,"src":"202:2564:11","usedErrors":[]}],"src":"106:2661:11"},"id":11},"contracts/Paycrest.sol":{"ast":{"absolutePath":"contracts/Paycrest.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ECDSAUpgradeable":[1757],"IERC20":[2806],"IERC20PermitUpgradeable":[414],"IERC20Upgradeable":[378],"IPaycrest":[4055],"MathUpgradeable":[2623],"Paycrest":[3614],"PaycrestSettingManager":[3864],"SafeERC20Upgradeable":[790],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":3615,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2808,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:12"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","id":2809,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3615,"sourceUnit":1758,"src":"62:85:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","id":2810,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3615,"sourceUnit":791,"src":"148:88:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/PaycrestSettingManager.sol","file":"./PaycrestSettingManager.sol","id":2812,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3615,"sourceUnit":3865,"src":"237:68:12","symbolAliases":[{"foreign":{"id":2811,"name":"PaycrestSettingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"245:22:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interface/IPaycrest.sol","file":"./interface/IPaycrest.sol","id":2815,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3615,"sourceUnit":4056,"src":"306:60:12","symbolAliases":[{"foreign":{"id":2813,"name":"IPaycrest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"314:9:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2814,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"325:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2816,"name":"IPaycrest","nameLocations":["388:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":4055,"src":"388:9:12"},"id":2817,"nodeType":"InheritanceSpecifier","src":"388:9:12"},{"baseName":{"id":2818,"name":"PaycrestSettingManager","nameLocations":["399:22:12"],"nodeType":"IdentifierPath","referencedDeclaration":3864,"src":"399:22:12"},"id":2819,"nodeType":"InheritanceSpecifier","src":"399:22:12"}],"canonicalName":"Paycrest","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3614,"linearizedBaseContracts":[3614,3864,131,1162,300,4055],"name":"Paycrest","nameLocation":"376:8:12","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2823,"libraryName":{"id":2820,"name":"SafeERC20Upgradeable","nameLocations":["435:20:12"],"nodeType":"IdentifierPath","referencedDeclaration":790,"src":"435:20:12"},"nodeType":"UsingForDirective","src":"429:38:12","typeName":{"id":2822,"nodeType":"UserDefinedTypeName","pathNode":{"id":2821,"name":"IERC20","nameLocations":["460:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":2806,"src":"460:6:12"},"referencedDeclaration":2806,"src":"460:6:12","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}}},{"global":false,"id":2826,"libraryName":{"id":2824,"name":"ECDSAUpgradeable","nameLocations":["478:16:12"],"nodeType":"IdentifierPath","referencedDeclaration":1757,"src":"478:16:12"},"nodeType":"UsingForDirective","src":"472:35:12","typeName":{"id":2825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"499:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"canonicalName":"Paycrest.fee","id":2833,"members":[{"constant":false,"id":2828,"mutability":"mutable","name":"protocolFee","nameLocation":"541:11:12","nodeType":"VariableDeclaration","scope":2833,"src":"533:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2827,"name":"uint256","nodeType":"ElementaryTypeName","src":"533:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2830,"mutability":"mutable","name":"liquidityProviderAmount","nameLocation":"570:23:12","nodeType":"VariableDeclaration","scope":2833,"src":"562:31:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2829,"name":"uint256","nodeType":"ElementaryTypeName","src":"562:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2832,"mutability":"mutable","name":"validatorsReward","nameLocation":"611:16:12","nodeType":"VariableDeclaration","scope":2833,"src":"603:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2831,"name":"uint256","nodeType":"ElementaryTypeName","src":"603:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"fee","nameLocation":"519:3:12","nodeType":"StructDefinition","scope":3614,"src":"512:122:12","visibility":"public"},{"constant":false,"id":2838,"mutability":"mutable","name":"order","nameLocation":"673:5:12","nodeType":"VariableDeclaration","scope":3614,"src":"639:39:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order)"},"typeName":{"id":2837,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"647:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"639:25:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2836,"nodeType":"UserDefinedTypeName","pathNode":{"id":2835,"name":"Order","nameLocations":["658:5:12"],"nodeType":"IdentifierPath","referencedDeclaration":3950,"src":"658:5:12"},"referencedDeclaration":3950,"src":"658:5:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage_ptr","typeString":"struct IPaycrest.Order"}}},"visibility":"private"},{"constant":false,"id":2842,"mutability":"mutable","name":"_nonce","nameLocation":"720:6:12","nodeType":"VariableDeclaration","scope":3614,"src":"684:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":2841,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2839,"name":"address","nodeType":"ElementaryTypeName","src":"692:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"684:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2840,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":2846,"mutability":"mutable","name":"__gap","nameLocation":"752:5:12","nodeType":"VariableDeclaration","scope":3614,"src":"732:25:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":2843,"name":"uint256","nodeType":"ElementaryTypeName","src":"732:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2845,"length":{"hexValue":"3530","id":2844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"740:2:12","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"732:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"},{"body":{"id":2853,"nodeType":"Block","src":"830:39:12","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2850,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"840:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"840:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2852,"nodeType":"ExpressionStatement","src":"840:22:12"}]},"documentation":{"id":2847,"nodeType":"StructuredDocumentation","src":"763:48:12","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":2854,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2848,"nodeType":"ParameterList","parameters":[],"src":"827:2:12"},"returnParameters":{"id":2849,"nodeType":"ParameterList","parameters":[],"src":"830:0:12"},"scope":3614,"src":"816:53:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2882,"nodeType":"Block","src":"931:193:12","statements":[{"expression":{"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2861,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"945:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2863,"indexExpression":{"id":2862,"name":"_usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"963:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"945:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"972:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"945:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2866,"nodeType":"ExpressionStatement","src":"945:31:12"},{"expression":{"id":2869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2867,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"989:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130305f303030","id":2868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"999:7:12","typeDescriptions":{"typeIdentifier":"t_rational_100000_by_1","typeString":"int_const 100000"},"value":"100_000"},"src":"989:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2870,"nodeType":"ExpressionStatement","src":"989:17:12"},{"expression":{"id":2873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2871,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"1017:18:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"35303030","id":2872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1038:4:12","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5000"},"src":"1017:25:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2874,"nodeType":"ExpressionStatement","src":"1017:25:12"},{"expression":{"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2875,"name":"validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3635,"src":"1058:19:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"353030","id":2876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1080:3:12","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"src":"1058:25:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2878,"nodeType":"ExpressionStatement","src":"1058:25:12"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2879,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"1101:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1101:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2881,"nodeType":"ExpressionStatement","src":"1101:16:12"}]},"functionSelector":"c4d66de8","id":2883,"implemented":true,"kind":"function","modifiers":[{"id":2859,"kind":"modifierInvocation","modifierName":{"id":2858,"name":"initializer","nameLocations":["919:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":202,"src":"919:11:12"},"nodeType":"ModifierInvocation","src":"919:11:12"}],"name":"initialize","nameLocation":"884:10:12","nodeType":"FunctionDefinition","parameters":{"id":2857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2856,"mutability":"mutable","name":"_usdc","nameLocation":"903:5:12","nodeType":"VariableDeclaration","scope":2883,"src":"895:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2855,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"894:15:12"},"returnParameters":{"id":2860,"nodeType":"ParameterList","parameters":[],"src":"931:0:12"},"scope":3614,"src":"875:249:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2894,"nodeType":"Block","src":"1154:87:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2886,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1172:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1176:6:12","memberName":"sender","nodeType":"MemberAccess","src":"1172:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2888,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"1186:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1172:32:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7941676772656761746f72","id":2890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1206:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","typeString":"literal_string \"OnlyAggregator\""},"value":"OnlyAggregator"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","typeString":"literal_string \"OnlyAggregator\""}],"id":2885,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1164:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1164:59:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2892,"nodeType":"ExpressionStatement","src":"1164:59:12"},{"id":2893,"nodeType":"PlaceholderStatement","src":"1233:1:12"}]},"id":2895,"name":"onlyAggregator","nameLocation":"1139:14:12","nodeType":"ModifierDefinition","parameters":{"id":2884,"nodeType":"ParameterList","parameters":[],"src":"1154:0:12"},"src":"1130:111:12","virtual":false,"visibility":"internal"},{"baseFunctions":[3974],"body":{"id":3002,"nodeType":"Block","src":"1816:1279:12","statements":[{"expression":{"arguments":[{"id":2920,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"1871:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2921,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"1879:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2922,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"1888:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2923,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"1904:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2924,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"1925:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2919,"name":"_handler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"1862:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,address,address,bytes32) view"}},"id":2925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1862:80:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2926,"nodeType":"ExpressionStatement","src":"1862:80:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2928,"name":"_senderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2910,"src":"2021:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2929,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2036:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2930,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"2046:18:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2036:28:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2932,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2035:30:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2933,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"2068:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2035:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2021:54:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53656e646572466565546f6f48696768","id":2936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2077:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","typeString":"literal_string \"SenderFeeTooHigh\""},"value":"SenderFeeTooHigh"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","typeString":"literal_string \"SenderFeeTooHigh\""}],"id":2927,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2013:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2013:83:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2938,"nodeType":"ExpressionStatement","src":"2013:83:12"},{"expression":{"arguments":[{"expression":{"id":2943,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2182:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2186:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2182:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2947,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2202:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_Paycrest_$3614","typeString":"contract Paycrest"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Paycrest_$3614","typeString":"contract Paycrest"}],"id":2946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2194:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2945,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:12","typeDescriptions":{}}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2194:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2949,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2209:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2940,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"2161:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2939,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"2154:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":2941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2169:12:12","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2805,"src":"2154:27:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2951,"nodeType":"ExpressionStatement","src":"2154:63:12"},{"expression":{"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2283:21:12","subExpression":{"baseExpression":{"id":2952,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"2283:6:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2955,"indexExpression":{"expression":{"id":2953,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2290:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2294:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2290:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2283:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2957,"nodeType":"ExpressionStatement","src":"2283:21:12"},{"expression":{"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2958,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"2510:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":2962,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2541:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2545:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2541:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":2964,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"2553:6:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2967,"indexExpression":{"expression":{"id":2965,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2560:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2564:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2560:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2553:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2960,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2530:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2534:6:12","memberName":"encode","nodeType":"MemberAccess","src":"2530:10:12","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2530:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2959,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2520:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2520:53:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2510:63:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2971,"nodeType":"ExpressionStatement","src":"2510:63:12"},{"expression":{"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2972,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"2613:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":2974,"indexExpression":{"id":2973,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"2619:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2613:14:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2976,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2658:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2662:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2658:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2978,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"2689:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2979,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"2729:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2980,"name":"_senderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2910,"src":"2773:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2981,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2803:5:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"66616c7365","id":2982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2835:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":2983,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"2869:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2986,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"2916:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2909:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":2984,"name":"uint64","nodeType":"ElementaryTypeName","src":"2909:6:12","typeDescriptions":{}}},"id":2987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2909:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":2988,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2946:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2975,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3950,"src":"2630:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Order_$3950_storage_ptr_$","typeString":"type(struct IPaycrest.Order storage pointer)"}},"id":2989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["2650:6:12","2682:5:12","2709:18:12","2762:9:12","2797:4:12","2822:11:12","2854:13:12","2897:10:12","2938:6:12"],"names":["seller","token","senderFeeRecipient","senderFee","rate","isFulfilled","refundAddress","currentBPS","amount"],"nodeType":"FunctionCall","src":"2630:334:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_memory_ptr","typeString":"struct IPaycrest.Order memory"}},"src":"2613:351:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":2991,"nodeType":"ExpressionStatement","src":"2613:351:12"},{"eventCall":{"arguments":[{"id":2993,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"3017:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2994,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"3025:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2995,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"3034:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2996,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"3043:5:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2997,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"3050:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2998,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"3068:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2999,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2914,"src":"3076:11:12","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":2992,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3886,"src":"3009:7:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes32,uint256,bytes32,bytes32,string memory)"}},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:79:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3001,"nodeType":"EmitStatement","src":"3004:84:12"}]},"documentation":{"id":2896,"nodeType":"StructuredDocumentation","src":"1442:40:12","text":"@dev See {createOrder-IPaycrest}. "},"functionSelector":"2654ec7e","id":3003,"implemented":true,"kind":"function","modifiers":[],"name":"createOrder","nameLocation":"1496:11:12","nodeType":"FunctionDefinition","parameters":{"id":2915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2898,"mutability":"mutable","name":"_token","nameLocation":"1525:6:12","nodeType":"VariableDeclaration","scope":3003,"src":"1517:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2897,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2900,"mutability":"mutable","name":"_amount","nameLocation":"1550:7:12","nodeType":"VariableDeclaration","scope":3003,"src":"1542:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2899,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2902,"mutability":"mutable","name":"_institutionCode","nameLocation":"1576:16:12","nodeType":"VariableDeclaration","scope":3003,"src":"1568:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1568:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2904,"mutability":"mutable","name":"_label","nameLocation":"1610:6:12","nodeType":"VariableDeclaration","scope":3003,"src":"1602:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1602:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2906,"mutability":"mutable","name":"_rate","nameLocation":"1633:5:12","nodeType":"VariableDeclaration","scope":3003,"src":"1626:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2905,"name":"uint96","nodeType":"ElementaryTypeName","src":"1626:6:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"1657:19:12","nodeType":"VariableDeclaration","scope":3003,"src":"1649:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2907,"name":"address","nodeType":"ElementaryTypeName","src":"1649:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2910,"mutability":"mutable","name":"_senderFee","nameLocation":"1694:10:12","nodeType":"VariableDeclaration","scope":3003,"src":"1686:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2909,"name":"uint256","nodeType":"ElementaryTypeName","src":"1686:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2912,"mutability":"mutable","name":"_refundAddress","nameLocation":"1722:14:12","nodeType":"VariableDeclaration","scope":3003,"src":"1714:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2911,"name":"address","nodeType":"ElementaryTypeName","src":"1714:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2914,"mutability":"mutable","name":"messageHash","nameLocation":"1763:11:12","nodeType":"VariableDeclaration","scope":3003,"src":"1747:27:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":2913,"name":"string","nodeType":"ElementaryTypeName","src":"1747:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1507:273:12"},"returnParameters":{"id":2918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2917,"mutability":"mutable","name":"orderId","nameLocation":"1807:7:12","nodeType":"VariableDeclaration","scope":3003,"src":"1799:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1799:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1798:17:12"},"scope":3614,"src":"1487:1608:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3063,"nodeType":"Block","src":"3245:415:12","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3017,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"3312:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3019,"indexExpression":{"id":3018,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3005,"src":"3330:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3312:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e4e6f74537570706f72746564","id":3020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3339:19:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","typeString":"literal_string \"TokenNotSupported\""},"value":"TokenNotSupported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","typeString":"literal_string \"TokenNotSupported\""}],"id":3016,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3304:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3304:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3022,"nodeType":"ExpressionStatement","src":"3304:55:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3024,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"3377:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3387:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3377:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e7449735a65726f","id":3027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3390:14:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","typeString":"literal_string \"AmountIsZero\""},"value":"AmountIsZero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","typeString":"literal_string \"AmountIsZero\""}],"id":3023,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3369:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3369:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3029,"nodeType":"ExpressionStatement","src":"3369:36:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3031,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3009,"src":"3423:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3441:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3032,"name":"address","nodeType":"ElementaryTypeName","src":"3441:7:12","typeDescriptions":{}}},"id":3035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3441:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3423:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5468726f775a65726f41646472657373","id":3037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3453:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""},"value":"ThrowZeroAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""}],"id":3030,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3415:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3415:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3039,"nodeType":"ExpressionStatement","src":"3415:57:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3041,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3011,"src":"3490:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3521:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3513:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3042,"name":"address","nodeType":"ElementaryTypeName","src":"3513:7:12","typeDescriptions":{}}},"id":3045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3513:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3490:33:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5468726f775a65726f41646472657373","id":3047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3525:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""},"value":"ThrowZeroAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""}],"id":3040,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3482:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3482:62:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3049,"nodeType":"ExpressionStatement","src":"3482:62:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3051,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3664,"src":"3562:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3629_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3053,"indexExpression":{"id":3052,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"3590:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3562:45:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3629_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"id":3054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3608:4:12","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":3626,"src":"3562:50:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3624:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3616:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3055,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3616:7:12","typeDescriptions":{}}},"id":3058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3616:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3562:64:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964496e737469747574696f6e436f6465","id":3060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3628:24:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","typeString":"literal_string \"InvalidInstitutionCode\""},"value":"InvalidInstitutionCode"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","typeString":"literal_string \"InvalidInstitutionCode\""}],"id":3050,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3554:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3554:99:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3062,"nodeType":"ExpressionStatement","src":"3554:99:12"}]},"id":3064,"implemented":true,"kind":"function","modifiers":[],"name":"_handler","nameLocation":"3110:8:12","nodeType":"FunctionDefinition","parameters":{"id":3014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3005,"mutability":"mutable","name":"_token","nameLocation":"3127:6:12","nodeType":"VariableDeclaration","scope":3064,"src":"3119:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3004,"name":"address","nodeType":"ElementaryTypeName","src":"3119:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3007,"mutability":"mutable","name":"_amount","nameLocation":"3143:7:12","nodeType":"VariableDeclaration","scope":3064,"src":"3135:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3006,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3009,"mutability":"mutable","name":"_refundAddress","nameLocation":"3160:14:12","nodeType":"VariableDeclaration","scope":3064,"src":"3152:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3008,"name":"address","nodeType":"ElementaryTypeName","src":"3152:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3011,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"3184:19:12","nodeType":"VariableDeclaration","scope":3064,"src":"3176:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3010,"name":"address","nodeType":"ElementaryTypeName","src":"3176:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3013,"mutability":"mutable","name":"_institutionCode","nameLocation":"3213:16:12","nodeType":"VariableDeclaration","scope":3064,"src":"3205:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3012,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3205:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3118:112:12"},"returnParameters":{"id":3015,"nodeType":"ParameterList","parameters":[],"src":"3245:0:12"},"scope":3614,"src":"3101:559:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[3997],"body":{"id":3191,"nodeType":"Block","src":"4202:1430:12","statements":[{"expression":{"arguments":[{"id":3094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4277:28:12","subExpression":{"expression":{"baseExpression":{"id":3090,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4278:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3092,"indexExpression":{"id":3091,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4284:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4278:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4294:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3943,"src":"4278:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7264657246756c66696c6c6564","id":3095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4307:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""},"value":"OrderFulfilled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""}],"id":3089,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4269:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4269:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3097,"nodeType":"ExpressionStatement","src":"4269:55:12"},{"assignments":[3099],"declarations":[{"constant":false,"id":3099,"mutability":"mutable","name":"token","nameLocation":"4380:5:12","nodeType":"VariableDeclaration","scope":3191,"src":"4372:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3098,"name":"address","nodeType":"ElementaryTypeName","src":"4372:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3104,"initialValue":{"expression":{"baseExpression":{"id":3100,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4388:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3102,"indexExpression":{"id":3101,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4394:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4388:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4404:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3935,"src":"4388:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4372:37:12"},{"expression":{"id":3110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3105,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4488:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3107,"indexExpression":{"id":3106,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4494:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4488:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4504:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3947,"src":"4488:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3109,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3078,"src":"4518:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4488:44:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":3111,"nodeType":"ExpressionStatement","src":"4488:44:12"},{"assignments":[3114],"declarations":[{"constant":false,"id":3114,"mutability":"mutable","name":"_feeParams","nameLocation":"4685:10:12","nodeType":"VariableDeclaration","scope":3191,"src":"4674:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee"},"typeName":{"id":3113,"nodeType":"UserDefinedTypeName","pathNode":{"id":3112,"name":"fee","nameLocations":["4674:3:12"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"4674:3:12"},"referencedDeclaration":2833,"src":"4674:3:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_storage_ptr","typeString":"struct Paycrest.fee"}},"visibility":"internal"}],"id":3120,"initialValue":{"arguments":[{"id":3116,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4716:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3117,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3078,"src":"4726:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3118,"name":"_isPartner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3080,"src":"4742:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3115,"name":"_calculateFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3446,"src":"4701:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint96_$_t_bool_$returns$_t_struct$_fee_$2833_memory_ptr_$","typeString":"function (bytes32,uint96,bool) view returns (struct Paycrest.fee memory)"}},"id":3119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4701:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"nodeType":"VariableDeclarationStatement","src":"4672:81:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3121,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4766:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3123,"indexExpression":{"id":3122,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4772:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4766:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3124,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4782:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3947,"src":"4766:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4796:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4766:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3147,"nodeType":"IfStatement","src":"4763:296:12","trueBody":{"id":3146,"nodeType":"Block","src":"4799:260:12","statements":[{"expression":{"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3127,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4867:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3129,"indexExpression":{"id":3128,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4873:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4867:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4883:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3943,"src":"4867:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4897:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4867:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3133,"nodeType":"ExpressionStatement","src":"4867:34:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3134,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4919:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3136,"indexExpression":{"id":3135,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4925:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4919:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4935:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3939,"src":"4919:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4947:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4919:29:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3145,"nodeType":"IfStatement","src":"4915:134:12","trueBody":{"id":3144,"nodeType":"Block","src":"4950:99:12","statements":[{"expression":{"arguments":[{"id":3141,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"5025:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3140,"name":"transferSenderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3280,"src":"5007:17:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":3142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5007:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3143,"nodeType":"ExpressionStatement","src":"5007:27:12"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3148,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3114,"src":"5081:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5092:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"5081:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5106:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5081:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3162,"nodeType":"IfStatement","src":"5077:154:12","trueBody":{"id":3161,"nodeType":"Block","src":"5109:122:12","statements":[{"expression":{"arguments":[{"id":3156,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3637,"src":"5183:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3157,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3114,"src":"5197:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5208:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"5197:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3153,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"5167:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3152,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5160:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5160:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5174:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5160:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5160:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3160,"nodeType":"ExpressionStatement","src":"5160:60:12"}]}},{"expression":{"arguments":[{"id":3167,"name":"_liquidityProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"5309:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3168,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3114,"src":"5329:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3169,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5340:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"5329:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3164,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"5293:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3163,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5286:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5286:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5300:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5286:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5286:78:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3171,"nodeType":"ExpressionStatement","src":"5286:78:12"},{"expression":{"arguments":[{"id":3173,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3074,"src":"5428:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":3174,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"5441:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3175,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3114,"src":"5448:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3176,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5459:16:12","memberName":"validatorsReward","nodeType":"MemberAccess","referencedDeclaration":2832,"src":"5448:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3172,"name":"rewardValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3244,"src":"5411:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address[] calldata,address,uint256)"}},"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5411:65:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3178,"nodeType":"ExpressionStatement","src":"5411:65:12"},{"eventCall":{"arguments":[{"id":3180,"name":"_splitOrderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"5522:13:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3181,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"5537:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3182,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3071,"src":"5547:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3183,"name":"_liquidityProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"5556:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3184,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3078,"src":"5576:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3179,"name":"Settled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"5514:7:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint96_$returns$__$","typeString":"function (bytes32,bytes32,bytes32,address,uint96)"}},"id":3185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:77:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3186,"nodeType":"EmitStatement","src":"5509:82:12"},{"expression":{"components":[{"id":3187,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"5609:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3188,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"5619:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5608:17:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$","typeString":"tuple(bytes32,address)"}},"functionReturnParameters":3088,"id":3190,"nodeType":"Return","src":"5601:24:12"}]},"documentation":{"id":3065,"nodeType":"StructuredDocumentation","src":"3867:35:12","text":"@dev See {settle-IPaycrest}. "},"functionSelector":"137764fb","id":3192,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":3083,"kind":"modifierInvocation","modifierName":{"id":3082,"name":"onlyAggregator","nameLocations":["4159:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":2895,"src":"4159:14:12"},"nodeType":"ModifierInvocation","src":"4159:16:12"}],"name":"settle","nameLocation":"3916:6:12","nodeType":"FunctionDefinition","parameters":{"id":3081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3067,"mutability":"mutable","name":"_splitOrderId","nameLocation":"3940:13:12","nodeType":"VariableDeclaration","scope":3192,"src":"3932:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3066,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3932:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3069,"mutability":"mutable","name":"_orderId","nameLocation":"3971:8:12","nodeType":"VariableDeclaration","scope":3192,"src":"3963:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3068,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3963:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3071,"mutability":"mutable","name":"_label","nameLocation":"3998:6:12","nodeType":"VariableDeclaration","scope":3192,"src":"3990:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3070,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3990:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3074,"mutability":"mutable","name":"_validators","nameLocation":"4033:11:12","nodeType":"VariableDeclaration","scope":3192,"src":"4014:30:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3072,"name":"address","nodeType":"ElementaryTypeName","src":"4014:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3073,"nodeType":"ArrayTypeName","src":"4014:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3076,"mutability":"mutable","name":"_liquidityProvider","nameLocation":"4063:18:12","nodeType":"VariableDeclaration","scope":3192,"src":"4055:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3075,"name":"address","nodeType":"ElementaryTypeName","src":"4055:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3078,"mutability":"mutable","name":"_settlePercent","nameLocation":"4099:14:12","nodeType":"VariableDeclaration","scope":3192,"src":"4092:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3077,"name":"uint64","nodeType":"ElementaryTypeName","src":"4092:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3080,"mutability":"mutable","name":"_isPartner","nameLocation":"4128:10:12","nodeType":"VariableDeclaration","scope":3192,"src":"4123:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3079,"name":"bool","nodeType":"ElementaryTypeName","src":"4123:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3922:226:12"},"returnParameters":{"id":3088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3192,"src":"4184:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3084,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4184:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3192,"src":"4193:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3086,"name":"address","nodeType":"ElementaryTypeName","src":"4193:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4183:18:12"},"scope":3614,"src":"3907:1725:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3243,"nodeType":"Block","src":"5748:392:12","statements":[{"assignments":[3203],"declarations":[{"constant":false,"id":3203,"mutability":"mutable","name":"length","nameLocation":"5766:6:12","nodeType":"VariableDeclaration","scope":3243,"src":"5758:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3202,"name":"uint256","nodeType":"ElementaryTypeName","src":"5758:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3206,"initialValue":{"expression":{"id":3204,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3195,"src":"5775:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5787:6:12","memberName":"length","nodeType":"MemberAccess","src":"5775:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5758:35:12"},{"assignments":[3208],"declarations":[{"constant":false,"id":3208,"mutability":"mutable","name":"_validatorReward","nameLocation":"5811:16:12","nodeType":"VariableDeclaration","scope":3243,"src":"5803:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3207,"name":"uint256","nodeType":"ElementaryTypeName","src":"5803:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3212,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3209,"name":"_validatorsRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"5830:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3210,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3203,"src":"5851:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5830:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5803:54:12"},{"body":{"id":3241,"nodeType":"Block","src":"5900:234:12","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3224,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3195,"src":"5937:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3226,"indexExpression":{"id":3225,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"5949:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5937:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3227,"name":"_validatorReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"5953:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3221,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3197,"src":"5921:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3220,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5914:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5914:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5928:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5914:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5914:56:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3229,"nodeType":"ExpressionStatement","src":"5914:56:12"},{"eventCall":{"arguments":[{"baseExpression":{"id":3231,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3195,"src":"6031:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3233,"indexExpression":{"id":3232,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"6043:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6031:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3234,"name":"_validatorReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"6047:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3230,"name":"RewardValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3920,"src":"6015:15:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6015:49:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3236,"nodeType":"EmitStatement","src":"6010:54:12"},{"id":3240,"nodeType":"UncheckedBlock","src":"6078:46:12","statements":[{"expression":{"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6106:3:12","subExpression":{"id":3237,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"6106:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3239,"nodeType":"ExpressionStatement","src":"6106:3:12"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3217,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"5886:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3218,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3203,"src":"5890:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5886:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3242,"initializationExpression":{"assignments":[3214],"declarations":[{"constant":false,"id":3214,"mutability":"mutable","name":"i","nameLocation":"5879:1:12","nodeType":"VariableDeclaration","scope":3242,"src":"5871:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3213,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3216,"initialValue":{"hexValue":"30","id":3215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5883:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5871:13:12"},"nodeType":"ForStatement","src":"5867:267:12"}]},"id":3244,"implemented":true,"kind":"function","modifiers":[],"name":"rewardValidators","nameLocation":"5647:16:12","nodeType":"FunctionDefinition","parameters":{"id":3200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3195,"mutability":"mutable","name":"_validators","nameLocation":"5683:11:12","nodeType":"VariableDeclaration","scope":3244,"src":"5664:30:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3193,"name":"address","nodeType":"ElementaryTypeName","src":"5664:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3194,"nodeType":"ArrayTypeName","src":"5664:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3197,"mutability":"mutable","name":"token","nameLocation":"5704:5:12","nodeType":"VariableDeclaration","scope":3244,"src":"5696:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3196,"name":"address","nodeType":"ElementaryTypeName","src":"5696:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3199,"mutability":"mutable","name":"_validatorsRewards","nameLocation":"5719:18:12","nodeType":"VariableDeclaration","scope":3244,"src":"5711:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3198,"name":"uint256","nodeType":"ElementaryTypeName","src":"5711:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5663:75:12"},"returnParameters":{"id":3201,"nodeType":"ParameterList","parameters":[],"src":"5748:0:12"},"scope":3614,"src":"5638:502:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3279,"nodeType":"Block","src":"6200:289:12","statements":[{"assignments":[3250],"declarations":[{"constant":false,"id":3250,"mutability":"mutable","name":"recipient","nameLocation":"6218:9:12","nodeType":"VariableDeclaration","scope":3279,"src":"6210:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3249,"name":"address","nodeType":"ElementaryTypeName","src":"6210:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3255,"initialValue":{"expression":{"baseExpression":{"id":3251,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6230:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3253,"indexExpression":{"id":3252,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"6236:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6230:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6246:18:12","memberName":"senderFeeRecipient","nodeType":"MemberAccess","referencedDeclaration":3937,"src":"6230:34:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6210:54:12"},{"assignments":[3257],"declarations":[{"constant":false,"id":3257,"mutability":"mutable","name":"_fee","nameLocation":"6282:4:12","nodeType":"VariableDeclaration","scope":3279,"src":"6274:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3256,"name":"uint256","nodeType":"ElementaryTypeName","src":"6274:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3262,"initialValue":{"expression":{"baseExpression":{"id":3258,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6289:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3260,"indexExpression":{"id":3259,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"6295:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6289:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6305:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3939,"src":"6289:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6274:40:12"},{"expression":{"arguments":[{"id":3270,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"6394:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3271,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3257,"src":"6405:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":3264,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6362:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3266,"indexExpression":{"id":3265,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"6368:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6362:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6378:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3935,"src":"6362:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3263,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"6355:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6355:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6385:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"6355:38:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6355:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3273,"nodeType":"ExpressionStatement","src":"6355:55:12"},{"eventCall":{"arguments":[{"id":3275,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"6466:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3276,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3257,"src":"6477:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3274,"name":"TransferSenderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3913,"src":"6448:17:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6448:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3278,"nodeType":"EmitStatement","src":"6443:39:12"}]},"id":3280,"implemented":true,"kind":"function","modifiers":[],"name":"transferSenderFee","nameLocation":"6155:17:12","nodeType":"FunctionDefinition","parameters":{"id":3247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3246,"mutability":"mutable","name":"_orderId","nameLocation":"6181:8:12","nodeType":"VariableDeclaration","scope":3280,"src":"6173:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3245,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6173:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6172:18:12"},"returnParameters":{"id":3248,"nodeType":"ParameterList","parameters":[],"src":"6200:0:12"},"scope":3614,"src":"6146:343:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4007],"body":{"id":3339,"nodeType":"Block","src":"6626:455:12","statements":[{"expression":{"arguments":[{"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6701:28:12","subExpression":{"expression":{"baseExpression":{"id":3293,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6702:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3295,"indexExpression":{"id":3294,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"6708:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6702:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6718:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3943,"src":"6702:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7264657246756c66696c6c6564","id":3298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6731:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""},"value":"OrderFulfilled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""}],"id":3292,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6693:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6693:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3300,"nodeType":"ExpressionStatement","src":"6693:55:12"},{"expression":{"id":3306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3301,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6788:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3303,"indexExpression":{"id":3302,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"6794:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6788:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6804:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3943,"src":"6788:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6818:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6788:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3307,"nodeType":"ExpressionStatement","src":"6788:34:12"},{"expression":{"id":3313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3308,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6832:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3310,"indexExpression":{"id":3309,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"6838:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6832:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3311,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6848:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3947,"src":"6832:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6861:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6832:30:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":3314,"nodeType":"ExpressionStatement","src":"6832:30:12"},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":3322,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6942:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3324,"indexExpression":{"id":3323,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"6948:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6942:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3325,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6958:13:12","memberName":"refundAddress","nodeType":"MemberAccess","referencedDeclaration":3945,"src":"6942:29:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":3326,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6973:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3328,"indexExpression":{"id":3327,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"6979:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6973:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6989:6:12","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3949,"src":"6973:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":3316,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6910:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3318,"indexExpression":{"id":3317,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"6916:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6910:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6926:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3935,"src":"6910:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3315,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"6903:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6903:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6933:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"6903:38:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6903:93:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3331,"nodeType":"ExpressionStatement","src":"6903:93:12"},{"eventCall":{"arguments":[{"id":3333,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"7036:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3334,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"7046:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3332,"name":"Refunded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"7027:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7027:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3336,"nodeType":"EmitStatement","src":"7022:31:12"},{"expression":{"hexValue":"74727565","id":3337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7070:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3291,"id":3338,"nodeType":"Return","src":"7063:11:12"}]},"documentation":{"id":3281,"nodeType":"StructuredDocumentation","src":"6495:35:12","text":"@dev See {refund-IPaycrest}. "},"functionSelector":"e4683a79","id":3340,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":3288,"kind":"modifierInvocation","modifierName":{"id":3287,"name":"onlyAggregator","nameLocations":["6595:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":2895,"src":"6595:14:12"},"nodeType":"ModifierInvocation","src":"6595:16:12"}],"name":"refund","nameLocation":"6544:6:12","nodeType":"FunctionDefinition","parameters":{"id":3286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3283,"mutability":"mutable","name":"_orderId","nameLocation":"6559:8:12","nodeType":"VariableDeclaration","scope":3340,"src":"6551:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3282,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6551:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3285,"mutability":"mutable","name":"_label","nameLocation":"6577:6:12","nodeType":"VariableDeclaration","scope":3340,"src":"6569:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3284,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6569:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6550:34:12"},"returnParameters":{"id":3291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3340,"src":"6620:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3289,"name":"bool","nodeType":"ElementaryTypeName","src":"6620:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6619:6:12"},"scope":3614,"src":"6535:546:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3445,"nodeType":"Block","src":"7214:1301:12","statements":[{"assignments":[3353],"declarations":[{"constant":false,"id":3353,"mutability":"mutable","name":"amount","nameLocation":"7292:6:12","nodeType":"VariableDeclaration","scope":3445,"src":"7284:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3352,"name":"uint256","nodeType":"ElementaryTypeName","src":"7284:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3358,"initialValue":{"expression":{"baseExpression":{"id":3354,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"7301:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3356,"indexExpression":{"id":3355,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3342,"src":"7307:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7301:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7317:6:12","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3949,"src":"7301:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7284:39:12"},{"expression":{"id":3366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3359,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3353,"src":"7371:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3360,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3353,"src":"7380:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"baseExpression":{"id":3361,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"7389:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3363,"indexExpression":{"id":3362,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3342,"src":"7395:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7389:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3364,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7405:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3939,"src":"7389:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7380:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7371:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3367,"nodeType":"ExpressionStatement","src":"7371:43:12"},{"expression":{"id":3377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3368,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"7493:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7504:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7493:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3371,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3353,"src":"7531:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3372,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3344,"src":"7540:14:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"7531:23:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3374,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7530:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3375,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"7558:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7530:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7493:72:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3378,"nodeType":"ExpressionStatement","src":"7493:72:12"},{"expression":{"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3379,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"7633:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7644:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7633:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3382,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"7659:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7670:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7659:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3384,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"7696:18:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7659:55:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3386,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7658:57:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3387,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"7718:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7658:67:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7633:92:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3390,"nodeType":"ExpressionStatement","src":"7633:92:12"},{"expression":{"id":3400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3391,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"7823:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7834:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7823:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3394,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"7861:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7872:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7861:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":3396,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"7898:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7909:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7898:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7861:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3399,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7860:61:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7823:98:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3401,"nodeType":"ExpressionStatement","src":"7823:98:12"},{"expression":{"id":3412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3402,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"7994:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8005:16:12","memberName":"validatorsReward","nodeType":"MemberAccess","referencedDeclaration":2832,"src":"7994:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3405,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"8025:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8036:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"8025:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3407,"name":"validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3635,"src":"8050:19:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8025:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3409,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8024:46:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3410,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"8073:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8024:56:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7994:86:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3413,"nodeType":"ExpressionStatement","src":"7994:86:12"},{"assignments":[3415],"declarations":[{"constant":false,"id":3415,"mutability":"mutable","name":"protocolFeeAmount","nameLocation":"8216:17:12","nodeType":"VariableDeclaration","scope":3445,"src":"8208:25:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3414,"name":"uint256","nodeType":"ElementaryTypeName","src":"8208:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3422,"initialValue":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3416,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"8237:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3417,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8248:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"8237:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":3418,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"8262:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3419,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8273:16:12","memberName":"validatorsReward","nodeType":"MemberAccess","referencedDeclaration":2832,"src":"8262:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8237:52:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3421,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8236:54:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8208:82:12"},{"condition":{"id":3423,"name":"_isPartner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"8304:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3443,"nodeType":"Block","src":"8442:67:12","statements":[{"expression":{"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3437,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"8456:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8467:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"8456:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3440,"name":"protocolFeeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"8481:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8456:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3442,"nodeType":"ExpressionStatement","src":"8456:42:12"}]},"id":3444,"nodeType":"IfStatement","src":"8300:209:12","trueBody":{"id":3436,"nodeType":"Block","src":"8316:120:12","statements":[{"expression":{"id":3428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3424,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"8330:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3426,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8341:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"8330:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3427,"name":"protocolFeeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"8368:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8330:55:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3429,"nodeType":"ExpressionStatement","src":"8330:55:12"},{"expression":{"id":3434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3430,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"8399:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8410:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"8399:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8424:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8399:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3435,"nodeType":"ExpressionStatement","src":"8399:26:12"}]}}]},"id":3446,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateFees","nameLocation":"7096:14:12","nodeType":"FunctionDefinition","parameters":{"id":3347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3342,"mutability":"mutable","name":"_orderId","nameLocation":"7119:8:12","nodeType":"VariableDeclaration","scope":3446,"src":"7111:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7111:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3344,"mutability":"mutable","name":"_settlePercent","nameLocation":"7136:14:12","nodeType":"VariableDeclaration","scope":3446,"src":"7129:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3343,"name":"uint96","nodeType":"ElementaryTypeName","src":"7129:6:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3346,"mutability":"mutable","name":"_isPartner","nameLocation":"7157:10:12","nodeType":"VariableDeclaration","scope":3446,"src":"7152:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3345,"name":"bool","nodeType":"ElementaryTypeName","src":"7152:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7110:58:12"},"returnParameters":{"id":3351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3350,"mutability":"mutable","name":"_feeParams","nameLocation":"7201:10:12","nodeType":"VariableDeclaration","scope":3446,"src":"7190:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee"},"typeName":{"id":3349,"nodeType":"UserDefinedTypeName","pathNode":{"id":3348,"name":"fee","nameLocations":["7190:3:12"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"7190:3:12"},"referencedDeclaration":2833,"src":"7190:3:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_storage_ptr","typeString":"struct Paycrest.fee"}},"visibility":"internal"}],"src":"7189:24:12"},"scope":3614,"src":"7087:1428:12","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[4024],"body":{"id":3459,"nodeType":"Block","src":"8838:39:12","statements":[{"expression":{"baseExpression":{"id":3455,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"8855:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3950_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3457,"indexExpression":{"id":3456,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3449,"src":"8861:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8855:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage","typeString":"struct IPaycrest.Order storage ref"}},"functionReturnParameters":3454,"id":3458,"nodeType":"Return","src":"8848:22:12"}]},"documentation":{"id":3447,"nodeType":"StructuredDocumentation","src":"8716:41:12","text":"@dev See {getOrderInfo-IPaycrest}. "},"functionSelector":"768c6ec0","id":3460,"implemented":true,"kind":"function","modifiers":[],"name":"getOrderInfo","nameLocation":"8771:12:12","nodeType":"FunctionDefinition","parameters":{"id":3450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3449,"mutability":"mutable","name":"_orderId","nameLocation":"8792:8:12","nodeType":"VariableDeclaration","scope":3460,"src":"8784:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3448,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8784:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8783:18:12"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3460,"src":"8824:12:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_memory_ptr","typeString":"struct IPaycrest.Order"},"typeName":{"id":3452,"nodeType":"UserDefinedTypeName","pathNode":{"id":3451,"name":"Order","nameLocations":["8824:5:12"],"nodeType":"IdentifierPath","referencedDeclaration":3950,"src":"8824:5:12"},"referencedDeclaration":3950,"src":"8824:5:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage_ptr","typeString":"struct IPaycrest.Order"}},"visibility":"internal"}],"src":"8823:14:12"},"scope":3614,"src":"8762:115:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4015],"body":{"id":3472,"nodeType":"Block","src":"9003:49:12","statements":[{"expression":{"baseExpression":{"id":3468,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"9020:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3470,"indexExpression":{"id":3469,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3463,"src":"9038:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9020:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3467,"id":3471,"nodeType":"Return","src":"9013:32:12"}]},"documentation":{"id":3461,"nodeType":"StructuredDocumentation","src":"8883:45:12","text":"@dev See {isTokenSupported-IPaycrest}. "},"functionSelector":"75151b63","id":3473,"implemented":true,"kind":"function","modifiers":[],"name":"isTokenSupported","nameLocation":"8942:16:12","nodeType":"FunctionDefinition","parameters":{"id":3464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3463,"mutability":"mutable","name":"_token","nameLocation":"8967:6:12","nodeType":"VariableDeclaration","scope":3473,"src":"8959:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3462,"name":"address","nodeType":"ElementaryTypeName","src":"8959:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8958:16:12"},"returnParameters":{"id":3467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3473,"src":"8997:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3465,"name":"bool","nodeType":"ElementaryTypeName","src":"8997:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8996:6:12"},"scope":3614,"src":"8933:119:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3486,"nodeType":"Block","src":"9219:57:12","statements":[{"expression":{"baseExpression":{"id":3482,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3664,"src":"9236:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3629_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3484,"indexExpression":{"id":3483,"name":"code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3476,"src":"9264:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9236:33:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3629_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"functionReturnParameters":3481,"id":3485,"nodeType":"Return","src":"9229:40:12"}]},"documentation":{"id":3474,"nodeType":"StructuredDocumentation","src":"9058:56:12","text":"@dev See {getSupportedInstitutionName-IPaycrest}. "},"functionSelector":"87490d86","id":3487,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInstitutionName","nameLocation":"9128:27:12","nodeType":"FunctionDefinition","parameters":{"id":3477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3476,"mutability":"mutable","name":"code","nameLocation":"9164:4:12","nodeType":"VariableDeclaration","scope":3487,"src":"9156:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3475,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9156:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9155:14:12"},"returnParameters":{"id":3481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3480,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3487,"src":"9193:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3629_memory_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"},"typeName":{"id":3479,"nodeType":"UserDefinedTypeName","pathNode":{"id":3478,"name":"InstitutionByCode","nameLocations":["9193:17:12"],"nodeType":"IdentifierPath","referencedDeclaration":3629,"src":"9193:17:12"},"referencedDeclaration":3629,"src":"9193:17:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3629_storage_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"}},"visibility":"internal"}],"src":"9192:26:12"},"scope":3614,"src":"9119:157:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3545,"nodeType":"Block","src":"9379:390:12","statements":[{"assignments":[3500],"declarations":[{"constant":false,"id":3500,"mutability":"mutable","name":"institutions","nameLocation":"9410:12:12","nodeType":"VariableDeclaration","scope":3545,"src":"9389:33:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3498,"nodeType":"UserDefinedTypeName","pathNode":{"id":3497,"name":"Institution","nameLocations":["9389:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3624,"src":"9389:11:12"},"referencedDeclaration":3624,"src":"9389:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3499,"nodeType":"ArrayTypeName","src":"9389:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"id":3504,"initialValue":{"baseExpression":{"id":3501,"name":"supportedInstitutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3659,"src":"9425:21:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution storage ref[] storage ref)"}},"id":3503,"indexExpression":{"id":3502,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3489,"src":"9447:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9425:31:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_storage_$dyn_storage","typeString":"struct PaycrestSettingManager.Institution storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9389:67:12"},{"assignments":[3506],"declarations":[{"constant":false,"id":3506,"mutability":"mutable","name":"length","nameLocation":"9474:6:12","nodeType":"VariableDeclaration","scope":3545,"src":"9466:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3505,"name":"uint256","nodeType":"ElementaryTypeName","src":"9466:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3509,"initialValue":{"expression":{"id":3507,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"9483:12:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9496:6:12","memberName":"length","nodeType":"MemberAccess","src":"9483:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9466:36:12"},{"assignments":[3514],"declarations":[{"constant":false,"id":3514,"mutability":"mutable","name":"result","nameLocation":"9533:6:12","nodeType":"VariableDeclaration","scope":3545,"src":"9512:27:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3512,"nodeType":"UserDefinedTypeName","pathNode":{"id":3511,"name":"Institution","nameLocations":["9512:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3624,"src":"9512:11:12"},"referencedDeclaration":3624,"src":"9512:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3513,"nodeType":"ArrayTypeName","src":"9512:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"id":3521,"initialValue":{"arguments":[{"id":3519,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3506,"src":"9560:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9542:17:12","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct PaycrestSettingManager.Institution memory[] memory)"},"typeName":{"baseType":{"id":3516,"nodeType":"UserDefinedTypeName","pathNode":{"id":3515,"name":"Institution","nameLocations":["9546:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3624,"src":"9546:11:12"},"referencedDeclaration":3624,"src":"9546:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3517,"nodeType":"ArrayTypeName","src":"9546:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}}},"id":3520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9542:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9512:55:12"},{"body":{"id":3541,"nodeType":"Block","src":"9620:111:12","statements":[{"expression":{"id":3535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3529,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"9634:6:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3531,"indexExpression":{"id":3530,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"9641:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9634:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3532,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"9646:12:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3534,"indexExpression":{"id":3533,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"9659:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9646:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"src":"9634:27:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3536,"nodeType":"ExpressionStatement","src":"9634:27:12"},{"id":3540,"nodeType":"UncheckedBlock","src":"9675:46:12","statements":[{"expression":{"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9703:3:12","subExpression":{"id":3537,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"9703:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3539,"nodeType":"ExpressionStatement","src":"9703:3:12"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3526,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"9606:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3527,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3506,"src":"9610:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9606:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3542,"initializationExpression":{"assignments":[3523],"declarations":[{"constant":false,"id":3523,"mutability":"mutable","name":"i","nameLocation":"9599:1:12","nodeType":"VariableDeclaration","scope":3542,"src":"9591:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3522,"name":"uint256","nodeType":"ElementaryTypeName","src":"9591:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3525,"initialValue":{"hexValue":"30","id":3524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9603:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9591:13:12"},"nodeType":"ForStatement","src":"9586:145:12"},{"expression":{"id":3543,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"9756:6:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"functionReturnParameters":3495,"id":3544,"nodeType":"Return","src":"9749:13:12"}]},"functionSelector":"02621338","id":3546,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInstitutions","nameLocation":"9291:24:12","nodeType":"FunctionDefinition","parameters":{"id":3490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3489,"mutability":"mutable","name":"currency","nameLocation":"9324:8:12","nodeType":"VariableDeclaration","scope":3546,"src":"9316:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3488,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9316:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9315:18:12"},"returnParameters":{"id":3495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3494,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3546,"src":"9357:20:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3492,"nodeType":"UserDefinedTypeName","pathNode":{"id":3491,"name":"Institution","nameLocations":["9357:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3624,"src":"9357:11:12"},"referencedDeclaration":3624,"src":"9357:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3493,"nodeType":"ArrayTypeName","src":"9357:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"src":"9356:22:12"},"scope":3614,"src":"9282:487:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4034],"body":{"id":3561,"nodeType":"Block","src":"9928:73:12","statements":[{"expression":{"components":[{"id":3556,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"9945:18:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":3557,"name":"validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3635,"src":"9965:19:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":3558,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"9986:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3559,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9944:50:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$_t_uint256_$","typeString":"tuple(uint128,uint128,uint256)"}},"functionReturnParameters":3555,"id":3560,"nodeType":"Return","src":"9938:56:12"}]},"documentation":{"id":3547,"nodeType":"StructuredDocumentation","src":"9775:42:12","text":"@dev See {getFeeDetails-IPaycrest}. "},"functionSelector":"b810c636","id":3562,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"9831:13:12","nodeType":"FunctionDefinition","parameters":{"id":3548,"nodeType":"ParameterList","parameters":[],"src":"9844:2:12"},"returnParameters":{"id":3555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3550,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3562,"src":"9878:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3549,"name":"uint128","nodeType":"ElementaryTypeName","src":"9878:7:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3552,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3562,"src":"9896:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3551,"name":"uint128","nodeType":"ElementaryTypeName","src":"9896:7:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3554,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3562,"src":"9914:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3553,"name":"uint256","nodeType":"ElementaryTypeName","src":"9914:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9868:59:12"},"scope":3614,"src":"9822:179:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4040],"body":{"id":3570,"nodeType":"Block","src":"10124:42:12","statements":[{"expression":{"id":3568,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"10141:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3567,"id":3569,"nodeType":"Return","src":"10134:25:12"}]},"documentation":{"id":3563,"nodeType":"StructuredDocumentation","src":"10007:49:12","text":"@dev See {getAggregatorAddress-IPaycrest}. "},"functionSelector":"e8d6e0de","id":3571,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregatorAddress","nameLocation":"10070:20:12","nodeType":"FunctionDefinition","parameters":{"id":3564,"nodeType":"ParameterList","parameters":[],"src":"10090:2:12"},"returnParameters":{"id":3567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3571,"src":"10115:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3565,"name":"address","nodeType":"ElementaryTypeName","src":"10115:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10114:9:12"},"scope":3614,"src":"10061:105:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4054],"body":{"id":3583,"nodeType":"Block","src":"10300:46:12","statements":[{"expression":{"baseExpression":{"id":3579,"name":"_isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3653,"src":"10317:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3581,"indexExpression":{"id":3580,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3574,"src":"10332:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10317:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3578,"id":3582,"nodeType":"Return","src":"10310:29:12"}]},"documentation":{"id":3572,"nodeType":"StructuredDocumentation","src":"10172:49:12","text":"@dev See {getWhitelistedStatus-IPaycrest}. "},"functionSelector":"d8e8de34","id":3584,"implemented":true,"kind":"function","modifiers":[],"name":"getWhitelistedStatus","nameLocation":"10235:20:12","nodeType":"FunctionDefinition","parameters":{"id":3575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3574,"mutability":"mutable","name":"sender","nameLocation":"10264:6:12","nodeType":"VariableDeclaration","scope":3584,"src":"10256:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3573,"name":"address","nodeType":"ElementaryTypeName","src":"10256:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10255:16:12"},"returnParameters":{"id":3578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3584,"src":"10294:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3576,"name":"bool","nodeType":"ElementaryTypeName","src":"10294:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10293:6:12"},"scope":3614,"src":"10226:120:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4046],"body":{"id":3592,"nodeType":"Block","src":"10460:35:12","statements":[{"expression":{"id":3590,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3641,"src":"10477:11:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":3589,"id":3591,"nodeType":"Return","src":"10470:18:12"}]},"documentation":{"id":3585,"nodeType":"StructuredDocumentation","src":"10352:42:12","text":"@dev See {getAggregator-IPaycrest}. "},"functionSelector":"3ad59dbc","id":3593,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregator","nameLocation":"10408:13:12","nodeType":"FunctionDefinition","parameters":{"id":3586,"nodeType":"ParameterList","parameters":[],"src":"10421:2:12"},"returnParameters":{"id":3589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3593,"src":"10446:12:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3587,"name":"bytes","nodeType":"ElementaryTypeName","src":"10446:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10445:14:12"},"scope":3614,"src":"10399:96:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3612,"nodeType":"Block","src":"10682:61:12","statements":[{"expression":{"arguments":[{"id":3608,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3597,"src":"10716:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3609,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"10728:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3605,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3595,"src":"10699:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3604,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"10692:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10692:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10707:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"10692:23:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10692:44:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3611,"nodeType":"ExpressionStatement","src":"10692:44:12"}]},"functionSelector":"d9caed12","id":3613,"implemented":true,"kind":"function","modifiers":[{"id":3602,"kind":"modifierInvocation","modifierName":{"id":3601,"name":"onlyOwner","nameLocations":["10672:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"10672:9:12"},"nodeType":"ModifierInvocation","src":"10672:9:12"}],"name":"withdraw","nameLocation":"10601:8:12","nodeType":"FunctionDefinition","parameters":{"id":3600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3595,"mutability":"mutable","name":"_token","nameLocation":"10618:6:12","nodeType":"VariableDeclaration","scope":3613,"src":"10610:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3594,"name":"address","nodeType":"ElementaryTypeName","src":"10610:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3597,"mutability":"mutable","name":"_recipient","nameLocation":"10634:10:12","nodeType":"VariableDeclaration","scope":3613,"src":"10626:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3596,"name":"address","nodeType":"ElementaryTypeName","src":"10626:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3599,"mutability":"mutable","name":"_amount","nameLocation":"10654:7:12","nodeType":"VariableDeclaration","scope":3613,"src":"10646:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3598,"name":"uint256","nodeType":"ElementaryTypeName","src":"10646:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10609:53:12"},"returnParameters":{"id":3603,"nodeType":"ParameterList","parameters":[],"src":"10682:0:12"},"scope":3614,"src":"10592:151:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3615,"src":"367:10379:12","usedErrors":[]}],"src":"38:10709:12"},"id":12},"contracts/PaycrestSettingManager.sol":{"ast":{"absolutePath":"contracts/PaycrestSettingManager.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300],"OwnableUpgradeable":[131],"PaycrestSettingManager":[3864]},"id":3865,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3616,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:13"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":3617,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3865,"sourceUnit":132,"src":"62:75:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3618,"name":"OwnableUpgradeable","nameLocations":["174:18:13"],"nodeType":"IdentifierPath","referencedDeclaration":131,"src":"174:18:13"},"id":3619,"nodeType":"InheritanceSpecifier","src":"174:18:13"}],"canonicalName":"PaycrestSettingManager","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3864,"linearizedBaseContracts":[3864,131,1162,300],"name":"PaycrestSettingManager","nameLocation":"148:22:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"PaycrestSettingManager.Institution","id":3624,"members":[{"constant":false,"id":3621,"mutability":"mutable","name":"code","nameLocation":"237:4:13","nodeType":"VariableDeclaration","scope":3624,"src":"229:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"229:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3623,"mutability":"mutable","name":"name","nameLocation":"294:4:13","nodeType":"VariableDeclaration","scope":3624,"src":"286:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3622,"name":"bytes32","nodeType":"ElementaryTypeName","src":"286:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Institution","nameLocation":"207:11:13","nodeType":"StructDefinition","scope":3864,"src":"200:109:13","visibility":"public"},{"canonicalName":"PaycrestSettingManager.InstitutionByCode","id":3629,"members":[{"constant":false,"id":3626,"mutability":"mutable","name":"name","nameLocation":"357:4:13","nodeType":"VariableDeclaration","scope":3629,"src":"349:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"349:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3628,"mutability":"mutable","name":"currency","nameLocation":"379:8:13","nodeType":"VariableDeclaration","scope":3629,"src":"371:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3627,"name":"bytes32","nodeType":"ElementaryTypeName","src":"371:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"InstitutionByCode","nameLocation":"321:17:13","nodeType":"StructDefinition","scope":3864,"src":"314:80:13","visibility":"public"},{"constant":false,"id":3631,"mutability":"mutable","name":"MAX_BPS","nameLocation":"416:7:13","nodeType":"VariableDeclaration","scope":3864,"src":"399:24:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3630,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3633,"mutability":"mutable","name":"protocolFeePercent","nameLocation":"446:18:13","nodeType":"VariableDeclaration","scope":3864,"src":"429:35:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3632,"name":"uint128","nodeType":"ElementaryTypeName","src":"429:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3635,"mutability":"mutable","name":"validatorFeePercent","nameLocation":"493:19:13","nodeType":"VariableDeclaration","scope":3864,"src":"476:36:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3634,"name":"uint128","nodeType":"ElementaryTypeName","src":"476:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3637,"mutability":"mutable","name":"feeRecipient","nameLocation":"543:12:13","nodeType":"VariableDeclaration","scope":3864,"src":"526:29:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3636,"name":"address","nodeType":"ElementaryTypeName","src":"526:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3639,"mutability":"mutable","name":"_aggregatorAddress","nameLocation":"578:18:13","nodeType":"VariableDeclaration","scope":3864,"src":"561:35:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3638,"name":"address","nodeType":"ElementaryTypeName","src":"561:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3641,"mutability":"mutable","name":"_aggregator","nameLocation":"617:11:13","nodeType":"VariableDeclaration","scope":3864,"src":"602:26:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes"},"typeName":{"id":3640,"name":"bytes","nodeType":"ElementaryTypeName","src":"602:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3645,"mutability":"mutable","name":"__gap","nameLocation":"768:5:13","nodeType":"VariableDeclaration","scope":3864,"src":"748:25:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":3642,"name":"uint256","nodeType":"ElementaryTypeName","src":"748:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3644,"length":{"hexValue":"3530","id":3643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"756:2:13","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"748:11:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"},{"constant":false,"id":3649,"mutability":"mutable","name":"_isTokenSupported","nameLocation":"814:17:13","nodeType":"VariableDeclaration","scope":3864,"src":"780:51:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3648,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3646,"name":"address","nodeType":"ElementaryTypeName","src":"788:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"780:24:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3647,"name":"bool","nodeType":"ElementaryTypeName","src":"799:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":3653,"mutability":"mutable","name":"_isWhitelisted","nameLocation":"871:14:13","nodeType":"VariableDeclaration","scope":3864,"src":"837:48:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3652,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3650,"name":"address","nodeType":"ElementaryTypeName","src":"845:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"837:24:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3651,"name":"bool","nodeType":"ElementaryTypeName","src":"856:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":3659,"mutability":"mutable","name":"supportedInstitutions","nameLocation":"935:21:13","nodeType":"VariableDeclaration","scope":3864,"src":"892:64:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])"},"typeName":{"id":3658,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3654,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"892:33:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":3656,"nodeType":"UserDefinedTypeName","pathNode":{"id":3655,"name":"Institution","nameLocations":["911:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":3624,"src":"911:11:13"},"referencedDeclaration":3624,"src":"911:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3657,"nodeType":"ArrayTypeName","src":"911:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}}},"visibility":"internal"},{"constant":false,"id":3664,"mutability":"mutable","name":"supportedInstitutionsByCode","nameLocation":"1009:27:13","nodeType":"VariableDeclaration","scope":3864,"src":"962:74:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3629_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)"},"typeName":{"id":3663,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3660,"name":"bytes32","nodeType":"ElementaryTypeName","src":"970:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"962:37:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3629_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3662,"nodeType":"UserDefinedTypeName","pathNode":{"id":3661,"name":"InstitutionByCode","nameLocations":["981:17:13"],"nodeType":"IdentifierPath","referencedDeclaration":3629,"src":"981:17:13"},"referencedDeclaration":3629,"src":"981:17:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3629_storage_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"}}},"visibility":"internal"},{"anonymous":false,"eventSelector":"e22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace930","id":3672,"name":"SettingManagerBool","nameLocation":"1049:18:13","nodeType":"EventDefinition","parameters":{"id":3671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3666,"indexed":false,"mutability":"mutable","name":"what","nameLocation":"1076:4:13","nodeType":"VariableDeclaration","scope":3672,"src":"1068:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1068:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3668,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1090:5:13","nodeType":"VariableDeclaration","scope":3672,"src":"1082:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3667,"name":"address","nodeType":"ElementaryTypeName","src":"1082:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3670,"indexed":false,"mutability":"mutable","name":"status","nameLocation":"1102:6:13","nodeType":"VariableDeclaration","scope":3672,"src":"1097:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3669,"name":"bool","nodeType":"ElementaryTypeName","src":"1097:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1067:42:13"},"src":"1043:67:13"},{"anonymous":false,"eventSelector":"e38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df","id":3678,"name":"PaycrestFees","nameLocation":"1121:12:13","nodeType":"EventDefinition","parameters":{"id":3677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3674,"indexed":false,"mutability":"mutable","name":"protocolFee","nameLocation":"1142:11:13","nodeType":"VariableDeclaration","scope":3678,"src":"1134:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3673,"name":"uint128","nodeType":"ElementaryTypeName","src":"1134:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3676,"indexed":false,"mutability":"mutable","name":"validatorFeePercent","nameLocation":"1163:19:13","nodeType":"VariableDeclaration","scope":3678,"src":"1155:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3675,"name":"uint128","nodeType":"ElementaryTypeName","src":"1155:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1133:50:13"},"src":"1115:69:13"},{"anonymous":false,"eventSelector":"6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef","id":3682,"name":"SetAggregator","nameLocation":"1195:13:13","nodeType":"EventDefinition","parameters":{"id":3681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3680,"indexed":false,"mutability":"mutable","name":"aggregator","nameLocation":"1215:10:13","nodeType":"VariableDeclaration","scope":3682,"src":"1209:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3679,"name":"bytes","nodeType":"ElementaryTypeName","src":"1209:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1208:18:13"},"src":"1189:38:13"},{"anonymous":false,"eventSelector":"2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a73","id":3686,"name":"SetFeeRecipient","nameLocation":"1238:15:13","nodeType":"EventDefinition","parameters":{"id":3685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3684,"indexed":false,"mutability":"mutable","name":"feeRecipient","nameLocation":"1262:12:13","nodeType":"VariableDeclaration","scope":3686,"src":"1254:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3683,"name":"address","nodeType":"ElementaryTypeName","src":"1254:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1253:22:13"},"src":"1232:44:13"},{"body":{"id":3733,"nodeType":"Block","src":"1572:255:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"1590:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1607:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1599:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3699,"name":"address","nodeType":"ElementaryTypeName","src":"1599:7:13","typeDescriptions":{}}},"id":3702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1599:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1590:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50617963726573743a207a65726f2061646472657373","id":3704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1611:24:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""},"value":"Paycrest: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""}],"id":3697,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1582:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1582:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3706,"nodeType":"ExpressionStatement","src":"1582:54:13"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3707,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"1650:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"746f6b656e","id":3708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1658:7:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b9b0454cadcb5884dd3faa6ba975da4d2459aa3f11d31291a25a8358f84946d","typeString":"literal_string \"token\""},"value":"token"},"src":"1650:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3716,"nodeType":"IfStatement","src":"1646:54:13","trueBody":{"expression":{"id":3714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3710,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"1667:17:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3712,"indexExpression":{"id":3711,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"1685:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1667:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3713,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3692,"src":"1694:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1667:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3715,"nodeType":"ExpressionStatement","src":"1667:33:13"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3717,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"1714:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"77686974656c697374","id":3718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1722:11:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_54c80de7e611b57d6d38523e3c0c59a6a3e72cddf62c95cf51a204e52c1a86ad","typeString":"literal_string \"whitelist\""},"value":"whitelist"},"src":"1714:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3726,"nodeType":"IfStatement","src":"1710:55:13","trueBody":{"expression":{"id":3724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3720,"name":"_isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3653,"src":"1735:14:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3722,"indexExpression":{"id":3721,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"1750:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1735:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3723,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3692,"src":"1759:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1735:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3725,"nodeType":"ExpressionStatement","src":"1735:30:13"}},{"eventCall":{"arguments":[{"id":3728,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"1800:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3729,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"1806:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3730,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3692,"src":"1813:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3727,"name":"SettingManagerBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"1781:18:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bool)"}},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1781:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3732,"nodeType":"EmitStatement","src":"1776:44:13"}]},"functionSelector":"99e3c0b4","id":3734,"implemented":true,"kind":"function","modifiers":[{"id":3695,"kind":"modifierInvocation","modifierName":{"id":3694,"name":"onlyOwner","nameLocations":["1562:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"1562:9:13"},"nodeType":"ModifierInvocation","src":"1562:9:13"}],"name":"settingManagerBool","nameLocation":"1492:18:13","nodeType":"FunctionDefinition","parameters":{"id":3693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3688,"mutability":"mutable","name":"what","nameLocation":"1519:4:13","nodeType":"VariableDeclaration","scope":3734,"src":"1511:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3687,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1511:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3690,"mutability":"mutable","name":"value","nameLocation":"1533:5:13","nodeType":"VariableDeclaration","scope":3734,"src":"1525:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3689,"name":"address","nodeType":"ElementaryTypeName","src":"1525:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3692,"mutability":"mutable","name":"status","nameLocation":"1545:6:13","nodeType":"VariableDeclaration","scope":3734,"src":"1540:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3691,"name":"bool","nodeType":"ElementaryTypeName","src":"1540:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1510:42:13"},"returnParameters":{"id":3696,"nodeType":"ParameterList","parameters":[],"src":"1572:0:13"},"scope":3864,"src":"1483:344:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3787,"nodeType":"Block","src":"1939:394:13","statements":[{"assignments":[3746],"declarations":[{"constant":false,"id":3746,"mutability":"mutable","name":"length","nameLocation":"1958:6:13","nodeType":"VariableDeclaration","scope":3787,"src":"1950:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3745,"name":"uint256","nodeType":"ElementaryTypeName","src":"1950:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3749,"initialValue":{"expression":{"id":3747,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3740,"src":"1967:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1980:6:13","memberName":"length","nodeType":"MemberAccess","src":"1967:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1950:36:13"},{"body":{"id":3785,"nodeType":"Block","src":"2027:300:13","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3761,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3740,"src":"2078:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3763,"indexExpression":{"id":3762,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3751,"src":"2091:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2078:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Institution_$3624_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}],"expression":{"baseExpression":{"id":3757,"name":"supportedInstitutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3659,"src":"2041:21:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution storage ref[] storage ref)"}},"id":3759,"indexExpression":{"id":3758,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2063:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2041:31:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_storage_$dyn_storage","typeString":"struct PaycrestSettingManager.Institution storage ref[] storage ref"}},"id":3760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2073:4:13","memberName":"push","nodeType":"MemberAccess","src":"2041:36:13","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_ptr_$_t_struct$_Institution_$3624_storage_$returns$__$attached_to$_t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_ptr_$","typeString":"function (struct PaycrestSettingManager.Institution storage ref[] storage pointer,struct PaycrestSettingManager.Institution storage ref)"}},"id":3764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2041:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3765,"nodeType":"ExpressionStatement","src":"2041:53:13"},{"expression":{"id":3779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3766,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3664,"src":"2108:27:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3629_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3771,"indexExpression":{"expression":{"baseExpression":{"id":3767,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3740,"src":"2136:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3769,"indexExpression":{"id":3768,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3751,"src":"2149:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2136:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2152:4:13","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":3621,"src":"2136:20:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2108:49:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3629_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"baseExpression":{"id":3773,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3740,"src":"2202:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3775,"indexExpression":{"id":3774,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3751,"src":"2215:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2202:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3776,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2218:4:13","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":3623,"src":"2202:20:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3777,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2234:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3772,"name":"InstitutionByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"2160:17:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_InstitutionByCode_$3629_storage_ptr_$","typeString":"type(struct PaycrestSettingManager.InstitutionByCode storage pointer)"}},"id":3778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["2196:4:13","2224:8:13"],"names":["name","currency"],"nodeType":"FunctionCall","src":"2160:97:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3629_memory_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode memory"}},"src":"2108:149:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3629_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"id":3780,"nodeType":"ExpressionStatement","src":"2108:149:13"},{"id":3784,"nodeType":"UncheckedBlock","src":"2271:46:13","statements":[{"expression":{"id":3782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2299:3:13","subExpression":{"id":3781,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3751,"src":"2299:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3783,"nodeType":"ExpressionStatement","src":"2299:3:13"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3754,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3751,"src":"2013:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3755,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3746,"src":"2017:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2013:10:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3786,"initializationExpression":{"assignments":[3751],"declarations":[{"constant":false,"id":3751,"mutability":"mutable","name":"i","nameLocation":"2006:1:13","nodeType":"VariableDeclaration","scope":3786,"src":"2001:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3750,"name":"uint","nodeType":"ElementaryTypeName","src":"2001:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3753,"initialValue":{"hexValue":"30","id":3752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2010:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2001:10:13"},"nodeType":"ForStatement","src":"1996:331:13"}]},"functionSelector":"32200882","id":3788,"implemented":true,"kind":"function","modifiers":[{"id":3743,"kind":"modifierInvocation","modifierName":{"id":3742,"name":"onlyOwner","nameLocations":["1929:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"1929:9:13"},"nodeType":"ModifierInvocation","src":"1929:9:13"}],"name":"setSupportedInstitutions","nameLocation":"1842:24:13","nodeType":"FunctionDefinition","parameters":{"id":3741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3736,"mutability":"mutable","name":"currency","nameLocation":"1875:8:13","nodeType":"VariableDeclaration","scope":3788,"src":"1867:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3735,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1867:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3740,"mutability":"mutable","name":"institutions","nameLocation":"1906:12:13","nodeType":"VariableDeclaration","scope":3788,"src":"1885:33:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3738,"nodeType":"UserDefinedTypeName","pathNode":{"id":3737,"name":"Institution","nameLocations":["1885:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":3624,"src":"1885:11:13"},"referencedDeclaration":3624,"src":"1885:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3624_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3739,"nodeType":"ArrayTypeName","src":"1885:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3624_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"src":"1866:53:13"},"returnParameters":{"id":3744,"nodeType":"ParameterList","parameters":[],"src":"1939:0:13"},"scope":3864,"src":"1833:500:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3810,"nodeType":"Block","src":"2445:179:13","statements":[{"expression":{"id":3799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3797,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"2455:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3798,"name":"_protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3790,"src":"2476:19:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2455:40:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3800,"nodeType":"ExpressionStatement","src":"2455:40:13"},{"expression":{"id":3803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3801,"name":"validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3635,"src":"2505:19:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3802,"name":"_validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3792,"src":"2527:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2505:42:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3804,"nodeType":"ExpressionStatement","src":"2505:42:13"},{"eventCall":{"arguments":[{"id":3806,"name":"_protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3790,"src":"2575:19:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":3807,"name":"_validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3792,"src":"2596:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":3805,"name":"PaycrestFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3678,"src":"2562:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (uint128,uint128)"}},"id":3808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2562:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3809,"nodeType":"EmitStatement","src":"2557:60:13"}]},"functionSelector":"f5326b19","id":3811,"implemented":true,"kind":"function","modifiers":[{"id":3795,"kind":"modifierInvocation","modifierName":{"id":3794,"name":"onlyOwner","nameLocations":["2435:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2435:9:13"},"nodeType":"ModifierInvocation","src":"2435:9:13"}],"name":"updateProtocolFees","nameLocation":"2348:18:13","nodeType":"FunctionDefinition","parameters":{"id":3793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3790,"mutability":"mutable","name":"_protocolFeePercent","nameLocation":"2375:19:13","nodeType":"VariableDeclaration","scope":3811,"src":"2367:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3789,"name":"uint128","nodeType":"ElementaryTypeName","src":"2367:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3792,"mutability":"mutable","name":"_validatorFeePercent","nameLocation":"2404:20:13","nodeType":"VariableDeclaration","scope":3811,"src":"2396:28:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3791,"name":"uint128","nodeType":"ElementaryTypeName","src":"2396:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2366:59:13"},"returnParameters":{"id":3796,"nodeType":"ParameterList","parameters":[],"src":"2445:0:13"},"scope":3864,"src":"2339:285:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3846,"nodeType":"Block","src":"2711:182:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3821,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"2729:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2746:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2738:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3822,"name":"address","nodeType":"ElementaryTypeName","src":"2738:7:13","typeDescriptions":{}}},"id":3825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2738:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2729:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50617963726573743a207a65726f2061646472657373","id":3827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2750:24:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""},"value":"Paycrest: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""}],"id":3820,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2721:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2721:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3829,"nodeType":"ExpressionStatement","src":"2721:54:13"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3830,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"2789:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"666565","id":3831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2797:5:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_833b9f6abf0b529613680afe2a00fa663cc95cbdc47d726d85a044462eabbf02","typeString":"literal_string \"fee\""},"value":"fee"},"src":"2789:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3837,"nodeType":"IfStatement","src":"2785:39:13","trueBody":{"expression":{"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3833,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3637,"src":"2804:12:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3834,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"2819:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2804:20:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3836,"nodeType":"ExpressionStatement","src":"2804:20:13"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3838,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"2838:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"61676772656761746f72","id":3839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2846:12:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_e124d7cc79a19705865fa21b784ba187cd393559e960c0c071132cb60354d1a3","typeString":"literal_string \"aggregator\""},"value":"aggregator"},"src":"2838:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3845,"nodeType":"IfStatement","src":"2834:52:13","trueBody":{"expression":{"id":3843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3841,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"2860:18:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3842,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"2881:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2860:26:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3844,"nodeType":"ExpressionStatement","src":"2860:26:13"}}]},"functionSelector":"79a0effb","id":3847,"implemented":true,"kind":"function","modifiers":[{"id":3818,"kind":"modifierInvocation","modifierName":{"id":3817,"name":"onlyOwner","nameLocations":["2701:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2701:9:13"},"nodeType":"ModifierInvocation","src":"2701:9:13"}],"name":"updateProtocolAddresses","nameLocation":"2639:23:13","nodeType":"FunctionDefinition","parameters":{"id":3816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3813,"mutability":"mutable","name":"what","nameLocation":"2671:4:13","nodeType":"VariableDeclaration","scope":3847,"src":"2663:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3812,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2663:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3815,"mutability":"mutable","name":"value","nameLocation":"2685:5:13","nodeType":"VariableDeclaration","scope":3847,"src":"2677:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3814,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2662:29:13"},"returnParameters":{"id":3819,"nodeType":"ParameterList","parameters":[],"src":"2711:0:13"},"scope":3864,"src":"2630:263:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3862,"nodeType":"Block","src":"2979:81:13","statements":[{"expression":{"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3854,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3641,"src":"2989:11:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3855,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3849,"src":"3003:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"2989:24:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":3857,"nodeType":"ExpressionStatement","src":"2989:24:13"},{"eventCall":{"arguments":[{"id":3859,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3849,"src":"3042:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3858,"name":"SetAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3682,"src":"3028:13:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":3860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3028:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3861,"nodeType":"EmitStatement","src":"3023:30:13"}]},"functionSelector":"cb79455b","id":3863,"implemented":true,"kind":"function","modifiers":[{"id":3852,"kind":"modifierInvocation","modifierName":{"id":3851,"name":"onlyOwner","nameLocations":["2969:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2969:9:13"},"nodeType":"ModifierInvocation","src":"2969:9:13"}],"name":"updateProtocolAggregator","nameLocation":"2908:24:13","nodeType":"FunctionDefinition","parameters":{"id":3850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3849,"mutability":"mutable","name":"aggregator","nameLocation":"2948:10:13","nodeType":"VariableDeclaration","scope":3863,"src":"2933:25:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3848,"name":"bytes","nodeType":"ElementaryTypeName","src":"2933:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2932:27:13"},"returnParameters":{"id":3853,"nodeType":"ParameterList","parameters":[],"src":"2979:0:13"},"scope":3864,"src":"2899:161:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3865,"src":"139:2924:13","usedErrors":[]}],"src":"38:3026:13"},"id":13},"contracts/interface/IPaycrest.sol":{"ast":{"absolutePath":"contracts/interface/IPaycrest.sol","exportedSymbols":{"IERC20":[2806],"IPaycrest":[4055]},"id":4056,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3866,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:14"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3868,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4056,"sourceUnit":2807,"src":"63:70:14","symbolAliases":[{"foreign":{"id":3867,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"71:6:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPaycrest","contractDependencies":[],"contractKind":"interface","documentation":{"id":3869,"nodeType":"StructuredDocumentation","src":"134:130:14","text":" @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\n Factory and global config params"},"fullyImplemented":false,"id":4055,"linearizedBaseContracts":[4055],"name":"IPaycrest","nameLocation":"275:9:14","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3870,"nodeType":"StructuredDocumentation","src":"483:38:14","text":"@dev Emitted when deposit is made."},"eventSelector":"2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b","id":3886,"name":"Deposit","nameLocation":"532:7:14","nodeType":"EventDefinition","parameters":{"id":3885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3872,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"556:5:14","nodeType":"VariableDeclaration","scope":3886,"src":"540:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3871,"name":"address","nodeType":"ElementaryTypeName","src":"540:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3874,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"579:6:14","nodeType":"VariableDeclaration","scope":3886,"src":"563:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3873,"name":"uint256","nodeType":"ElementaryTypeName","src":"563:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3876,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"603:7:14","nodeType":"VariableDeclaration","scope":3886,"src":"587:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3875,"name":"bytes32","nodeType":"ElementaryTypeName","src":"587:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3878,"indexed":false,"mutability":"mutable","name":"rate","nameLocation":"620:4:14","nodeType":"VariableDeclaration","scope":3886,"src":"612:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3877,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3880,"indexed":false,"mutability":"mutable","name":"institutionCode","nameLocation":"634:15:14","nodeType":"VariableDeclaration","scope":3886,"src":"626:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3879,"name":"bytes32","nodeType":"ElementaryTypeName","src":"626:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3882,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"659:5:14","nodeType":"VariableDeclaration","scope":3886,"src":"651:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3881,"name":"bytes32","nodeType":"ElementaryTypeName","src":"651:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3884,"indexed":false,"mutability":"mutable","name":"messageHash","nameLocation":"673:11:14","nodeType":"VariableDeclaration","scope":3886,"src":"666:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3883,"name":"string","nodeType":"ElementaryTypeName","src":"666:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:146:14"},"src":"526:160:14"},{"anonymous":false,"documentation":{"id":3887,"nodeType":"StructuredDocumentation","src":"691:52:14","text":"@dev Emitted when aggregator settle transaction."},"eventSelector":"f26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c05326","id":3899,"name":"Settled","nameLocation":"754:7:14","nodeType":"EventDefinition","parameters":{"id":3898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3889,"indexed":false,"mutability":"mutable","name":"_splitOrderId","nameLocation":"770:13:14","nodeType":"VariableDeclaration","scope":3899,"src":"762:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3888,"name":"bytes32","nodeType":"ElementaryTypeName","src":"762:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3891,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"801:7:14","nodeType":"VariableDeclaration","scope":3899,"src":"785:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3890,"name":"bytes32","nodeType":"ElementaryTypeName","src":"785:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3893,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"818:5:14","nodeType":"VariableDeclaration","scope":3899,"src":"810:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"810:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3895,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nameLocation":"841:17:14","nodeType":"VariableDeclaration","scope":3899,"src":"825:33:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3894,"name":"address","nodeType":"ElementaryTypeName","src":"825:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3897,"indexed":false,"mutability":"mutable","name":"settlePercent","nameLocation":"867:13:14","nodeType":"VariableDeclaration","scope":3899,"src":"860:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3896,"name":"uint96","nodeType":"ElementaryTypeName","src":"860:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"761:120:14"},"src":"748:134:14"},{"anonymous":false,"documentation":{"id":3900,"nodeType":"StructuredDocumentation","src":"887:52:14","text":"@dev Emitted when aggregator refund transaction."},"eventSelector":"007c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f","id":3906,"name":"Refunded","nameLocation":"950:8:14","nodeType":"EventDefinition","parameters":{"id":3905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3902,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"975:7:14","nodeType":"VariableDeclaration","scope":3906,"src":"959:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"959:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3904,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"992:5:14","nodeType":"VariableDeclaration","scope":3906,"src":"984:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"984:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"958:40:14"},"src":"944:55:14"},{"anonymous":false,"documentation":{"id":3907,"nodeType":"StructuredDocumentation","src":"1004:48:14","text":"@dev Emitted when sender get therir rewards."},"eventSelector":"96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c2","id":3913,"name":"TransferSenderFee","nameLocation":"1063:17:14","nodeType":"EventDefinition","parameters":{"id":3912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3909,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1097:6:14","nodeType":"VariableDeclaration","scope":3913,"src":"1081:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3908,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3911,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1121:6:14","nodeType":"VariableDeclaration","scope":3913,"src":"1105:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3910,"name":"uint256","nodeType":"ElementaryTypeName","src":"1105:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1080:48:14"},"src":"1057:72:14"},{"anonymous":false,"documentation":{"id":3914,"nodeType":"StructuredDocumentation","src":"1134:59:14","text":"@dev Emitted when primary validator get therir rewards."},"eventSelector":"61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c2","id":3920,"name":"RewardValidator","nameLocation":"1204:15:14","nodeType":"EventDefinition","parameters":{"id":3919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3916,"indexed":true,"mutability":"mutable","name":"validator","nameLocation":"1236:9:14","nodeType":"VariableDeclaration","scope":3920,"src":"1220:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3915,"name":"address","nodeType":"ElementaryTypeName","src":"1220:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3918,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1263:6:14","nodeType":"VariableDeclaration","scope":3920,"src":"1247:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3917,"name":"uint256","nodeType":"ElementaryTypeName","src":"1247:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:51:14"},"src":"1198:73:14"},{"canonicalName":"IPaycrest.TransactionMetadata","id":3931,"members":[{"constant":false,"id":3922,"mutability":"mutable","name":"identifier","nameLocation":"1509:10:14","nodeType":"VariableDeclaration","scope":3931,"src":"1502:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3921,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1502:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3924,"mutability":"mutable","name":"institution","nameLocation":"1628:11:14","nodeType":"VariableDeclaration","scope":3931,"src":"1621:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3923,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1621:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3926,"mutability":"mutable","name":"name","nameLocation":"1747:4:14","nodeType":"VariableDeclaration","scope":3931,"src":"1740:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3925,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1740:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3928,"mutability":"mutable","name":"currency","nameLocation":"1866:8:14","nodeType":"VariableDeclaration","scope":3931,"src":"1859:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3927,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1859:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3930,"mutability":"mutable","name":"liquidityProviderID","nameLocation":"1986:19:14","nodeType":"VariableDeclaration","scope":3931,"src":"1978:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3929,"name":"uint256","nodeType":"ElementaryTypeName","src":"1978:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"TransactionMetadata","nameLocation":"1472:19:14","nodeType":"StructDefinition","scope":4055,"src":"1465:629:14","visibility":"public"},{"canonicalName":"IPaycrest.Order","id":3950,"members":[{"constant":false,"id":3933,"mutability":"mutable","name":"seller","nameLocation":"2131:6:14","nodeType":"VariableDeclaration","scope":3950,"src":"2123:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3932,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3935,"mutability":"mutable","name":"token","nameLocation":"2251:5:14","nodeType":"VariableDeclaration","scope":3950,"src":"2243:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3934,"name":"address","nodeType":"ElementaryTypeName","src":"2243:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3937,"mutability":"mutable","name":"senderFeeRecipient","nameLocation":"2371:18:14","nodeType":"VariableDeclaration","scope":3950,"src":"2363:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3936,"name":"address","nodeType":"ElementaryTypeName","src":"2363:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3939,"mutability":"mutable","name":"senderFee","nameLocation":"2407:9:14","nodeType":"VariableDeclaration","scope":3950,"src":"2399:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3938,"name":"uint256","nodeType":"ElementaryTypeName","src":"2399:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3941,"mutability":"mutable","name":"rate","nameLocation":"2433:4:14","nodeType":"VariableDeclaration","scope":3950,"src":"2426:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3940,"name":"uint96","nodeType":"ElementaryTypeName","src":"2426:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3943,"mutability":"mutable","name":"isFulfilled","nameLocation":"2551:11:14","nodeType":"VariableDeclaration","scope":3950,"src":"2546:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3942,"name":"bool","nodeType":"ElementaryTypeName","src":"2546:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3945,"mutability":"mutable","name":"refundAddress","nameLocation":"2695:13:14","nodeType":"VariableDeclaration","scope":3950,"src":"2687:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3944,"name":"address","nodeType":"ElementaryTypeName","src":"2687:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3947,"mutability":"mutable","name":"currentBPS","nameLocation":"2835:10:14","nodeType":"VariableDeclaration","scope":3950,"src":"2828:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3946,"name":"uint96","nodeType":"ElementaryTypeName","src":"2828:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3949,"mutability":"mutable","name":"amount","nameLocation":"2959:6:14","nodeType":"VariableDeclaration","scope":3950,"src":"2951:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3948,"name":"uint256","nodeType":"ElementaryTypeName","src":"2951:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Order","nameLocation":"2107:5:14","nodeType":"StructDefinition","scope":4055,"src":"2100:968:14","visibility":"public"},{"documentation":{"id":3951,"nodeType":"StructuredDocumentation","src":"3270:1232:14","text":"@notice lock sender `_amount` of `token` into Paycrest.\n Requirements:\n `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\n `_token` must be an acceptable token. @dev See {isTokenSupported}.\n `amount` must be greater than minimum\n `_refundable` refundable address must not be zero address\n @param _token address of the token.\n @param _amount amount in the decimal of `_token` above.\n @param _institutionCode institution code of the sender.\n @param _label reference of the sender.\n @param _rate rate at which sender intended to sell `_amount` of `_token`.\n @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\n @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\n @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\n @param messageHash hash must be the result of a hash operation for the verification to be secure. message\n @return _orderId the bytes20 which is the orderId"},"functionSelector":"2654ec7e","id":3974,"implemented":false,"kind":"function","modifiers":[],"name":"createOrder","nameLocation":"4516:11:14","nodeType":"FunctionDefinition","parameters":{"id":3970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3953,"mutability":"mutable","name":"_token","nameLocation":"4545:6:14","nodeType":"VariableDeclaration","scope":3974,"src":"4537:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3952,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3955,"mutability":"mutable","name":"_amount","nameLocation":"4570:7:14","nodeType":"VariableDeclaration","scope":3974,"src":"4562:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3954,"name":"uint256","nodeType":"ElementaryTypeName","src":"4562:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3957,"mutability":"mutable","name":"_institutionCode","nameLocation":"4596:16:14","nodeType":"VariableDeclaration","scope":3974,"src":"4588:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3956,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4588:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3959,"mutability":"mutable","name":"_label","nameLocation":"4630:6:14","nodeType":"VariableDeclaration","scope":3974,"src":"4622:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3958,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4622:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3961,"mutability":"mutable","name":"_rate","nameLocation":"4653:5:14","nodeType":"VariableDeclaration","scope":3974,"src":"4646:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3960,"name":"uint96","nodeType":"ElementaryTypeName","src":"4646:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3963,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"4677:19:14","nodeType":"VariableDeclaration","scope":3974,"src":"4669:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3962,"name":"address","nodeType":"ElementaryTypeName","src":"4669:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3965,"mutability":"mutable","name":"_senderFee","nameLocation":"4714:10:14","nodeType":"VariableDeclaration","scope":3974,"src":"4706:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3964,"name":"uint256","nodeType":"ElementaryTypeName","src":"4706:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3967,"mutability":"mutable","name":"_refundAddress","nameLocation":"4742:14:14","nodeType":"VariableDeclaration","scope":3974,"src":"4734:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3966,"name":"address","nodeType":"ElementaryTypeName","src":"4734:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3969,"mutability":"mutable","name":"messageHash","nameLocation":"4783:11:14","nodeType":"VariableDeclaration","scope":3974,"src":"4767:27:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":3968,"name":"string","nodeType":"ElementaryTypeName","src":"4767:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4527:268:14"},"returnParameters":{"id":3973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3972,"mutability":"mutable","name":"_orderId","nameLocation":"4822:8:14","nodeType":"VariableDeclaration","scope":3974,"src":"4814:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3971,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4814:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4813:18:14"},"scope":4055,"src":"4507:325:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3975,"nodeType":"StructuredDocumentation","src":"4838:891:14","text":"@notice settle transaction and distribute rewards accordingly.\n Requirements:\n {only aggregators call}.\n `_orderId` it must be less than total ids.\n `_orderId` it must be an open Id.\n `_primaryValidator` must have stake on the Paycrest staking platform.\n `_secondaryValidators` must have stake on the Paycrest staking platform.\n `amount` must be greater than minimum\n `_refundable` refundable address must not be zero address\n @param _orderId transaction Id.\n @param _label reference of the sender.\n @param _validators arrays of secondary validators.\n @param _liquidityProvider address of the liquidity provider.\n @param _settlePercent rate at which the transaction is settled.\n @param _isPartner is the liquidity provider a partner.\n @return return the status of transaction {bool}"},"functionSelector":"137764fb","id":3997,"implemented":false,"kind":"function","modifiers":[],"name":"settle","nameLocation":"5743:6:14","nodeType":"FunctionDefinition","parameters":{"id":3991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3977,"mutability":"mutable","name":"_splitOrderId","nameLocation":"5758:13:14","nodeType":"VariableDeclaration","scope":3997,"src":"5750:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5750:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3979,"mutability":"mutable","name":"_orderId","nameLocation":"5781:8:14","nodeType":"VariableDeclaration","scope":3997,"src":"5773:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5773:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3981,"mutability":"mutable","name":"_label","nameLocation":"5799:6:14","nodeType":"VariableDeclaration","scope":3997,"src":"5791:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3980,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5791:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3984,"mutability":"mutable","name":"_validators","nameLocation":"5826:11:14","nodeType":"VariableDeclaration","scope":3997,"src":"5807:30:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3982,"name":"address","nodeType":"ElementaryTypeName","src":"5807:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3983,"nodeType":"ArrayTypeName","src":"5807:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3986,"mutability":"mutable","name":"_liquidityProvider","nameLocation":"5847:18:14","nodeType":"VariableDeclaration","scope":3997,"src":"5839:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3985,"name":"address","nodeType":"ElementaryTypeName","src":"5839:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3988,"mutability":"mutable","name":"_settlePercent","nameLocation":"5874:14:14","nodeType":"VariableDeclaration","scope":3997,"src":"5867:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3987,"name":"uint64","nodeType":"ElementaryTypeName","src":"5867:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3990,"mutability":"mutable","name":"_isPartner","nameLocation":"5895:10:14","nodeType":"VariableDeclaration","scope":3997,"src":"5890:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3989,"name":"bool","nodeType":"ElementaryTypeName","src":"5890:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5749:157:14"},"returnParameters":{"id":3996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3993,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3997,"src":"5925:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5925:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3997,"src":"5934:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3994,"name":"address","nodeType":"ElementaryTypeName","src":"5934:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5924:18:14"},"scope":4055,"src":"5734:209:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3998,"nodeType":"StructuredDocumentation","src":"5949:383:14","text":"@notice refund to the specified refundable address.\n Requirements:\n {only aggregators call}.\n `_orderId` it must be less than total ids.\n `_orderId` it must be an open Id.\n `isFulfilled` must be false.\n @param _orderId transaction Id.\n @param _label reference of the sender.\n @return return the status of transaction {bool}"},"functionSelector":"e4683a79","id":4007,"implemented":false,"kind":"function","modifiers":[],"name":"refund","nameLocation":"6346:6:14","nodeType":"FunctionDefinition","parameters":{"id":4003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4000,"mutability":"mutable","name":"_orderId","nameLocation":"6361:8:14","nodeType":"VariableDeclaration","scope":4007,"src":"6353:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3999,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6353:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4002,"mutability":"mutable","name":"_label","nameLocation":"6379:6:14","nodeType":"VariableDeclaration","scope":4007,"src":"6371:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4001,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6371:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6352:34:14"},"returnParameters":{"id":4006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4005,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4007,"src":"6405:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4004,"name":"bool","nodeType":"ElementaryTypeName","src":"6405:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6404:6:14"},"scope":4055,"src":"6337:74:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4008,"nodeType":"StructuredDocumentation","src":"6417:152:14","text":"@notice get supported token from Paycrest.\n @param _token address of the token to check.\n @return return the status of `_token` {bool}"},"functionSelector":"75151b63","id":4015,"implemented":false,"kind":"function","modifiers":[],"name":"isTokenSupported","nameLocation":"6583:16:14","nodeType":"FunctionDefinition","parameters":{"id":4011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4010,"mutability":"mutable","name":"_token","nameLocation":"6608:6:14","nodeType":"VariableDeclaration","scope":4015,"src":"6600:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4009,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6599:16:14"},"returnParameters":{"id":4014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4015,"src":"6638:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4012,"name":"bool","nodeType":"ElementaryTypeName","src":"6638:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6637:6:14"},"scope":4055,"src":"6574:70:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4016,"nodeType":"StructuredDocumentation","src":"6650:70:14","text":"@notice get order details.\n @param _orderId transaction Id."},"functionSelector":"768c6ec0","id":4024,"implemented":false,"kind":"function","modifiers":[],"name":"getOrderInfo","nameLocation":"6734:12:14","nodeType":"FunctionDefinition","parameters":{"id":4019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4018,"mutability":"mutable","name":"_orderId","nameLocation":"6755:8:14","nodeType":"VariableDeclaration","scope":4024,"src":"6747:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6747:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6746:18:14"},"returnParameters":{"id":4023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4022,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4024,"src":"6787:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_memory_ptr","typeString":"struct IPaycrest.Order"},"typeName":{"id":4021,"nodeType":"UserDefinedTypeName","pathNode":{"id":4020,"name":"Order","nameLocations":["6787:5:14"],"nodeType":"IdentifierPath","referencedDeclaration":3950,"src":"6787:5:14"},"referencedDeclaration":3950,"src":"6787:5:14","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3950_storage_ptr","typeString":"struct IPaycrest.Order"}},"visibility":"internal"}],"src":"6786:14:14"},"scope":4055,"src":"6725:76:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4025,"nodeType":"StructuredDocumentation","src":"6807:323:14","text":"@notice get every rewards and address on Paycrest.\n @return protocolReward amount that will be taken in percentage on all trade.\n @return validatorFeePercent amount that will be given to primary validator in percentage from `protocolReward`\n @return max_bps maximum amount in bps \"100% == 100_000\"."},"functionSelector":"b810c636","id":4034,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"7144:13:14","nodeType":"FunctionDefinition","parameters":{"id":4026,"nodeType":"ParameterList","parameters":[],"src":"7157:2:14"},"returnParameters":{"id":4033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4028,"mutability":"mutable","name":"protocolReward","nameLocation":"7199:14:14","nodeType":"VariableDeclaration","scope":4034,"src":"7191:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4027,"name":"uint128","nodeType":"ElementaryTypeName","src":"7191:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4030,"mutability":"mutable","name":"validatorFeePercent","nameLocation":"7232:19:14","nodeType":"VariableDeclaration","scope":4034,"src":"7224:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4029,"name":"uint128","nodeType":"ElementaryTypeName","src":"7224:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4032,"mutability":"mutable","name":"max_bps","nameLocation":"7270:7:14","nodeType":"VariableDeclaration","scope":4034,"src":"7262:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4031,"name":"uint256","nodeType":"ElementaryTypeName","src":"7262:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7181:102:14"},"scope":4055,"src":"7135:149:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4035,"nodeType":"StructuredDocumentation","src":"7290:89:14","text":"@notice get address of liquidity aggregator.\n @return address of `Aggregator`."},"functionSelector":"e8d6e0de","id":4040,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregatorAddress","nameLocation":"7393:20:14","nodeType":"FunctionDefinition","parameters":{"id":4036,"nodeType":"ParameterList","parameters":[],"src":"7413:2:14"},"returnParameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4038,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4040,"src":"7438:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4037,"name":"address","nodeType":"ElementaryTypeName","src":"7438:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7437:9:14"},"scope":4055,"src":"7384:63:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4041,"nodeType":"StructuredDocumentation","src":"7453:77:14","text":"@notice get aggregator public key.\n @return aggregator public key."},"functionSelector":"3ad59dbc","id":4046,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregator","nameLocation":"7544:13:14","nodeType":"FunctionDefinition","parameters":{"id":4042,"nodeType":"ParameterList","parameters":[],"src":"7557:2:14"},"returnParameters":{"id":4045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4044,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4046,"src":"7582:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4043,"name":"bytes","nodeType":"ElementaryTypeName","src":"7582:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7581:14:14"},"scope":4055,"src":"7535:61:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4047,"nodeType":"StructuredDocumentation","src":"7606:136:14","text":"@notice get address of sender whitelisting status.\n @param sender address of the sender.\n @return address of `status`."},"functionSelector":"d8e8de34","id":4054,"implemented":false,"kind":"function","modifiers":[],"name":"getWhitelistedStatus","nameLocation":"7756:20:14","nodeType":"FunctionDefinition","parameters":{"id":4050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4049,"mutability":"mutable","name":"sender","nameLocation":"7785:6:14","nodeType":"VariableDeclaration","scope":4054,"src":"7777:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4048,"name":"address","nodeType":"ElementaryTypeName","src":"7777:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7776:16:14"},"returnParameters":{"id":4053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4054,"src":"7815:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4051,"name":"bool","nodeType":"ElementaryTypeName","src":"7815:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7814:6:14"},"scope":4055,"src":"7747:74:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4056,"src":"265:7559:14","usedErrors":[]}],"src":"38:7787:14"},"id":14}},"contracts":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"OwnableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() { _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"IERC20Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":\"IERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"IERC20PermitUpgradeable":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.","kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":\"IERC20PermitUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"SafeERC20Upgradeable":{"abi":[],"devdoc":{"details":"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","kind":"dev","methods":{},"title":"SafeERC20","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220127eb4d243173cf9ac6ea39f737ccd926bf8210c3a138b2e7d70f40b43f8204564736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH31 0xB4D243173CF9AC6EA39F737CCD926BF8210C3A138B2E7D70F40B43F8204564 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"734:6366:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220127eb4d243173cf9ac6ea39f737ccd926bf8210c3a138b2e7d70f40b43f8204564736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH31 0xB4D243173CF9AC6EA39F737CCD926BF8210C3A138B2E7D70F40B43F8204564 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"734:6366:4:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_callOptionalReturn(contract IERC20Upgradeable,bytes memory)":"infinite","_callOptionalReturnBool(contract IERC20Upgradeable,bytes memory)":"infinite","forceApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeDecreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safeIncreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safePermit(contract IERC20PermitUpgradeable,address,address,uint256,uint256,uint8,bytes32,bytes32)":"infinite","safeTransfer(contract IERC20Upgradeable,address,uint256)":"infinite","safeTransferFrom(contract IERC20Upgradeable,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":\"SafeERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n /**\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n /**\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n */\\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n /**\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n }\\n\\n /**\\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n }\\n }\\n\\n /**\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\n */\\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n _callOptionalReturn(token, approvalCall);\\n }\\n }\\n\\n /**\\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n * Revert on invalid signature.\\n */\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n *\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n */\\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n // and not revert is the subcall reverts.\\n\\n (bool success, bytes memory returndata) = address(token).call(data);\\n return\\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220df70283ff728a1a88debad8b56cd6b31b858a143aff601e8f42a16699317e70d64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF PUSH17 0x283FF728A1A88DEBAD8B56CD6B31B858A1 NUMBER 0xAF 0xF6 ADD 0xE8 DELEGATECALL 0x2A AND PUSH10 0x9317E70D64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:9180:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220df70283ff728a1a88debad8b56cd6b31b858a143aff601e8f42a16699317e70d64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF PUSH17 0x283FF728A1A88DEBAD8B56CD6B31B858A1 NUMBER 0xAF 0xF6 ADD 0xE8 DELEGATECALL 0x2A AND PUSH10 0x9317E70D64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:9180:5:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"StringsUpgradeable":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3fb710f8a96e0067535a9f765fa3f89f59b6e06ba7186e35593d35f029926fa64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xFB PUSH18 0xF8A96E0067535A9F765FA3F89F59B6E06BA PUSH18 0x86E35593D35F029926FA64736F6C63430008 SLT STOP CALLER ","sourceMap":"242:2603:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3fb710f8a96e0067535a9f765fa3f89f59b6e06ba7186e35593d35f029926fa64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xFB PUSH18 0xF8A96E0067535A9F765FA3F89F59B6E06BA PUSH18 0x86E35593D35F029926FA64736F6C63430008 SLT STOP CALLER ","sourceMap":"242:2603:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":\"StringsUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ECDSAUpgradeable":{"abi":[],"devdoc":{"details":"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220717bce4509ab3c6d09fb52c5b26660a25a99945b32e0484c654da9bebac1986064736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x7BCE4509AB3C6D09FB52C5B26660A25A9994 JUMPDEST ORIGIN 0xE0 BASEFEE 0x4C PUSH6 0x4DA9BEBAC198 PUSH1 0x64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"380:8783:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220717bce4509ab3c6d09fb52c5b26660a25a99945b32e0484c654da9bebac1986064736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x7BCE4509AB3C6D09FB52C5B26660A25A9994 JUMPDEST ORIGIN 0xE0 BASEFEE 0x4C PUSH6 0x4DA9BEBAC198 PUSH1 0x64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"380:8783:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_throwError(enum ECDSAUpgradeable.RecoverError)":"infinite","recover(bytes32,bytes memory)":"infinite","recover(bytes32,bytes32,bytes32)":"infinite","recover(bytes32,uint8,bytes32,bytes32)":"infinite","toDataWithIntendedValidatorHash(address,bytes memory)":"infinite","toEthSignedMessageHash(bytes memory)":"infinite","toEthSignedMessageHash(bytes32)":"infinite","toTypedDataHash(bytes32,bytes32)":"infinite","tryRecover(bytes32,bytes memory)":"infinite","tryRecover(bytes32,bytes32,bytes32)":"infinite","tryRecover(bytes32,uint8,bytes32,bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":\"ECDSAUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n mstore(0x1c, hash)\\n message := keccak256(0x00, 0x3c)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n mstore(add(ptr, 0x02), domainSeparator)\\n mstore(add(ptr, 0x22), structHash)\\n data := keccak256(ptr, 0x42)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n * `validator` and `data` according to the version 0 of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n }\\n}\\n\",\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"MathUpgradeable":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b19238f22d888be15246afd45704547bf692f3a8d19f34db13095fb48eddd5264736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x19238F22D888BE15246AFD45 PUSH17 0x4547BF692F3A8D19F34DB13095FB48EDDD MSTORE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12593:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b19238f22d888be15246afd45704547bf692f3a8d19f34db13095fb48eddd5264736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x19238F22D888BE15246AFD45 PUSH17 0x4547BF692F3A8D19F34DB13095FB48EDDD MSTORE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12593:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum MathUpgradeable.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum MathUpgradeable.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum MathUpgradeable.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum MathUpgradeable.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum MathUpgradeable.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":\"MathUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"SignedMathUpgradeable":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70ce3cff074bb9f2b399f4851e008094b94d7fe429bd3afbf9c6f170d3375ce64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC 0xE3 0xCF CREATE PUSH21 0xBB9F2B399F4851E008094B94D7FE429BD3AFBF9C6F OR 0xD CALLER PUSH22 0xCE64736F6C6343000812003300000000000000000000 ","sourceMap":"215:1058:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70ce3cff074bb9f2b399f4851e008094b94d7fe429bd3afbf9c6f170d3375ce64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC 0xE3 0xCF CREATE PUSH21 0xBB9F2B399F4851E008094B94D7FE429BD3AFBF9C6F OR 0xD CALLER PUSH22 0xCE64736F6C6343000812003300000000000000000000 ","sourceMap":"215:1058:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":\"SignedMathUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/Paycrest.sol":{"Paycrest":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"institutionCode","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"string","name":"messageHash","type":"string"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"protocolFee","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"validatorFeePercent","type":"uint128"}],"name":"PaycrestFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardValidator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"SetAggregator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SettingManagerBool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"uint96","name":"settlePercent","type":"uint96"}],"name":"Settled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSenderFee","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_institutionCode","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"uint96","name":"_rate","type":"uint96"},{"internalType":"address","name":"_senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"_senderFee","type":"uint256"},{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"string","name":"messageHash","type":"string"}],"name":"createOrder","outputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAggregator","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"name":"getOrderInfo","outputs":[{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"senderFee","type":"uint256"},{"internalType":"uint96","name":"rate","type":"uint96"},{"internalType":"bool","name":"isFulfilled","type":"bool"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint96","name":"currentBPS","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPaycrest.Order","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"code","type":"bytes32"}],"name":"getSupportedInstitutionName","outputs":[{"components":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"bytes32","name":"currency","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.InstitutionByCode","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"}],"name":"getSupportedInstitutions","outputs":[{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usdc","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"}],"name":"refund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"institutions","type":"tuple[]"}],"name":"setSupportedInstitutions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"settingManagerBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"address[]","name":"_validators","type":"address[]"},{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint64","name":"_settlePercent","type":"uint64"},{"internalType":"bool","name":"_isPartner","type":"bool"}],"name":"settle","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"updateProtocolAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"updateProtocolAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"_protocolFeePercent","type":"uint128"},{"internalType":"uint128","name":"_validatorFeePercent","type":"uint128"}],"name":"updateProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)":{"details":"Emitted when deposit is made."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Refunded(bytes32,bytes32)":{"details":"Emitted when aggregator refund transaction."},"RewardValidator(address,uint256)":{"details":"Emitted when primary validator get therir rewards."},"Settled(bytes32,bytes32,bytes32,address,uint96)":{"details":"Emitted when aggregator settle transaction."},"TransferSenderFee(address,uint256)":{"details":"Emitted when sender get therir rewards."}},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"details":"See {createOrder-IPaycrest}. "},"getAggregator()":{"details":"See {getAggregator-IPaycrest}. "},"getAggregatorAddress()":{"details":"See {getAggregatorAddress-IPaycrest}. "},"getFeeDetails()":{"details":"See {getFeeDetails-IPaycrest}. "},"getOrderInfo(bytes32)":{"details":"See {getOrderInfo-IPaycrest}. "},"getSupportedInstitutionName(bytes32)":{"details":"See {getSupportedInstitutionName-IPaycrest}. "},"getWhitelistedStatus(address)":{"details":"See {getWhitelistedStatus-IPaycrest}. "},"isTokenSupported(address)":{"details":"See {isTokenSupported-IPaycrest}. "},"owner()":{"details":"Returns the address of the current owner."},"refund(bytes32,bytes32)":{"details":"See {refund-IPaycrest}. "},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":{"details":"See {settle-IPaycrest}. "},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2854":{"entryPoint":null,"id":2854,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_281":{"entryPoint":40,"id":281,"parameterSlots":0,"returnSlots":0},"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack":{"entryPoint":334,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":420,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":373,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":437,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":238,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":407,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a":{"entryPoint":255,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1638:15","statements":[{"body":{"nodeType":"YulBlock","src":"103:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"120:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"125:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"113:6:15"},"nodeType":"YulFunctionCall","src":"113:19:15"},"nodeType":"YulExpressionStatement","src":"113:19:15"},{"nodeType":"YulAssignment","src":"141:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"160:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"165:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"156:3:15"},"nodeType":"YulFunctionCall","src":"156:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"141:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"75:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"80:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"91:11:15","type":""}],"src":"7:169:15"},{"body":{"nodeType":"YulBlock","src":"288:120:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"310:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"318:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"306:3:15"},"nodeType":"YulFunctionCall","src":"306:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"322:34:15","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"299:6:15"},"nodeType":"YulFunctionCall","src":"299:58:15"},"nodeType":"YulExpressionStatement","src":"299:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"378:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"386:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"374:3:15"},"nodeType":"YulFunctionCall","src":"374:15:15"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"391:9:15","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"367:6:15"},"nodeType":"YulFunctionCall","src":"367:34:15"},"nodeType":"YulExpressionStatement","src":"367:34:15"}]},"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"280:6:15","type":""}],"src":"182:226:15"},{"body":{"nodeType":"YulBlock","src":"560:220:15","statements":[{"nodeType":"YulAssignment","src":"570:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"636:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"641:2:15","type":"","value":"39"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"577:58:15"},"nodeType":"YulFunctionCall","src":"577:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"570:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"742:3:15"}],"functionName":{"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nodeType":"YulIdentifier","src":"653:88:15"},"nodeType":"YulFunctionCall","src":"653:93:15"},"nodeType":"YulExpressionStatement","src":"653:93:15"},{"nodeType":"YulAssignment","src":"755:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"766:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"771:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"762:3:15"},"nodeType":"YulFunctionCall","src":"762:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"755:3:15"}]}]},"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"548:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"556:3:15","type":""}],"src":"414:366:15"},{"body":{"nodeType":"YulBlock","src":"957:248:15","statements":[{"nodeType":"YulAssignment","src":"967:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"979:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"990:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"975:3:15"},"nodeType":"YulFunctionCall","src":"975:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"967:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1014:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1025:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1010:3:15"},"nodeType":"YulFunctionCall","src":"1010:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1033:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"1039:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1029:3:15"},"nodeType":"YulFunctionCall","src":"1029:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1003:6:15"},"nodeType":"YulFunctionCall","src":"1003:47:15"},"nodeType":"YulExpressionStatement","src":"1003:47:15"},{"nodeType":"YulAssignment","src":"1059:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1193:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1067:124:15"},"nodeType":"YulFunctionCall","src":"1067:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1059:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"937:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"952:4:15","type":""}],"src":"786:419:15"},{"body":{"nodeType":"YulBlock","src":"1254:43:15","statements":[{"nodeType":"YulAssignment","src":"1264:27:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1279:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"1286:4:15","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1275:3:15"},"nodeType":"YulFunctionCall","src":"1275:16:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1264:7:15"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1236:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1246:7:15","type":""}],"src":"1211:86:15"},{"body":{"nodeType":"YulBlock","src":"1364:51:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1381:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1402:5:15"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"1386:15:15"},"nodeType":"YulFunctionCall","src":"1386:22:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1374:6:15"},"nodeType":"YulFunctionCall","src":"1374:35:15"},"nodeType":"YulExpressionStatement","src":"1374:35:15"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1352:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1359:3:15","type":""}],"src":"1303:112:15"},{"body":{"nodeType":"YulBlock","src":"1515:120:15","statements":[{"nodeType":"YulAssignment","src":"1525:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1537:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1548:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1533:3:15"},"nodeType":"YulFunctionCall","src":"1533:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1525:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1601:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1614:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1625:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1610:3:15"},"nodeType":"YulFunctionCall","src":"1610:17:15"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"1561:39:15"},"nodeType":"YulFunctionCall","src":"1561:67:15"},"nodeType":"YulExpressionStatement","src":"1561:67:15"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1487:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1499:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1510:4:15","type":""}],"src":"1421:214:15"}]},"contents":"{\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is initi\")\n\n mstore(add(memPtr, 32), \"alizing\")\n\n }\n\n function abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 39)\n store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d2565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000175565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620000ec5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e39190620001b5565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015d602783620000ee565b91506200016a82620000ff565b604082019050919050565b6000602082019050818103600083015262000190816200014e565b9050919050565b600060ff82169050919050565b620001af8162000197565b82525050565b6000602082019050620001cc6000830184620001a4565b92915050565b61416180620001e26000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063d8e8de341161007c578063d8e8de341461034f578063d9caed121461037f578063e4683a791461039b578063e8d6e0de146103cb578063f2fde38b146103e9578063f5326b191461040557610137565b80638da5cb5b146102bd57806399e3c0b4146102db578063b810c636146102f7578063c4d66de814610317578063cb79455b1461033357610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb1461027157806387490d861461028d57610137565b8063026213381461013c578063137764fb1461016c5780632654ec7e1461019d57806332200882146101cd5780633ad59dbc146101e9575b600080fd5b61015660048036038101906101519190612780565b610421565b604051610163919061289a565b60405180910390f35b610186600480360381019061018191906129f7565b61055f565b604051610194929190612ad7565b60405180910390f35b6101b760048036038101906101b29190612bd0565b61096a565b6040516101c49190612cbb565b60405180910390f35b6101e760048036038101906101e29190612e7a565b610e42565b005b6101f1610f56565b6040516101fe9190612f55565b60405180910390f35b61020f610fe8565b005b61022b60048036038101906102269190612f77565b610ffc565b6040516102389190612fb3565b60405180910390f35b61025b60048036038101906102569190612780565b611052565b60405161026891906130c1565b60405180910390f35b61028b600480360381019061028691906130dd565b611283565b005b6102a760048036038101906102a29190612780565b6113d0565b6040516102b4919061314c565b60405180910390f35b6102c5611411565b6040516102d29190613167565b60405180910390f35b6102f560048036038101906102f09190613182565b61143b565b005b6102ff6115f0565b60405161030e9392919061320f565b60405180910390f35b610331600480360381019061032c9190612f77565b611641565b005b61034d6004803603810190610348919061329c565b611858565b005b61036960048036038101906103649190612f77565b6118af565b6040516103769190612fb3565b60405180910390f35b610399600480360381019061039491906132e9565b611905565b005b6103b560048036038101906103b0919061333c565b611991565b6040516103c29190612fb3565b60405180910390f35b6103d3611c3e565b6040516103e09190613167565b60405180910390f35b61040360048036038101906103fe9190612f77565b611c68565b005b61041f600480360381019061041a91906133a8565b611ceb565b005b60606000609e6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049e57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610458565b50505050905060008151905060008167ffffffffffffffff8111156104c6576104c5612ce7565b5b6040519080825280602002602001820160405280156104ff57816020015b6104ec612613565b8152602001906001900390816104e45790505b50905060005b82811015610553578381815181106105205761051f6133e8565b5b602002602001015182828151811061053b5761053a6133e8565b5b60200260200101819052508080600101915050610505565b50809350505050919050565b600080606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e990613474565b60405180910390fd5b60a060008a8152602001908152602001600020600401600c9054906101000a900460ff1615610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d906134e0565b60405180910390fd5b600060a060008b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff1660a060008c815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff166106d8919061352f565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600061071d8b8767ffffffffffffffff1687611da2565b9050600060a060008d815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036107bc57600160a060008d8152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a060008d81526020019081526020016000206003015411156107bb576107ba8b611f3d565b5b5b60008160000151111561086f578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b815260040161082a92919061356f565b6020604051808303816000875af1158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d91906135ad565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b81526004016108ae92919061356f565b6020604051808303816000875af11580156108cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f191906135ad565b506109028989848460400151612091565b8673ffffffffffffffffffffffffffffffffffffffff168b7ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268e8d8a60405161094d93929190613615565b60405180910390a38a829350935050509850989650505050505050565b60006109798b8b86898d6121db565b606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168b6109b8919061364c565b6109c291906136bd565b851115610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb9061373a565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610a419392919061375a565b6020604051808303816000875af1158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8491906135ad565b5060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610ad590613791565b91905055503360a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610b2c92919061356f565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b81525060a0600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610e2c959493929190613846565b60405180910390a49a9950505050505050505050565b610e4a6123ea565b60008151905060005b81811015610f5057609e6000858152602001908152602001600020838281518110610e8157610e806133e8565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610ee657610ee56133e8565b5b602002602001015160200151815260200185815250609f6000858481518110610f1257610f116133e8565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610e53565b50505050565b606060698054610f65906138c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f91906138c3565b8015610fde5780601f10610fb357610100808354040283529160200191610fde565b820191906000526020600020905b815481529060010190602001808311610fc157829003601f168201915b5050505050905090565b610ff06123ea565b610ffa6000612468565b565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61105a612633565b60a06000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b61128b6123ea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613940565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113635780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113cc5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113d86126f5565b609f6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114436123ea565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990613940565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036115315780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115b05780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516115e393929190613960565b60405180910390a1505050565b6000806000606660009054906101000a90046fffffffffffffffffffffffffffffffff16606660109054906101000a90046fffffffffffffffffffffffffffffffff16606554925092509250909192565b60008060019054906101000a900460ff161590508080156116725750600160008054906101000a900460ff1660ff16105b8061169f57506116813061252e565b15801561169e5750600160008054906101000a900460ff1660ff16145b5b6116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590613a09565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561171b576001600060016101000a81548160ff0219169083151502179055505b6001609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506101f4606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506117fb612551565b80156118545760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161184b9190613a71565b60405180910390a15b5050565b6118606123ea565b818160699182611871929190613c39565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516118a3929190613d36565b60405180910390a15050565b6000609d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61190d6123ea565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161194892919061356f565b6020604051808303816000875af1158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b91906135ad565b50505050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90613474565b60405180910390fd5b60a06000848152602001908152602001600020600401600c9054906101000a900460ff1615611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e906134e0565b60405180910390fd5b600160a06000858152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a0600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60a0600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660a06000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611bb992919061356f565b6020604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc91906135ad565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611c2c9190612cbb565b60405180910390a26001905092915050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c706123ea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613dcc565b60405180910390fd5b611ce881612468565b50565b611cf36123ea565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051611d96929190613dec565b60405180910390a15050565b611daa612715565b600060a0600086815260200190815260200160002060060154905060a060008681526020019081526020016000206003015481611de79190613e15565b9050606554846bffffffffffffffffffffffff1682611e06919061364c565b611e1091906136bd565b826020018181525050606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360200151611e5c919061364c565b611e6691906136bd565b82600001818152505081600001518260200151611e839190613e15565b826020018181525050606554606660109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360000151611ecf919061364c565b611ed991906136bd565b826040018181525050600082604001518360000151611ef89190613e15565b90508315611f29578083602001818151611f129190613e49565b915081815250506000836000018181525050611f34565b808360000181815250505b50509392505050565b600060a0600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060a0600084815260200190815260200160002060030154905060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161200492919061356f565b6020604051808303816000875af1158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906135ad565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b6000848490509050600081836120a791906136bd565b905060005b828110156121d2578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8888848181106120e3576120e26133e8565b5b90506020020160208101906120f89190612f77565b846040518363ffffffff1660e01b815260040161211692919061356f565b6020604051808303816000875af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215991906135ad565b508187878381811061216e5761216d6133e8565b5b90506020020160208101906121839190612f77565b73ffffffffffffffffffffffffffffffffffffffff167f61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c260405160405180910390a380806001019150506120ac565b50505050505050565b609c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225e90613ec9565b60405180910390fd5b600084116122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190613f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090613fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f90613fa1565b60405180910390fd5b6000801b609f600083815260200190815260200160002060000154036123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123da9061400d565b60405180910390fd5b5050505050565b6123f26125aa565b73ffffffffffffffffffffffffffffffffffffffff16612410611411565b73ffffffffffffffffffffffffffffffffffffffff1614612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614079565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166125a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125979061410b565b60405180910390fd5b6125a86125b2565b565b600033905090565b600060019054906101000a900460ff16612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f89061410b565b60405180910390fd5b61261161260c6125aa565b612468565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b60405180606001604052806000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61275d8161274a565b811461276857600080fd5b50565b60008135905061277a81612754565b92915050565b60006020828403121561279657612795612740565b5b60006127a48482850161276b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6127e28161274a565b82525050565b6040820160008201516127fe60008501826127d9565b50602082015161281160208501826127d9565b50505050565b600061282383836127e8565b60408301905092915050565b6000602082019050919050565b6000612847826127ad565b61285181856127b8565b935061285c836127c9565b8060005b8381101561288d5781516128748882612817565b975061287f8361282f565b925050600181019050612860565b5085935050505092915050565b600060208201905081810360008301526128b4818461283c565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126128e1576128e06128bc565b5b8235905067ffffffffffffffff8111156128fe576128fd6128c1565b5b60208301915083602082028301111561291a576129196128c6565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061294c82612921565b9050919050565b61295c81612941565b811461296757600080fd5b50565b60008135905061297981612953565b92915050565b600067ffffffffffffffff82169050919050565b61299c8161297f565b81146129a757600080fd5b50565b6000813590506129b981612993565b92915050565b60008115159050919050565b6129d4816129bf565b81146129df57600080fd5b50565b6000813590506129f1816129cb565b92915050565b60008060008060008060008060e0898b031215612a1757612a16612740565b5b6000612a258b828c0161276b565b9850506020612a368b828c0161276b565b9750506040612a478b828c0161276b565b965050606089013567ffffffffffffffff811115612a6857612a67612745565b5b612a748b828c016128cb565b95509550506080612a878b828c0161296a565b93505060a0612a988b828c016129aa565b92505060c0612aa98b828c016129e2565b9150509295985092959890939650565b612ac28161274a565b82525050565b612ad181612941565b82525050565b6000604082019050612aec6000830185612ab9565b612af96020830184612ac8565b9392505050565b6000819050919050565b612b1381612b00565b8114612b1e57600080fd5b50565b600081359050612b3081612b0a565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612b5781612b36565b8114612b6257600080fd5b50565b600081359050612b7481612b4e565b92915050565b60008083601f840112612b9057612b8f6128bc565b5b8235905067ffffffffffffffff811115612bad57612bac6128c1565b5b602083019150836001820283011115612bc957612bc86128c6565b5b9250929050565b6000806000806000806000806000806101208b8d031215612bf457612bf3612740565b5b6000612c028d828e0161296a565b9a50506020612c138d828e01612b21565b9950506040612c248d828e0161276b565b9850506060612c358d828e0161276b565b9750506080612c468d828e01612b65565b96505060a0612c578d828e0161296a565b95505060c0612c688d828e01612b21565b94505060e0612c798d828e0161296a565b9350506101008b013567ffffffffffffffff811115612c9b57612c9a612745565b5b612ca78d828e01612b7a565b92509250509295989b9194979a5092959850565b6000602082019050612cd06000830184612ab9565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d1f82612cd6565b810181811067ffffffffffffffff82111715612d3e57612d3d612ce7565b5b80604052505050565b6000612d51612736565b9050612d5d8282612d16565b919050565b600067ffffffffffffffff821115612d7d57612d7c612ce7565b5b602082029050602081019050919050565b600080fd5b600060408284031215612da957612da8612d8e565b5b612db36040612d47565b90506000612dc38482850161276b565b6000830152506020612dd78482850161276b565b60208301525092915050565b6000612df6612df184612d62565b612d47565b90508083825260208201905060408402830185811115612e1957612e186128c6565b5b835b81811015612e425780612e2e8882612d93565b845260208401935050604081019050612e1b565b5050509392505050565b600082601f830112612e6157612e606128bc565b5b8135612e71848260208601612de3565b91505092915050565b60008060408385031215612e9157612e90612740565b5b6000612e9f8582860161276b565b925050602083013567ffffffffffffffff811115612ec057612ebf612745565b5b612ecc85828601612e4c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f10578082015181840152602081019050612ef5565b60008484015250505050565b6000612f2782612ed6565b612f318185612ee1565b9350612f41818560208601612ef2565b612f4a81612cd6565b840191505092915050565b60006020820190508181036000830152612f6f8184612f1c565b905092915050565b600060208284031215612f8d57612f8c612740565b5b6000612f9b8482850161296a565b91505092915050565b612fad816129bf565b82525050565b6000602082019050612fc86000830184612fa4565b92915050565b612fd781612941565b82525050565b612fe681612b00565b82525050565b612ff581612b36565b82525050565b613004816129bf565b82525050565b610120820160008201516130216000850182612fce565b5060208201516130346020850182612fce565b5060408201516130476040850182612fce565b50606082015161305a6060850182612fdd565b50608082015161306d6080850182612fec565b5060a082015161308060a0850182612ffb565b5060c082015161309360c0850182612fce565b5060e08201516130a660e0850182612fec565b506101008201516130bb610100850182612fdd565b50505050565b6000610120820190506130d7600083018461300a565b92915050565b600080604083850312156130f4576130f3612740565b5b60006131028582860161276b565b92505060206131138582860161296a565b9150509250929050565b60408201600082015161313360008501826127d9565b50602082015161314660208501826127d9565b50505050565b6000604082019050613161600083018461311d565b92915050565b600060208201905061317c6000830184612ac8565b92915050565b60008060006060848603121561319b5761319a612740565b5b60006131a98682870161276b565b93505060206131ba8682870161296a565b92505060406131cb868287016129e2565b9150509250925092565b60006fffffffffffffffffffffffffffffffff82169050919050565b6131fa816131d5565b82525050565b61320981612b00565b82525050565b600060608201905061322460008301866131f1565b61323160208301856131f1565b61323e6040830184613200565b949350505050565b60008083601f84011261325c5761325b6128bc565b5b8235905067ffffffffffffffff811115613279576132786128c1565b5b602083019150836001820283011115613295576132946128c6565b5b9250929050565b600080602083850312156132b3576132b2612740565b5b600083013567ffffffffffffffff8111156132d1576132d0612745565b5b6132dd85828601613246565b92509250509250929050565b60008060006060848603121561330257613301612740565b5b60006133108682870161296a565b93505060206133218682870161296a565b925050604061333286828701612b21565b9150509250925092565b6000806040838503121561335357613352612740565b5b60006133618582860161276b565b92505060206133728582860161276b565b9150509250929050565b613385816131d5565b811461339057600080fd5b50565b6000813590506133a28161337c565b92915050565b600080604083850312156133bf576133be612740565b5b60006133cd85828601613393565b92505060206133de85828601613393565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b600061345e600e83613417565b915061346982613428565b602082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b60006134ca600e83613417565b91506134d582613494565b602082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353a82612b36565b915061354583612b36565b925082820390506bffffffffffffffffffffffff81111561356957613568613500565b5b92915050565b60006040820190506135846000830185612ac8565b6135916020830184613200565b9392505050565b6000815190506135a7816129cb565b92915050565b6000602082840312156135c3576135c2612740565b5b60006135d184828501613598565b91505092915050565b6000819050919050565b60006135ff6135fa6135f58461297f565b6135da565b612b36565b9050919050565b61360f816135e4565b82525050565b600060608201905061362a6000830186612ab9565b6136376020830185612ab9565b6136446040830184613606565b949350505050565b600061365782612b00565b915061366283612b00565b925082820261367081612b00565b9150828204841483151761368757613686613500565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136c882612b00565b91506136d383612b00565b9250826136e3576136e261368e565b5b828204905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b6000613724601083613417565b915061372f826136ee565b602082019050919050565b6000602082019050818103600083015261375381613717565b9050919050565b600060608201905061376f6000830186612ac8565b61377c6020830185612ac8565b6137896040830184613200565b949350505050565b600061379c82612b00565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137ce576137cd613500565b5b600182019050919050565b60006137f46137ef6137ea84612b36565b6135da565b612b00565b9050919050565b613804816137d9565b82525050565b82818337600083830152505050565b60006138258385613417565b935061383283858461380a565b61383b83612cd6565b840190509392505050565b600060808201905061385b60008301886137fb565b6138686020830187612ab9565b6138756040830186612ab9565b8181036060830152613888818486613819565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138db57607f821691505b6020821081036138ee576138ed613894565b5b50919050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b600061392a601683613417565b9150613935826138f4565b602082019050919050565b600060208201905081810360008301526139598161391d565b9050919050565b60006060820190506139756000830186612ab9565b6139826020830185612ac8565b61398f6040830184612fa4565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006139f3602e83613417565b91506139fe82613997565b604082019050919050565b60006020820190508181036000830152613a22816139e6565b9050919050565b6000819050919050565b600060ff82169050919050565b6000613a5b613a56613a5184613a29565b6135da565b613a33565b9050919050565b613a6b81613a40565b82525050565b6000602082019050613a866000830184613a62565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613af97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613abc565b613b038683613abc565b95508019841693508086168417925050509392505050565b6000613b36613b31613b2c84612b00565b6135da565b612b00565b9050919050565b6000819050919050565b613b5083613b1b565b613b64613b5c82613b3d565b848454613ac9565b825550505050565b600090565b613b79613b6c565b613b84818484613b47565b505050565b5b81811015613ba857613b9d600082613b71565b600181019050613b8a565b5050565b601f821115613bed57613bbe81613a97565b613bc784613aac565b81016020851015613bd6578190505b613bea613be285613aac565b830182613b89565b50505b505050565b600082821c905092915050565b6000613c1060001984600802613bf2565b1980831691505092915050565b6000613c298383613bff565b9150826002028217905092915050565b613c438383613a8c565b67ffffffffffffffff811115613c5c57613c5b612ce7565b5b613c6682546138c3565b613c71828285613bac565b6000601f831160018114613ca05760008415613c8e578287013590505b613c988582613c1d565b865550613d00565b601f198416613cae86613a97565b60005b82811015613cd657848901358255600182019150602085019450602081019050613cb1565b86831015613cf35784890135613cef601f891682613bff565b8355505b6001600288020188555050505b50505050505050565b6000613d158385612ee1565b9350613d2283858461380a565b613d2b83612cd6565b840190509392505050565b60006020820190508181036000830152613d51818486613d09565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613db6602683613417565b9150613dc182613d5a565b604082019050919050565b60006020820190508181036000830152613de581613da9565b9050919050565b6000604082019050613e0160008301856131f1565b613e0e60208301846131f1565b9392505050565b6000613e2082612b00565b9150613e2b83612b00565b9250828203905081811115613e4357613e42613500565b5b92915050565b6000613e5482612b00565b9150613e5f83612b00565b9250828201905080821115613e7757613e76613500565b5b92915050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613eb3601183613417565b9150613ebe82613e7d565b602082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613f1f600c83613417565b9150613f2a82613ee9565b602082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613f8b601083613417565b9150613f9682613f55565b602082019050919050565b60006020820190508181036000830152613fba81613f7e565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613ff7601683613417565b915061400282613fc1565b602082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614063602083613417565b915061406e8261402d565b602082019050919050565b6000602082019050818103600083015261409281614056565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006140f5602b83613417565b915061410082614099565b604082019050919050565b60006020820190508181036000830152614124816140e8565b905091905056fea26469706673582212208b3d52873e081656e3e1c7f7db950185305cc50b26459ed56e4b7d69aa27310664736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x22 PUSH3 0x28 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x7B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x72 SWAP1 PUSH3 0x175 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP1 AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ PUSH3 0xEC JUMPI PUSH1 0xFF PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0xFF PUSH1 0x40 MLOAD PUSH3 0xE3 SWAP2 SWAP1 PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C697A696E6700000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15D PUSH1 0x27 DUP4 PUSH3 0xEE JUMP JUMPDEST SWAP2 POP PUSH3 0x16A DUP3 PUSH3 0xFF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x190 DUP2 PUSH3 0x14E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1AF DUP2 PUSH3 0x197 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1CC PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x1A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4161 DUP1 PUSH3 0x1E2 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xD8E8DE34 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD8E8DE34 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xE4683A79 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0xE8D6E0DE EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0xF5326B19 EQ PUSH2 0x405 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xB810C636 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x333 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x75151B63 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x768C6EC0 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x87490D86 EQ PUSH2 0x28D JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x2621338 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x137764FB EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x2654EC7E EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x32200882 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x3AD59DBC EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x2780 JUMP JUMPDEST PUSH2 0x421 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x289A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x29F7 JUMP JUMPDEST PUSH2 0x55F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x194 SWAP3 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B2 SWAP2 SWAP1 PUSH2 0x2BD0 JUMP JUMPDEST PUSH2 0x96A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x2CBB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E2 SWAP2 SWAP1 PUSH2 0x2E7A JUMP JUMPDEST PUSH2 0xE42 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F1 PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2F55 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH2 0xFE8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x2780 JUMP JUMPDEST PUSH2 0x1052 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x30C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x28B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x30DD JUMP JUMPDEST PUSH2 0x1283 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x2780 JUMP JUMPDEST PUSH2 0x13D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B4 SWAP2 SWAP1 PUSH2 0x314C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C5 PUSH2 0x1411 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D2 SWAP2 SWAP1 PUSH2 0x3167 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F0 SWAP2 SWAP1 PUSH2 0x3182 JUMP JUMPDEST PUSH2 0x143B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FF PUSH2 0x15F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x320F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x331 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x32C SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH2 0x1641 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x348 SWAP2 SWAP1 PUSH2 0x329C JUMP JUMPDEST PUSH2 0x1858 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH2 0x18AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x376 SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x399 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x394 SWAP2 SWAP1 PUSH2 0x32E9 JUMP JUMPDEST PUSH2 0x1905 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3B0 SWAP2 SWAP1 PUSH2 0x333C JUMP JUMPDEST PUSH2 0x1991 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3C2 SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D3 PUSH2 0x1C3E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E0 SWAP2 SWAP1 PUSH2 0x3167 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FE SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH2 0x1C68 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41A SWAP2 SWAP1 PUSH2 0x33A8 JUMP JUMPDEST PUSH2 0x1CEB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x9E PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x49E JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x458 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C5 PUSH2 0x2CE7 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x4EC PUSH2 0x2613 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x4E4 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x520 JUMPI PUSH2 0x51F PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53B JUMPI PUSH2 0x53A PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x505 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E9 SWAP1 PUSH2 0x3474 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x64D SWAP1 PUSH2 0x34E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA0 PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6D8 SWAP2 SWAP1 PUSH2 0x352F JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x71D DUP12 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x1DA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7BC JUMPI PUSH1 0x1 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD GT ISZERO PUSH2 0x7BB JUMPI PUSH2 0x7BA DUP12 PUSH2 0x1F3D JUMP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD GT ISZERO PUSH2 0x86F JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82A SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x849 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x86D SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8AE SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8F1 SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP PUSH2 0x902 DUP10 DUP10 DUP5 DUP5 PUSH1 0x40 ADD MLOAD PUSH2 0x2091 JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH32 0xF26DE978CBAEA68EA699627155A10AD53DF3321B0F95A08264C0CFD6D4C05326 DUP15 DUP14 DUP11 PUSH1 0x40 MLOAD PUSH2 0x94D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3615 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP11 DUP3 SWAP4 POP SWAP4 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x979 DUP12 DUP12 DUP7 DUP10 DUP14 PUSH2 0x21DB JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH2 0x9B8 SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH2 0x9C2 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST DUP6 GT ISZERO PUSH2 0xA04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9FB SWAP1 PUSH2 0x373A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP14 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA41 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x375A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP PUSH1 0xA1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0xAD5 SWAP1 PUSH2 0x3791 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP CALLER PUSH1 0xA1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB2C SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x65 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE POP PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP1 DUP11 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C205F90C01160D42994A0EB521810056D94BB82A1FCB038D7179C4158A1F15B DUP11 DUP14 DUP14 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xE2C SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3846 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE4A PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x9E PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE81 JUMPI PUSH2 0xE80 PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEE6 JUMPI PUSH2 0xEE5 PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF12 JUMPI PUSH2 0xF11 PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xE53 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x69 DUP1 SLOAD PUSH2 0xF65 SWAP1 PUSH2 0x38C3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF91 SWAP1 PUSH2 0x38C3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xFDE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFB3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFDE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xFC1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFF0 PUSH2 0x23EA JUMP JUMPDEST PUSH2 0xFFA PUSH1 0x0 PUSH2 0x2468 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9C PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x105A PUSH2 0x2633 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x128B PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12F1 SWAP1 PUSH2 0x3940 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x1363 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x13CC JUMPI DUP1 PUSH1 0x68 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x13D8 PUSH2 0x26F5 JUMP JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1443 PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x14B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14A9 SWAP1 PUSH2 0x3940 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x1531 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x15B0 JUMPI DUP1 PUSH1 0x9D PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x15E3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3960 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x66 PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x65 SLOAD SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1672 JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND LT JUMPDEST DUP1 PUSH2 0x169F JUMPI POP PUSH2 0x1681 ADDRESS PUSH2 0x252E JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x169E JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ JUMPDEST JUMPDEST PUSH2 0x16DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16D5 SWAP1 PUSH2 0x3A09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x171B JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x186A0 PUSH1 0x65 DUP2 SWAP1 SSTORE POP PUSH2 0x1388 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1F4 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x17FB PUSH2 0x2551 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1854 JUMPI PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x184B SWAP2 SWAP1 PUSH2 0x3A71 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1860 PUSH2 0x23EA JUMP JUMPDEST DUP2 DUP2 PUSH1 0x69 SWAP2 DUP3 PUSH2 0x1871 SWAP3 SWAP2 SWAP1 PUSH2 0x3C39 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x18A3 SWAP3 SWAP2 SWAP1 PUSH2 0x3D36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9D PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x190D PUSH2 0x23EA JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1948 SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1967 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x198B SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1A23 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A1A SWAP1 PUSH2 0x3474 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1A87 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A7E SWAP1 PUSH2 0x34E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BB9 SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BFC SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP DUP3 PUSH31 0x7C875846B687732A7579C19BB1DADE66CD14E9F4F809565E2B2B5E76C72B4F DUP4 PUSH1 0x40 MLOAD PUSH2 0x1C2C SWAP2 SWAP1 PUSH2 0x2CBB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1C70 PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1CDF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CD6 SWAP1 PUSH2 0x3DCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1CE8 DUP2 PUSH2 0x2468 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1CF3 PUSH2 0x23EA JUMP JUMPDEST DUP2 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xE38926C5806B98A6FD00C5D791A36FBD196537FE48D11C45C9F1D0ACD1EA74DF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1D96 SWAP3 SWAP2 SWAP1 PUSH2 0x3DEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x1DAA PUSH2 0x2715 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH2 0x1DE7 SWAP2 SWAP1 PUSH2 0x3E15 JUMP JUMPDEST SWAP1 POP PUSH1 0x65 SLOAD DUP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1E06 SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH2 0x1E10 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1E5C SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH2 0x1E66 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1E83 SWAP2 SWAP1 PUSH2 0x3E15 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x1ECF SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH2 0x1ED9 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST DUP3 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x1EF8 SWAP2 SWAP1 PUSH2 0x3E15 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1F29 JUMPI DUP1 DUP4 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x1F12 SWAP2 SWAP1 PUSH2 0x3E49 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP4 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1F34 JUMP JUMPDEST DUP1 DUP4 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2004 SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2023 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2047 SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x96C76D5AEC8A8C11A9C8E02768E3FA309347330D08961E0CF9FD43B349B684C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x20A7 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x21D2 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x20E3 JUMPI PUSH2 0x20E2 PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x20F8 SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2116 SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2135 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2159 SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP DUP2 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x216E JUMPI PUSH2 0x216D PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2183 SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x61DCEB70B8F97239C33A3F9C0D0EFC6C8759C7E9A808F75DD42B3A0F213186C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x20AC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9C PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2267 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x225E SWAP1 PUSH2 0x3EC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x22AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22A1 SWAP1 PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2319 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2310 SWAP1 PUSH2 0x3FA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2388 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x237F SWAP1 PUSH2 0x3FA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SHL PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SUB PUSH2 0x23E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23DA SWAP1 PUSH2 0x400D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x23F2 PUSH2 0x25AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2410 PUSH2 0x1411 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2466 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x245D SWAP1 PUSH2 0x4079 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x25A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2597 SWAP1 PUSH2 0x410B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x25A8 PUSH2 0x25B2 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2601 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x25F8 SWAP1 PUSH2 0x410B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2611 PUSH2 0x260C PUSH2 0x25AA JUMP JUMPDEST PUSH2 0x2468 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x275D DUP2 PUSH2 0x274A JUMP JUMPDEST DUP2 EQ PUSH2 0x2768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x277A DUP2 PUSH2 0x2754 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2796 JUMPI PUSH2 0x2795 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x27A4 DUP5 DUP3 DUP6 ADD PUSH2 0x276B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x27E2 DUP2 PUSH2 0x274A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x27FE PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x27D9 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2811 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x27D9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2823 DUP4 DUP4 PUSH2 0x27E8 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2847 DUP3 PUSH2 0x27AD JUMP JUMPDEST PUSH2 0x2851 DUP2 DUP6 PUSH2 0x27B8 JUMP JUMPDEST SWAP4 POP PUSH2 0x285C DUP4 PUSH2 0x27C9 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x288D JUMPI DUP2 MLOAD PUSH2 0x2874 DUP9 DUP3 PUSH2 0x2817 JUMP JUMPDEST SWAP8 POP PUSH2 0x287F DUP4 PUSH2 0x282F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2860 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x28B4 DUP2 DUP5 PUSH2 0x283C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x28E1 JUMPI PUSH2 0x28E0 PUSH2 0x28BC JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x28FE JUMPI PUSH2 0x28FD PUSH2 0x28C1 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x291A JUMPI PUSH2 0x2919 PUSH2 0x28C6 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294C DUP3 PUSH2 0x2921 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x295C DUP2 PUSH2 0x2941 JUMP JUMPDEST DUP2 EQ PUSH2 0x2967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2979 DUP2 PUSH2 0x2953 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x299C DUP2 PUSH2 0x297F JUMP JUMPDEST DUP2 EQ PUSH2 0x29A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x29B9 DUP2 PUSH2 0x2993 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x29D4 DUP2 PUSH2 0x29BF JUMP JUMPDEST DUP2 EQ PUSH2 0x29DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x29F1 DUP2 PUSH2 0x29CB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2A17 JUMPI PUSH2 0x2A16 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2A25 DUP12 DUP3 DUP13 ADD PUSH2 0x276B JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x2A36 DUP12 DUP3 DUP13 ADD PUSH2 0x276B JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x2A47 DUP12 DUP3 DUP13 ADD PUSH2 0x276B JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A68 JUMPI PUSH2 0x2A67 PUSH2 0x2745 JUMP JUMPDEST JUMPDEST PUSH2 0x2A74 DUP12 DUP3 DUP13 ADD PUSH2 0x28CB JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x80 PUSH2 0x2A87 DUP12 DUP3 DUP13 ADD PUSH2 0x296A JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x2A98 DUP12 DUP3 DUP13 ADD PUSH2 0x29AA JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x2AA9 DUP12 DUP3 DUP13 ADD PUSH2 0x29E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH2 0x2AC2 DUP2 PUSH2 0x274A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2AD1 DUP2 PUSH2 0x2941 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2AEC PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x2AF9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2AC8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B13 DUP2 PUSH2 0x2B00 JUMP JUMPDEST DUP2 EQ PUSH2 0x2B1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2B30 DUP2 PUSH2 0x2B0A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B57 DUP2 PUSH2 0x2B36 JUMP JUMPDEST DUP2 EQ PUSH2 0x2B62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2B74 DUP2 PUSH2 0x2B4E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2B90 JUMPI PUSH2 0x2B8F PUSH2 0x28BC JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BAD JUMPI PUSH2 0x2BAC PUSH2 0x28C1 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2BC9 JUMPI PUSH2 0x2BC8 PUSH2 0x28C6 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x2BF4 JUMPI PUSH2 0x2BF3 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2C02 DUP14 DUP3 DUP15 ADD PUSH2 0x296A JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x2C13 DUP14 DUP3 DUP15 ADD PUSH2 0x2B21 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x2C24 DUP14 DUP3 DUP15 ADD PUSH2 0x276B JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x2C35 DUP14 DUP3 DUP15 ADD PUSH2 0x276B JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x2C46 DUP14 DUP3 DUP15 ADD PUSH2 0x2B65 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x2C57 DUP14 DUP3 DUP15 ADD PUSH2 0x296A JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x2C68 DUP14 DUP3 DUP15 ADD PUSH2 0x2B21 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x2C79 DUP14 DUP3 DUP15 ADD PUSH2 0x296A JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C9B JUMPI PUSH2 0x2C9A PUSH2 0x2745 JUMP JUMPDEST JUMPDEST PUSH2 0x2CA7 DUP14 DUP3 DUP15 ADD PUSH2 0x2B7A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2CD0 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2AB9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2D1F DUP3 PUSH2 0x2CD6 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2D3E JUMPI PUSH2 0x2D3D PUSH2 0x2CE7 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D51 PUSH2 0x2736 JUMP JUMPDEST SWAP1 POP PUSH2 0x2D5D DUP3 DUP3 PUSH2 0x2D16 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2D7D JUMPI PUSH2 0x2D7C PUSH2 0x2CE7 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DA9 JUMPI PUSH2 0x2DA8 PUSH2 0x2D8E JUMP JUMPDEST JUMPDEST PUSH2 0x2DB3 PUSH1 0x40 PUSH2 0x2D47 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2DC3 DUP5 DUP3 DUP6 ADD PUSH2 0x276B JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2DD7 DUP5 DUP3 DUP6 ADD PUSH2 0x276B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DF6 PUSH2 0x2DF1 DUP5 PUSH2 0x2D62 JUMP JUMPDEST PUSH2 0x2D47 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2E19 JUMPI PUSH2 0x2E18 PUSH2 0x28C6 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E42 JUMPI DUP1 PUSH2 0x2E2E DUP9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x2E1B JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E61 JUMPI PUSH2 0x2E60 PUSH2 0x28BC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2E71 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2DE3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E91 JUMPI PUSH2 0x2E90 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E9F DUP6 DUP3 DUP7 ADD PUSH2 0x276B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2EC0 JUMPI PUSH2 0x2EBF PUSH2 0x2745 JUMP JUMPDEST JUMPDEST PUSH2 0x2ECC DUP6 DUP3 DUP7 ADD PUSH2 0x2E4C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F10 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2EF5 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F27 DUP3 PUSH2 0x2ED6 JUMP JUMPDEST PUSH2 0x2F31 DUP2 DUP6 PUSH2 0x2EE1 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F41 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH2 0x2F4A DUP2 PUSH2 0x2CD6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2F6F DUP2 DUP5 PUSH2 0x2F1C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F8D JUMPI PUSH2 0x2F8C PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F9B DUP5 DUP3 DUP6 ADD PUSH2 0x296A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2FAD DUP2 PUSH2 0x29BF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2FC8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2FA4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2FD7 DUP2 PUSH2 0x2941 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2FE6 DUP2 PUSH2 0x2B00 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2FF5 DUP2 PUSH2 0x2B36 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3004 DUP2 PUSH2 0x29BF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x120 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x3021 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2FCE JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3034 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2FCE JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x3047 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2FCE JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x305A PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2FDD JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x306D PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2FEC JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x3080 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2FFB JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x3093 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2FCE JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x30A6 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2FEC JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x30BB PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2FDD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 ADD SWAP1 POP PUSH2 0x30D7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x300A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x30F4 JUMPI PUSH2 0x30F3 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3102 DUP6 DUP3 DUP7 ADD PUSH2 0x276B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3113 DUP6 DUP3 DUP7 ADD PUSH2 0x296A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x3133 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x27D9 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3146 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x27D9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3161 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x311D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x317C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2AC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x319B JUMPI PUSH2 0x319A PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x31A9 DUP7 DUP3 DUP8 ADD PUSH2 0x276B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x31BA DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x31CB DUP7 DUP3 DUP8 ADD PUSH2 0x29E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x31FA DUP2 PUSH2 0x31D5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3209 DUP2 PUSH2 0x2B00 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3224 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x31F1 JUMP JUMPDEST PUSH2 0x3231 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x31F1 JUMP JUMPDEST PUSH2 0x323E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3200 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x325C JUMPI PUSH2 0x325B PUSH2 0x28BC JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3279 JUMPI PUSH2 0x3278 PUSH2 0x28C1 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3295 JUMPI PUSH2 0x3294 PUSH2 0x28C6 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32B3 JUMPI PUSH2 0x32B2 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x32D1 JUMPI PUSH2 0x32D0 PUSH2 0x2745 JUMP JUMPDEST JUMPDEST PUSH2 0x32DD DUP6 DUP3 DUP7 ADD PUSH2 0x3246 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3302 JUMPI PUSH2 0x3301 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3310 DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3321 DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3332 DUP7 DUP3 DUP8 ADD PUSH2 0x2B21 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3353 JUMPI PUSH2 0x3352 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3361 DUP6 DUP3 DUP7 ADD PUSH2 0x276B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3372 DUP6 DUP3 DUP7 ADD PUSH2 0x276B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x3385 DUP2 PUSH2 0x31D5 JUMP JUMPDEST DUP2 EQ PUSH2 0x3390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x33A2 DUP2 PUSH2 0x337C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x33BF JUMPI PUSH2 0x33BE PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x33CD DUP6 DUP3 DUP7 ADD PUSH2 0x3393 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x33DE DUP6 DUP3 DUP7 ADD PUSH2 0x3393 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F6E6C7941676772656761746F72000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x345E PUSH1 0xE DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3469 DUP3 PUSH2 0x3428 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x348D DUP2 PUSH2 0x3451 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F7264657246756C66696C6C6564000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34CA PUSH1 0xE DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x34D5 DUP3 PUSH2 0x3494 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34F9 DUP2 PUSH2 0x34BD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x353A DUP3 PUSH2 0x2B36 JUMP JUMPDEST SWAP2 POP PUSH2 0x3545 DUP4 PUSH2 0x2B36 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3569 JUMPI PUSH2 0x3568 PUSH2 0x3500 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3584 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2AC8 JUMP JUMPDEST PUSH2 0x3591 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3200 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x35A7 DUP2 PUSH2 0x29CB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35C3 JUMPI PUSH2 0x35C2 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x35D1 DUP5 DUP3 DUP6 ADD PUSH2 0x3598 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35FF PUSH2 0x35FA PUSH2 0x35F5 DUP5 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x35DA JUMP JUMPDEST PUSH2 0x2B36 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x360F DUP2 PUSH2 0x35E4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x362A PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x3637 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x3644 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3606 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3657 DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH2 0x3662 DUP4 PUSH2 0x2B00 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3670 DUP2 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x3687 JUMPI PUSH2 0x3686 PUSH2 0x3500 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x36C8 DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH2 0x36D3 DUP4 PUSH2 0x2B00 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x36E3 JUMPI PUSH2 0x36E2 PUSH2 0x368E JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x53656E646572466565546F6F4869676800000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3724 PUSH1 0x10 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x372F DUP3 PUSH2 0x36EE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3753 DUP2 PUSH2 0x3717 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x376F PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2AC8 JUMP JUMPDEST PUSH2 0x377C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2AC8 JUMP JUMPDEST PUSH2 0x3789 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3200 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379C DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x37CE JUMPI PUSH2 0x37CD PUSH2 0x3500 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37F4 PUSH2 0x37EF PUSH2 0x37EA DUP5 PUSH2 0x2B36 JUMP JUMPDEST PUSH2 0x35DA JUMP JUMPDEST PUSH2 0x2B00 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3804 DUP2 PUSH2 0x37D9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3825 DUP4 DUP6 PUSH2 0x3417 JUMP JUMPDEST SWAP4 POP PUSH2 0x3832 DUP4 DUP6 DUP5 PUSH2 0x380A JUMP JUMPDEST PUSH2 0x383B DUP4 PUSH2 0x2CD6 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x385B PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x37FB JUMP JUMPDEST PUSH2 0x3868 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x3875 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2AB9 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3888 DUP2 DUP5 DUP7 PUSH2 0x3819 JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x38DB JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x38EE JUMPI PUSH2 0x38ED PUSH2 0x3894 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x392A PUSH1 0x16 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3935 DUP3 PUSH2 0x38F4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3959 DUP2 PUSH2 0x391D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3975 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x3982 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2AC8 JUMP JUMPDEST PUSH2 0x398F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2FA4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39F3 PUSH1 0x2E DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x39FE DUP3 PUSH2 0x3997 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A22 DUP2 PUSH2 0x39E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A5B PUSH2 0x3A56 PUSH2 0x3A51 DUP5 PUSH2 0x3A29 JUMP JUMPDEST PUSH2 0x35DA JUMP JUMPDEST PUSH2 0x3A33 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A6B DUP2 PUSH2 0x3A40 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3A86 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3A62 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x3AF9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x3ABC JUMP JUMPDEST PUSH2 0x3B03 DUP7 DUP4 PUSH2 0x3ABC JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B36 PUSH2 0x3B31 PUSH2 0x3B2C DUP5 PUSH2 0x2B00 JUMP JUMPDEST PUSH2 0x35DA JUMP JUMPDEST PUSH2 0x2B00 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B50 DUP4 PUSH2 0x3B1B JUMP JUMPDEST PUSH2 0x3B64 PUSH2 0x3B5C DUP3 PUSH2 0x3B3D JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x3AC9 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x3B79 PUSH2 0x3B6C JUMP JUMPDEST PUSH2 0x3B84 DUP2 DUP5 DUP5 PUSH2 0x3B47 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3BA8 JUMPI PUSH2 0x3B9D PUSH1 0x0 DUP3 PUSH2 0x3B71 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x3B8A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x3BED JUMPI PUSH2 0x3BBE DUP2 PUSH2 0x3A97 JUMP JUMPDEST PUSH2 0x3BC7 DUP5 PUSH2 0x3AAC JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x3BD6 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x3BEA PUSH2 0x3BE2 DUP6 PUSH2 0x3AAC JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x3B89 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C10 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x3BF2 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C29 DUP4 DUP4 PUSH2 0x3BFF JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3C43 DUP4 DUP4 PUSH2 0x3A8C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C5C JUMPI PUSH2 0x3C5B PUSH2 0x2CE7 JUMP JUMPDEST JUMPDEST PUSH2 0x3C66 DUP3 SLOAD PUSH2 0x38C3 JUMP JUMPDEST PUSH2 0x3C71 DUP3 DUP3 DUP6 PUSH2 0x3BAC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3CA0 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x3C8E JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x3C98 DUP6 DUP3 PUSH2 0x3C1D JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x3D00 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x3CAE DUP7 PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3CD6 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3CB1 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x3CF3 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x3CEF PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x3BFF JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D15 DUP4 DUP6 PUSH2 0x2EE1 JUMP JUMPDEST SWAP4 POP PUSH2 0x3D22 DUP4 DUP6 DUP5 PUSH2 0x380A JUMP JUMPDEST PUSH2 0x3D2B DUP4 PUSH2 0x2CD6 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D51 DUP2 DUP5 DUP7 PUSH2 0x3D09 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DB6 PUSH1 0x26 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3DC1 DUP3 PUSH2 0x3D5A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DE5 DUP2 PUSH2 0x3DA9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3E01 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x31F1 JUMP JUMPDEST PUSH2 0x3E0E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x31F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E20 DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH2 0x3E2B DUP4 PUSH2 0x2B00 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3E43 JUMPI PUSH2 0x3E42 PUSH2 0x3500 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E54 DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH2 0x3E5F DUP4 PUSH2 0x2B00 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3E77 JUMPI PUSH2 0x3E76 PUSH2 0x3500 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x546F6B656E4E6F74537570706F72746564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EB3 PUSH1 0x11 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3EBE DUP3 PUSH2 0x3E7D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3EE2 DUP2 PUSH2 0x3EA6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E7449735A65726F0000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F1F PUSH1 0xC DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3F2A DUP3 PUSH2 0x3EE9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3F4E DUP2 PUSH2 0x3F12 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5468726F775A65726F4164647265737300000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8B PUSH1 0x10 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3F96 DUP3 PUSH2 0x3F55 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3FBA DUP2 PUSH2 0x3F7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C6964496E737469747574696F6E436F646500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FF7 PUSH1 0x16 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x4002 DUP3 PUSH2 0x3FC1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4026 DUP2 PUSH2 0x3FEA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4063 PUSH1 0x20 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x406E DUP3 PUSH2 0x402D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4092 DUP2 PUSH2 0x4056 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40F5 PUSH1 0x2B DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x4100 DUP3 PUSH2 0x4099 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4124 DUP2 PUSH2 0x40E8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 RETURNDATASIZE MSTORE DUP8 RETURNDATACOPY ADDMOD AND JUMP 0xE3 0xE1 0xC7 0xF7 0xDB SWAP6 ADD DUP6 ADDRESS 0x5C 0xC5 SIGNEXTEND 0x26 GASLIMIT SWAP15 0xD5 PUSH15 0x4B7D69AA27310664736F6C63430008 SLT STOP CALLER ","sourceMap":"367:10379:12:-:0;;;816:53;;;;;;;;;;840:22;:20;;;:22;;:::i;:::-;367:10379;;5939:280:1;6007:13;;;;;;;;;;;6006:14;5998:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6094:15;6078:31;;:12;;;;;;;;;;:31;;;6074:139;;6140:15;6125:12;;:30;;;;;;;;;;;;;;;;;;6174:28;6186:15;6174:28;;;;;;:::i;:::-;;;;;;;;6074:139;5939:280::o;7:169:15:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:226::-;322:34;318:1;310:6;306:14;299:58;391:9;386:2;378:6;374:15;367:34;182:226;:::o;414:366::-;556:3;577:67;641:2;636:3;577:67;:::i;:::-;570:74;;653:93;742:3;653:93;:::i;:::-;771:2;766:3;762:12;755:19;;414:366;;;:::o;786:419::-;952:4;990:2;979:9;975:18;967:26;;1039:9;1033:4;1029:20;1025:1;1014:9;1010:17;1003:47;1067:131;1193:4;1067:131;:::i;:::-;1059:139;;786:419;;;:::o;1211:86::-;1246:7;1286:4;1279:5;1275:16;1264:27;;1211:86;;;:::o;1303:112::-;1386:22;1402:5;1386:22;:::i;:::-;1381:3;1374:35;1303:112;;:::o;1421:214::-;1510:4;1548:2;1537:9;1533:18;1525:26;;1561:67;1625:1;1614:9;1610:17;1601:6;1561:67;:::i;:::-;1421:214;;;;:::o;367:10379:12:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__Ownable_init_26":{"entryPoint":9553,"id":26,"parameterSlots":0,"returnSlots":0},"@__Ownable_init_unchained_37":{"entryPoint":9650,"id":37,"parameterSlots":0,"returnSlots":0},"@_calculateFees_3446":{"entryPoint":7586,"id":3446,"parameterSlots":3,"returnSlots":1},"@_checkOwner_68":{"entryPoint":9194,"id":68,"parameterSlots":0,"returnSlots":0},"@_handler_3064":{"entryPoint":8667,"id":3064,"parameterSlots":5,"returnSlots":0},"@_msgSender_1147":{"entryPoint":9642,"id":1147,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_125":{"entryPoint":9320,"id":125,"parameterSlots":1,"returnSlots":0},"@createOrder_3003":{"entryPoint":2410,"id":3003,"parameterSlots":10,"returnSlots":1},"@getAggregatorAddress_3571":{"entryPoint":7230,"id":3571,"parameterSlots":0,"returnSlots":1},"@getAggregator_3593":{"entryPoint":3926,"id":3593,"parameterSlots":0,"returnSlots":1},"@getFeeDetails_3562":{"entryPoint":5616,"id":3562,"parameterSlots":0,"returnSlots":3},"@getOrderInfo_3460":{"entryPoint":4178,"id":3460,"parameterSlots":1,"returnSlots":1},"@getSupportedInstitutionName_3487":{"entryPoint":5072,"id":3487,"parameterSlots":1,"returnSlots":1},"@getSupportedInstitutions_3546":{"entryPoint":1057,"id":3546,"parameterSlots":1,"returnSlots":1},"@getWhitelistedStatus_3584":{"entryPoint":6319,"id":3584,"parameterSlots":1,"returnSlots":1},"@initialize_2883":{"entryPoint":5697,"id":2883,"parameterSlots":1,"returnSlots":0},"@isContract_808":{"entryPoint":9518,"id":808,"parameterSlots":1,"returnSlots":1},"@isTokenSupported_3473":{"entryPoint":4092,"id":3473,"parameterSlots":1,"returnSlots":1},"@owner_54":{"entryPoint":5137,"id":54,"parameterSlots":0,"returnSlots":1},"@refund_3340":{"entryPoint":6545,"id":3340,"parameterSlots":2,"returnSlots":1},"@renounceOwnership_82":{"entryPoint":4072,"id":82,"parameterSlots":0,"returnSlots":0},"@rewardValidators_3244":{"entryPoint":8337,"id":3244,"parameterSlots":4,"returnSlots":0},"@setSupportedInstitutions_3788":{"entryPoint":3650,"id":3788,"parameterSlots":2,"returnSlots":0},"@settingManagerBool_3734":{"entryPoint":5179,"id":3734,"parameterSlots":3,"returnSlots":0},"@settle_3192":{"entryPoint":1375,"id":3192,"parameterSlots":8,"returnSlots":2},"@transferOwnership_105":{"entryPoint":7272,"id":105,"parameterSlots":1,"returnSlots":0},"@transferSenderFee_3280":{"entryPoint":7997,"id":3280,"parameterSlots":1,"returnSlots":0},"@updateProtocolAddresses_3847":{"entryPoint":4739,"id":3847,"parameterSlots":2,"returnSlots":0},"@updateProtocolAggregator_3863":{"entryPoint":6232,"id":3863,"parameterSlots":2,"returnSlots":0},"@updateProtocolFees_3811":{"entryPoint":7403,"id":3811,"parameterSlots":2,"returnSlots":0},"@withdraw_3613":{"entryPoint":6405,"id":3613,"parameterSlots":3,"returnSlots":0},"abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":11747,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":10602,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_address_$dyn_calldata_ptr":{"entryPoint":10443,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":11852,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":10722,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":13720,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":10091,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":12870,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_string_calldata_ptr":{"entryPoint":11130,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_struct$_Institution_$3624_memory_ptr":{"entryPoint":11667,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint128":{"entryPoint":13203,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":11041,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint64":{"entryPoint":10666,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint96":{"entryPoint":11109,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":12151,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":13033,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr":{"entryPoint":11216,"id":null,"parameterSlots":2,"returnSlots":10},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":13741,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":10112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":12509,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_addresst_bool":{"entryPoint":12674,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":11898,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32":{"entryPoint":13116,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_array$_t_address_$dyn_calldata_ptrt_addresst_uint64t_bool":{"entryPoint":10743,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":12956,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint128t_uint128":{"entryPoint":13224,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encodeUpdatedPos_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr":{"entryPoint":10263,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":12238,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":10952,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":10300,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool":{"entryPoint":12283,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":12196,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32":{"entryPoint":10201,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":10937,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":15625,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":12060,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack":{"entryPoint":14946,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":14361,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":15785,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack":{"entryPoint":16146,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack":{"entryPoint":14621,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack":{"entryPoint":14103,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack":{"entryPoint":14822,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack":{"entryPoint":13501,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack":{"entryPoint":16362,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":16470,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack":{"entryPoint":16254,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack":{"entryPoint":16038,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack":{"entryPoint":16616,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack":{"entryPoint":13393,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_struct$_InstitutionByCode_$3629_memory_ptr_to_t_struct$_InstitutionByCode_$3629_memory_ptr_fromStack":{"entryPoint":12573,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr":{"entryPoint":10216,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_Order_$3950_memory_ptr_to_t_struct$_Order_$3950_memory_ptr_fromStack":{"entryPoint":12298,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint128_to_t_uint128_fromStack":{"entryPoint":12785,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256":{"entryPoint":12253,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":12800,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint64_to_t_uint96_fromStack":{"entryPoint":13830,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint256_fromStack":{"entryPoint":14331,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint96":{"entryPoint":12268,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":12647,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":14170,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":13679,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":10394,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":12211,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":11451,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":10967,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed":{"entryPoint":14688,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed":{"entryPoint":13845,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":15670,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":12117,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":14961,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15820,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16181,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14656,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14138,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14857,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13536,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16397,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16505,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16289,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16073,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16651,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13428,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_struct$_InstitutionByCode_$3629_memory_ptr__to_t_struct$_InstitutionByCode_$3629_memory_ptr__fromStack_reversed":{"entryPoint":12620,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_Order_$3950_memory_ptr__to_t_struct$_Order_$3950_memory_ptr__fromStack_reversed":{"entryPoint":12481,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed":{"entryPoint":15852,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint128_t_uint128_t_uint256__to_t_uint128_t_uint128_t_uint256__fromStack_reversed":{"entryPoint":12815,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14406,"id":null,"parameterSlots":6,"returnSlots":1},"allocate_memory":{"entryPoint":11591,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":10038,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":11618,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":10185,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_bytes_storage":{"entryPoint":14999,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":10157,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_calldata_ptr":{"entryPoint":14988,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":11990,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":10287,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":10168,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":12001,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":13335,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":15945,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":14013,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":13900,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":15893,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint96":{"entryPoint":13615,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_bytes_storage":{"entryPoint":15276,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":10561,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":10687,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":10058,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_1_by_1":{"entryPoint":14889,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint128":{"entryPoint":12757,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":10529,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":11008,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint64":{"entryPoint":10623,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":14899,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":11062,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":15241,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_rational_1_by_1_to_t_uint8":{"entryPoint":14912,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint256_to_t_uint256":{"entryPoint":15131,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint64_to_t_uint96":{"entryPoint":13796,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint96_to_t_uint256":{"entryPoint":14297,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage":{"entryPoint":15417,"id":null,"parameterSlots":3,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":14346,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":12018,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":15020,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":14531,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":15389,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":11542,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":13786,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":14225,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":15359,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":13568,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":13966,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":14484,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":13288,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":11495,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":15165,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":10433,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":10428,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":11662,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":10438,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":10053,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":10048,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":11478,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":15036,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":15346,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":15217,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":15706,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2":{"entryPoint":16105,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4":{"entryPoint":14580,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4":{"entryPoint":14062,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759":{"entryPoint":14743,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5":{"entryPoint":13460,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5":{"entryPoint":16321,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":16429,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7":{"entryPoint":16213,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1":{"entryPoint":15997,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b":{"entryPoint":16537,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243":{"entryPoint":13352,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":15049,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":15175,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":10579,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":10699,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":10068,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint128":{"entryPoint":13180,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":11018,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint64":{"entryPoint":10643,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint96":{"entryPoint":11086,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":15212,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:50997:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"379:32:15","statements":[{"nodeType":"YulAssignment","src":"389:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:15"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:15","type":""}],"src":"334:77:15"},{"body":{"nodeType":"YulBlock","src":"460:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:15"},"nodeType":"YulFunctionCall","src":"519:12:15"},"nodeType":"YulExpressionStatement","src":"519:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"490:17:15"},"nodeType":"YulFunctionCall","src":"490:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:15"},"nodeType":"YulFunctionCall","src":"480:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:15"},"nodeType":"YulFunctionCall","src":"473:43:15"},"nodeType":"YulIf","src":"470:63:15"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:15","type":""}],"src":"417:122:15"},{"body":{"nodeType":"YulBlock","src":"597:87:15","statements":[{"nodeType":"YulAssignment","src":"607:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:15"},"nodeType":"YulFunctionCall","src":"616:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:15"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"645:26:15"},"nodeType":"YulFunctionCall","src":"645:33:15"},"nodeType":"YulExpressionStatement","src":"645:33:15"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:15","type":""}],"src":"545:139:15"},{"body":{"nodeType":"YulBlock","src":"756:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"802:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"804:77:15"},"nodeType":"YulFunctionCall","src":"804:79:15"},"nodeType":"YulExpressionStatement","src":"804:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"777:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"773:3:15"},"nodeType":"YulFunctionCall","src":"773:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"798:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"769:3:15"},"nodeType":"YulFunctionCall","src":"769:32:15"},"nodeType":"YulIf","src":"766:119:15"},{"nodeType":"YulBlock","src":"895:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"910:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"924:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"914:6:15","type":""}]},{"nodeType":"YulAssignment","src":"939:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"974:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"985:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"970:3:15"},"nodeType":"YulFunctionCall","src":"970:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"994:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"949:20:15"},"nodeType":"YulFunctionCall","src":"949:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"939:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"726:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"737:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"749:6:15","type":""}],"src":"690:329:15"},{"body":{"nodeType":"YulBlock","src":"1128:40:15","statements":[{"nodeType":"YulAssignment","src":"1139:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1155:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1149:5:15"},"nodeType":"YulFunctionCall","src":"1149:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1139:6:15"}]}]},"name":"array_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1111:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1121:6:15","type":""}],"src":"1025:143:15"},{"body":{"nodeType":"YulBlock","src":"1314:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1331:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"1336:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1324:6:15"},"nodeType":"YulFunctionCall","src":"1324:19:15"},"nodeType":"YulExpressionStatement","src":"1324:19:15"},{"nodeType":"YulAssignment","src":"1352:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1371:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1376:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1367:3:15"},"nodeType":"YulFunctionCall","src":"1367:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1352:11:15"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1286:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1291:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1302:11:15","type":""}],"src":"1174:213:15"},{"body":{"nodeType":"YulBlock","src":"1494:60:15","statements":[{"nodeType":"YulAssignment","src":"1504:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"1512:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1504:4:15"}]},{"nodeType":"YulAssignment","src":"1525:22:15","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1537:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1542:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1533:3:15"},"nodeType":"YulFunctionCall","src":"1533:14:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1525:4:15"}]}]},"name":"array_dataslot_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1481:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1489:4:15","type":""}],"src":"1393:161:15"},{"body":{"nodeType":"YulBlock","src":"1615:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1632:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1655:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"1637:17:15"},"nodeType":"YulFunctionCall","src":"1637:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1625:6:15"},"nodeType":"YulFunctionCall","src":"1625:37:15"},"nodeType":"YulExpressionStatement","src":"1625:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1603:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1610:3:15","type":""}],"src":"1560:108:15"},{"body":{"nodeType":"YulBlock","src":"1882:391:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1892:26:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1908:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1913:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1904:3:15"},"nodeType":"YulFunctionCall","src":"1904:14:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"1896:4:15","type":""}]},{"nodeType":"YulBlock","src":"1928:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1963:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1993:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2000:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1989:3:15"},"nodeType":"YulFunctionCall","src":"1989:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1983:5:15"},"nodeType":"YulFunctionCall","src":"1983:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"1967:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2053:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2071:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2076:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2067:3:15"},"nodeType":"YulFunctionCall","src":"2067:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"2019:33:15"},"nodeType":"YulFunctionCall","src":"2019:63:15"},"nodeType":"YulExpressionStatement","src":"2019:63:15"}]},{"nodeType":"YulBlock","src":"2102:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2137:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2167:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2174:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2163:3:15"},"nodeType":"YulFunctionCall","src":"2163:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2157:5:15"},"nodeType":"YulFunctionCall","src":"2157:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2141:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2227:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2245:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2250:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2241:3:15"},"nodeType":"YulFunctionCall","src":"2241:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"2193:33:15"},"nodeType":"YulFunctionCall","src":"2193:63:15"},"nodeType":"YulExpressionStatement","src":"2193:63:15"}]}]},"name":"abi_encode_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1869:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1876:3:15","type":""}],"src":"1768:505:15"},{"body":{"nodeType":"YulBlock","src":"2417:157:15","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2519:6:15"},{"name":"pos","nodeType":"YulIdentifier","src":"2527:3:15"}],"functionName":{"name":"abi_encode_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr","nodeType":"YulIdentifier","src":"2427:91:15"},"nodeType":"YulFunctionCall","src":"2427:104:15"},"nodeType":"YulExpressionStatement","src":"2427:104:15"},{"nodeType":"YulAssignment","src":"2540:28:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2558:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2563:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2554:3:15"},"nodeType":"YulFunctionCall","src":"2554:14:15"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2540:10:15"}]}]},"name":"abi_encodeUpdatedPos_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2390:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2398:3:15","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2406:10:15","type":""}],"src":"2279:295:15"},{"body":{"nodeType":"YulBlock","src":"2684:38:15","statements":[{"nodeType":"YulAssignment","src":"2694:22:15","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2706:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2711:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2702:3:15"},"nodeType":"YulFunctionCall","src":"2702:14:15"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"2694:4:15"}]}]},"name":"array_nextElement_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"2671:3:15","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"2679:4:15","type":""}],"src":"2580:142:15"},{"body":{"nodeType":"YulBlock","src":"3008:782:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3018:97:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3109:5:15"}],"functionName":{"name":"array_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3032:76:15"},"nodeType":"YulFunctionCall","src":"3032:83:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3022:6:15","type":""}]},{"nodeType":"YulAssignment","src":"3124:122:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3234:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"3239:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3131:102:15"},"nodeType":"YulFunctionCall","src":"3131:115:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3124:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"3255:100:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3349:5:15"}],"functionName":{"name":"array_dataslot_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3270:78:15"},"nodeType":"YulFunctionCall","src":"3270:85:15"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"3259:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3364:21:15","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"3378:7:15"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3368:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3454:311:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3468:34:15","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3495:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3489:5:15"},"nodeType":"YulFunctionCall","src":"3489:13:15"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"3472:13:15","type":""}]},{"nodeType":"YulAssignment","src":"3515:128:15","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"3624:13:15"},{"name":"pos","nodeType":"YulIdentifier","src":"3639:3:15"}],"functionName":{"name":"abi_encodeUpdatedPos_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr","nodeType":"YulIdentifier","src":"3522:101:15"},"nodeType":"YulFunctionCall","src":"3522:121:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3515:3:15"}]},{"nodeType":"YulAssignment","src":"3656:99:15","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3748:6:15"}],"functionName":{"name":"array_nextElement_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3666:81:15"},"nodeType":"YulFunctionCall","src":"3666:89:15"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3656:6:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3416:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"3419:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3413:2:15"},"nodeType":"YulFunctionCall","src":"3413:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3427:18:15","statements":[{"nodeType":"YulAssignment","src":"3429:14:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3438:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"3441:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3434:3:15"},"nodeType":"YulFunctionCall","src":"3434:9:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"3398:14:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3400:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"3409:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3404:1:15","type":""}]}]},"src":"3394:371:15"},{"nodeType":"YulAssignment","src":"3774:10:15","value":{"name":"pos","nodeType":"YulIdentifier","src":"3781:3:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3774:3:15"}]}]},"name":"abi_encode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2987:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2994:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3003:3:15","type":""}],"src":"2826:964:15"},{"body":{"nodeType":"YulBlock","src":"4002:283:15","statements":[{"nodeType":"YulAssignment","src":"4012:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4024:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4035:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4020:3:15"},"nodeType":"YulFunctionCall","src":"4020:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4012:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4059:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4070:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4055:3:15"},"nodeType":"YulFunctionCall","src":"4055:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4078:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4084:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4074:3:15"},"nodeType":"YulFunctionCall","src":"4074:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4048:6:15"},"nodeType":"YulFunctionCall","src":"4048:47:15"},"nodeType":"YulExpressionStatement","src":"4048:47:15"},{"nodeType":"YulAssignment","src":"4104:174:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4264:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"4273:4:15"}],"functionName":{"name":"abi_encode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4112:151:15"},"nodeType":"YulFunctionCall","src":"4112:166:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4104:4:15"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3974:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3986:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3997:4:15","type":""}],"src":"3796:489:15"},{"body":{"nodeType":"YulBlock","src":"4380:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4397:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4400:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4390:6:15"},"nodeType":"YulFunctionCall","src":"4390:12:15"},"nodeType":"YulExpressionStatement","src":"4390:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"4291:117:15"},{"body":{"nodeType":"YulBlock","src":"4503:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4520:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4523:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4513:6:15"},"nodeType":"YulFunctionCall","src":"4513:12:15"},"nodeType":"YulExpressionStatement","src":"4513:12:15"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"4414:117:15"},{"body":{"nodeType":"YulBlock","src":"4626:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4643:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4646:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4636:6:15"},"nodeType":"YulFunctionCall","src":"4636:12:15"},"nodeType":"YulExpressionStatement","src":"4636:12:15"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"4537:117:15"},{"body":{"nodeType":"YulBlock","src":"4767:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"4816:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"4818:77:15"},"nodeType":"YulFunctionCall","src":"4818:79:15"},"nodeType":"YulExpressionStatement","src":"4818:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4795:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4803:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4791:3:15"},"nodeType":"YulFunctionCall","src":"4791:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"4810:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4787:3:15"},"nodeType":"YulFunctionCall","src":"4787:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4780:6:15"},"nodeType":"YulFunctionCall","src":"4780:35:15"},"nodeType":"YulIf","src":"4777:122:15"},{"nodeType":"YulAssignment","src":"4908:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4931:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4918:12:15"},"nodeType":"YulFunctionCall","src":"4918:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4908:6:15"}]},{"body":{"nodeType":"YulBlock","src":"4981:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"4983:77:15"},"nodeType":"YulFunctionCall","src":"4983:79:15"},"nodeType":"YulExpressionStatement","src":"4983:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4953:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4961:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4950:2:15"},"nodeType":"YulFunctionCall","src":"4950:30:15"},"nodeType":"YulIf","src":"4947:117:15"},{"nodeType":"YulAssignment","src":"5073:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5089:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"5097:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5085:3:15"},"nodeType":"YulFunctionCall","src":"5085:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5073:8:15"}]},{"body":{"nodeType":"YulBlock","src":"5156:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"5158:77:15"},"nodeType":"YulFunctionCall","src":"5158:79:15"},"nodeType":"YulExpressionStatement","src":"5158:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5121:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5135:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"5143:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5131:3:15"},"nodeType":"YulFunctionCall","src":"5131:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5117:3:15"},"nodeType":"YulFunctionCall","src":"5117:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"5151:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5114:2:15"},"nodeType":"YulFunctionCall","src":"5114:41:15"},"nodeType":"YulIf","src":"5111:128:15"}]},"name":"abi_decode_t_array$_t_address_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4734:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"4742:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"4750:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"4760:6:15","type":""}],"src":"4677:568:15"},{"body":{"nodeType":"YulBlock","src":"5296:81:15","statements":[{"nodeType":"YulAssignment","src":"5306:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5321:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5328:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5317:3:15"},"nodeType":"YulFunctionCall","src":"5317:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5306:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5278:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5288:7:15","type":""}],"src":"5251:126:15"},{"body":{"nodeType":"YulBlock","src":"5428:51:15","statements":[{"nodeType":"YulAssignment","src":"5438:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5467:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5449:17:15"},"nodeType":"YulFunctionCall","src":"5449:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5438:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5410:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5420:7:15","type":""}],"src":"5383:96:15"},{"body":{"nodeType":"YulBlock","src":"5528:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"5585:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5594:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5597:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5587:6:15"},"nodeType":"YulFunctionCall","src":"5587:12:15"},"nodeType":"YulExpressionStatement","src":"5587:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5551:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5576:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5558:17:15"},"nodeType":"YulFunctionCall","src":"5558:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5548:2:15"},"nodeType":"YulFunctionCall","src":"5548:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5541:6:15"},"nodeType":"YulFunctionCall","src":"5541:43:15"},"nodeType":"YulIf","src":"5538:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5521:5:15","type":""}],"src":"5485:122:15"},{"body":{"nodeType":"YulBlock","src":"5665:87:15","statements":[{"nodeType":"YulAssignment","src":"5675:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5697:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5684:12:15"},"nodeType":"YulFunctionCall","src":"5684:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5675:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5740:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5713:26:15"},"nodeType":"YulFunctionCall","src":"5713:33:15"},"nodeType":"YulExpressionStatement","src":"5713:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5643:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5651:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5659:5:15","type":""}],"src":"5613:139:15"},{"body":{"nodeType":"YulBlock","src":"5802:57:15","statements":[{"nodeType":"YulAssignment","src":"5812:41:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5827:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5834:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5823:3:15"},"nodeType":"YulFunctionCall","src":"5823:30:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5812:7:15"}]}]},"name":"cleanup_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5784:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5794:7:15","type":""}],"src":"5758:101:15"},{"body":{"nodeType":"YulBlock","src":"5907:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"5963:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5972:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5975:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5965:6:15"},"nodeType":"YulFunctionCall","src":"5965:12:15"},"nodeType":"YulExpressionStatement","src":"5965:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5930:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5954:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"5937:16:15"},"nodeType":"YulFunctionCall","src":"5937:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5927:2:15"},"nodeType":"YulFunctionCall","src":"5927:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5920:6:15"},"nodeType":"YulFunctionCall","src":"5920:42:15"},"nodeType":"YulIf","src":"5917:62:15"}]},"name":"validator_revert_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5900:5:15","type":""}],"src":"5865:120:15"},{"body":{"nodeType":"YulBlock","src":"6042:86:15","statements":[{"nodeType":"YulAssignment","src":"6052:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6074:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6061:12:15"},"nodeType":"YulFunctionCall","src":"6061:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6052:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6116:5:15"}],"functionName":{"name":"validator_revert_t_uint64","nodeType":"YulIdentifier","src":"6090:25:15"},"nodeType":"YulFunctionCall","src":"6090:32:15"},"nodeType":"YulExpressionStatement","src":"6090:32:15"}]},"name":"abi_decode_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6020:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6028:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6036:5:15","type":""}],"src":"5991:137:15"},{"body":{"nodeType":"YulBlock","src":"6176:48:15","statements":[{"nodeType":"YulAssignment","src":"6186:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6211:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6204:6:15"},"nodeType":"YulFunctionCall","src":"6204:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6197:6:15"},"nodeType":"YulFunctionCall","src":"6197:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6186:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6158:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6168:7:15","type":""}],"src":"6134:90:15"},{"body":{"nodeType":"YulBlock","src":"6270:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"6324:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6333:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6336:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6326:6:15"},"nodeType":"YulFunctionCall","src":"6326:12:15"},"nodeType":"YulExpressionStatement","src":"6326:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6293:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6315:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6300:14:15"},"nodeType":"YulFunctionCall","src":"6300:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6290:2:15"},"nodeType":"YulFunctionCall","src":"6290:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6283:6:15"},"nodeType":"YulFunctionCall","src":"6283:40:15"},"nodeType":"YulIf","src":"6280:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6263:5:15","type":""}],"src":"6230:116:15"},{"body":{"nodeType":"YulBlock","src":"6401:84:15","statements":[{"nodeType":"YulAssignment","src":"6411:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6433:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6420:12:15"},"nodeType":"YulFunctionCall","src":"6420:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6411:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6473:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6449:23:15"},"nodeType":"YulFunctionCall","src":"6449:30:15"},"nodeType":"YulExpressionStatement","src":"6449:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6379:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6387:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6395:5:15","type":""}],"src":"6352:133:15"},{"body":{"nodeType":"YulBlock","src":"6690:1226:15","statements":[{"body":{"nodeType":"YulBlock","src":"6737:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6739:77:15"},"nodeType":"YulFunctionCall","src":"6739:79:15"},"nodeType":"YulExpressionStatement","src":"6739:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6711:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6720:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6707:3:15"},"nodeType":"YulFunctionCall","src":"6707:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6732:3:15","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6703:3:15"},"nodeType":"YulFunctionCall","src":"6703:33:15"},"nodeType":"YulIf","src":"6700:120:15"},{"nodeType":"YulBlock","src":"6830:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6845:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6859:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6849:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6874:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6909:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6920:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6905:3:15"},"nodeType":"YulFunctionCall","src":"6905:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6929:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"6884:20:15"},"nodeType":"YulFunctionCall","src":"6884:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6874:6:15"}]}]},{"nodeType":"YulBlock","src":"6957:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6972:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6986:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6976:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7002:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7037:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7048:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7033:3:15"},"nodeType":"YulFunctionCall","src":"7033:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7057:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7012:20:15"},"nodeType":"YulFunctionCall","src":"7012:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7002:6:15"}]}]},{"nodeType":"YulBlock","src":"7085:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7100:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7114:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7104:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7130:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7165:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7176:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7161:3:15"},"nodeType":"YulFunctionCall","src":"7161:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7185:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7140:20:15"},"nodeType":"YulFunctionCall","src":"7140:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7130:6:15"}]}]},{"nodeType":"YulBlock","src":"7213:313:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7228:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7259:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"7270:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7255:3:15"},"nodeType":"YulFunctionCall","src":"7255:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7242:12:15"},"nodeType":"YulFunctionCall","src":"7242:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7232:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"7321:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"7323:77:15"},"nodeType":"YulFunctionCall","src":"7323:79:15"},"nodeType":"YulExpressionStatement","src":"7323:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7293:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7301:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7290:2:15"},"nodeType":"YulFunctionCall","src":"7290:30:15"},"nodeType":"YulIf","src":"7287:117:15"},{"nodeType":"YulAssignment","src":"7418:98:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7488:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7499:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7484:3:15"},"nodeType":"YulFunctionCall","src":"7484:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7508:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_calldata_ptr","nodeType":"YulIdentifier","src":"7436:47:15"},"nodeType":"YulFunctionCall","src":"7436:80:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7418:6:15"},{"name":"value4","nodeType":"YulIdentifier","src":"7426:6:15"}]}]},{"nodeType":"YulBlock","src":"7536:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7551:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7565:3:15","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7555:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7582:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7617:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7628:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7613:3:15"},"nodeType":"YulFunctionCall","src":"7613:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7637:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7592:20:15"},"nodeType":"YulFunctionCall","src":"7592:53:15"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"7582:6:15"}]}]},{"nodeType":"YulBlock","src":"7665:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7680:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7694:3:15","type":"","value":"160"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7684:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7711:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7745:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7756:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7741:3:15"},"nodeType":"YulFunctionCall","src":"7741:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7765:7:15"}],"functionName":{"name":"abi_decode_t_uint64","nodeType":"YulIdentifier","src":"7721:19:15"},"nodeType":"YulFunctionCall","src":"7721:52:15"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"7711:6:15"}]}]},{"nodeType":"YulBlock","src":"7793:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7808:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7822:3:15","type":"","value":"192"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7812:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7839:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7871:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7882:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7867:3:15"},"nodeType":"YulFunctionCall","src":"7867:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7891:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"7849:17:15"},"nodeType":"YulFunctionCall","src":"7849:50:15"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"7839:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_array$_t_address_$dyn_calldata_ptrt_addresst_uint64t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6604:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6615:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6627:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6635:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6643:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6651:6:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6659:6:15","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6667:6:15","type":""},{"name":"value6","nodeType":"YulTypedName","src":"6675:6:15","type":""},{"name":"value7","nodeType":"YulTypedName","src":"6683:6:15","type":""}],"src":"6491:1425:15"},{"body":{"nodeType":"YulBlock","src":"7987:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8004:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8027:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8009:17:15"},"nodeType":"YulFunctionCall","src":"8009:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7997:6:15"},"nodeType":"YulFunctionCall","src":"7997:37:15"},"nodeType":"YulExpressionStatement","src":"7997:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7975:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7982:3:15","type":""}],"src":"7922:118:15"},{"body":{"nodeType":"YulBlock","src":"8111:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8128:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8151:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"8133:17:15"},"nodeType":"YulFunctionCall","src":"8133:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8121:6:15"},"nodeType":"YulFunctionCall","src":"8121:37:15"},"nodeType":"YulExpressionStatement","src":"8121:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8099:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8106:3:15","type":""}],"src":"8046:118:15"},{"body":{"nodeType":"YulBlock","src":"8296:206:15","statements":[{"nodeType":"YulAssignment","src":"8306:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8318:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8329:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8314:3:15"},"nodeType":"YulFunctionCall","src":"8314:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8306:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8386:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8399:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8410:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8395:3:15"},"nodeType":"YulFunctionCall","src":"8395:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"8342:43:15"},"nodeType":"YulFunctionCall","src":"8342:71:15"},"nodeType":"YulExpressionStatement","src":"8342:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8467:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8480:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8491:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8476:3:15"},"nodeType":"YulFunctionCall","src":"8476:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8423:43:15"},"nodeType":"YulFunctionCall","src":"8423:72:15"},"nodeType":"YulExpressionStatement","src":"8423:72:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8260:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8272:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8280:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8291:4:15","type":""}],"src":"8170:332:15"},{"body":{"nodeType":"YulBlock","src":"8553:32:15","statements":[{"nodeType":"YulAssignment","src":"8563:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"8574:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8563:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8535:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8545:7:15","type":""}],"src":"8508:77:15"},{"body":{"nodeType":"YulBlock","src":"8634:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"8691:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8700:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8703:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8693:6:15"},"nodeType":"YulFunctionCall","src":"8693:12:15"},"nodeType":"YulExpressionStatement","src":"8693:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8657:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8682:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8664:17:15"},"nodeType":"YulFunctionCall","src":"8664:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8654:2:15"},"nodeType":"YulFunctionCall","src":"8654:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8647:6:15"},"nodeType":"YulFunctionCall","src":"8647:43:15"},"nodeType":"YulIf","src":"8644:63:15"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8627:5:15","type":""}],"src":"8591:122:15"},{"body":{"nodeType":"YulBlock","src":"8771:87:15","statements":[{"nodeType":"YulAssignment","src":"8781:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8803:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8790:12:15"},"nodeType":"YulFunctionCall","src":"8790:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8781:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8846:5:15"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"8819:26:15"},"nodeType":"YulFunctionCall","src":"8819:33:15"},"nodeType":"YulExpressionStatement","src":"8819:33:15"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8749:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"8757:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"8765:5:15","type":""}],"src":"8719:139:15"},{"body":{"nodeType":"YulBlock","src":"8908:65:15","statements":[{"nodeType":"YulAssignment","src":"8918:49:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8933:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"8940:26:15","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8929:3:15"},"nodeType":"YulFunctionCall","src":"8929:38:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8918:7:15"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8890:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8900:7:15","type":""}],"src":"8864:109:15"},{"body":{"nodeType":"YulBlock","src":"9021:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"9077:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9086:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9089:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9079:6:15"},"nodeType":"YulFunctionCall","src":"9079:12:15"},"nodeType":"YulExpressionStatement","src":"9079:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9044:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9068:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"9051:16:15"},"nodeType":"YulFunctionCall","src":"9051:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9041:2:15"},"nodeType":"YulFunctionCall","src":"9041:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9034:6:15"},"nodeType":"YulFunctionCall","src":"9034:42:15"},"nodeType":"YulIf","src":"9031:62:15"}]},"name":"validator_revert_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9014:5:15","type":""}],"src":"8979:120:15"},{"body":{"nodeType":"YulBlock","src":"9156:86:15","statements":[{"nodeType":"YulAssignment","src":"9166:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9188:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9175:12:15"},"nodeType":"YulFunctionCall","src":"9175:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"9166:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9230:5:15"}],"functionName":{"name":"validator_revert_t_uint96","nodeType":"YulIdentifier","src":"9204:25:15"},"nodeType":"YulFunctionCall","src":"9204:32:15"},"nodeType":"YulExpressionStatement","src":"9204:32:15"}]},"name":"abi_decode_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9134:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"9142:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"9150:5:15","type":""}],"src":"9105:137:15"},{"body":{"nodeType":"YulBlock","src":"9337:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"9386:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"9388:77:15"},"nodeType":"YulFunctionCall","src":"9388:79:15"},"nodeType":"YulExpressionStatement","src":"9388:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9365:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9373:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9361:3:15"},"nodeType":"YulFunctionCall","src":"9361:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"9380:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9357:3:15"},"nodeType":"YulFunctionCall","src":"9357:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9350:6:15"},"nodeType":"YulFunctionCall","src":"9350:35:15"},"nodeType":"YulIf","src":"9347:122:15"},{"nodeType":"YulAssignment","src":"9478:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9501:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9488:12:15"},"nodeType":"YulFunctionCall","src":"9488:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"9478:6:15"}]},{"body":{"nodeType":"YulBlock","src":"9551:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"9553:77:15"},"nodeType":"YulFunctionCall","src":"9553:79:15"},"nodeType":"YulExpressionStatement","src":"9553:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9523:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9531:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9520:2:15"},"nodeType":"YulFunctionCall","src":"9520:30:15"},"nodeType":"YulIf","src":"9517:117:15"},{"nodeType":"YulAssignment","src":"9643:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9659:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9667:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9655:3:15"},"nodeType":"YulFunctionCall","src":"9655:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"9643:8:15"}]},{"body":{"nodeType":"YulBlock","src":"9726:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"9728:77:15"},"nodeType":"YulFunctionCall","src":"9728:79:15"},"nodeType":"YulExpressionStatement","src":"9728:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"9691:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9705:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9713:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"9701:3:15"},"nodeType":"YulFunctionCall","src":"9701:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9687:3:15"},"nodeType":"YulFunctionCall","src":"9687:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"9721:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9684:2:15"},"nodeType":"YulFunctionCall","src":"9684:41:15"},"nodeType":"YulIf","src":"9681:128:15"}]},"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9304:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"9312:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"9320:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"9330:6:15","type":""}],"src":"9262:553:15"},{"body":{"nodeType":"YulBlock","src":"10042:1472:15","statements":[{"body":{"nodeType":"YulBlock","src":"10089:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10091:77:15"},"nodeType":"YulFunctionCall","src":"10091:79:15"},"nodeType":"YulExpressionStatement","src":"10091:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10063:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"10072:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10059:3:15"},"nodeType":"YulFunctionCall","src":"10059:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"10084:3:15","type":"","value":"288"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10055:3:15"},"nodeType":"YulFunctionCall","src":"10055:33:15"},"nodeType":"YulIf","src":"10052:120:15"},{"nodeType":"YulBlock","src":"10182:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10197:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10211:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10201:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10226:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10261:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10272:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10257:3:15"},"nodeType":"YulFunctionCall","src":"10257:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10281:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10236:20:15"},"nodeType":"YulFunctionCall","src":"10236:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10226:6:15"}]}]},{"nodeType":"YulBlock","src":"10309:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10324:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10338:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10328:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10354:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10389:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10400:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10385:3:15"},"nodeType":"YulFunctionCall","src":"10385:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10409:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"10364:20:15"},"nodeType":"YulFunctionCall","src":"10364:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10354:6:15"}]}]},{"nodeType":"YulBlock","src":"10437:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10452:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10466:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10456:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10482:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10517:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10528:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10513:3:15"},"nodeType":"YulFunctionCall","src":"10513:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10537:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"10492:20:15"},"nodeType":"YulFunctionCall","src":"10492:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"10482:6:15"}]}]},{"nodeType":"YulBlock","src":"10565:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10580:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10594:2:15","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10584:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10610:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10645:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10656:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10641:3:15"},"nodeType":"YulFunctionCall","src":"10641:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10665:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"10620:20:15"},"nodeType":"YulFunctionCall","src":"10620:53:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"10610:6:15"}]}]},{"nodeType":"YulBlock","src":"10693:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10708:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10722:3:15","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10712:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10739:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10773:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10784:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10769:3:15"},"nodeType":"YulFunctionCall","src":"10769:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10793:7:15"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"10749:19:15"},"nodeType":"YulFunctionCall","src":"10749:52:15"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"10739:6:15"}]}]},{"nodeType":"YulBlock","src":"10821:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10836:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10850:3:15","type":"","value":"160"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10840:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10867:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10902:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10913:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10898:3:15"},"nodeType":"YulFunctionCall","src":"10898:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10922:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10877:20:15"},"nodeType":"YulFunctionCall","src":"10877:53:15"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"10867:6:15"}]}]},{"nodeType":"YulBlock","src":"10950:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10965:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10979:3:15","type":"","value":"192"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10969:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10996:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11031:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"11042:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11027:3:15"},"nodeType":"YulFunctionCall","src":"11027:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11051:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"11006:20:15"},"nodeType":"YulFunctionCall","src":"11006:53:15"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"10996:6:15"}]}]},{"nodeType":"YulBlock","src":"11079:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"11094:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"11108:3:15","type":"","value":"224"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11098:6:15","type":""}]},{"nodeType":"YulAssignment","src":"11125:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11160:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"11171:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11156:3:15"},"nodeType":"YulFunctionCall","src":"11156:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11180:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"11135:20:15"},"nodeType":"YulFunctionCall","src":"11135:53:15"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"11125:6:15"}]}]},{"nodeType":"YulBlock","src":"11208:299:15","statements":[{"nodeType":"YulVariableDeclaration","src":"11223:47:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11254:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11265:3:15","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11250:3:15"},"nodeType":"YulFunctionCall","src":"11250:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11237:12:15"},"nodeType":"YulFunctionCall","src":"11237:33:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11227:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"11317:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"11319:77:15"},"nodeType":"YulFunctionCall","src":"11319:79:15"},"nodeType":"YulExpressionStatement","src":"11319:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11289:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"11297:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11286:2:15"},"nodeType":"YulFunctionCall","src":"11286:30:15"},"nodeType":"YulIf","src":"11283:117:15"},{"nodeType":"YulAssignment","src":"11414:83:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11469:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"11480:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11465:3:15"},"nodeType":"YulFunctionCall","src":"11465:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11489:7:15"}],"functionName":{"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulIdentifier","src":"11432:32:15"},"nodeType":"YulFunctionCall","src":"11432:65:15"},"variableNames":[{"name":"value8","nodeType":"YulIdentifier","src":"11414:6:15"},{"name":"value9","nodeType":"YulIdentifier","src":"11422:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9940:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9951:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9963:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9971:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9979:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9987:6:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"9995:6:15","type":""},{"name":"value5","nodeType":"YulTypedName","src":"10003:6:15","type":""},{"name":"value6","nodeType":"YulTypedName","src":"10011:6:15","type":""},{"name":"value7","nodeType":"YulTypedName","src":"10019:6:15","type":""},{"name":"value8","nodeType":"YulTypedName","src":"10027:6:15","type":""},{"name":"value9","nodeType":"YulTypedName","src":"10035:6:15","type":""}],"src":"9821:1693:15"},{"body":{"nodeType":"YulBlock","src":"11618:124:15","statements":[{"nodeType":"YulAssignment","src":"11628:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11640:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11651:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11636:3:15"},"nodeType":"YulFunctionCall","src":"11636:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11628:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11708:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11721:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11732:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11717:3:15"},"nodeType":"YulFunctionCall","src":"11717:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"11664:43:15"},"nodeType":"YulFunctionCall","src":"11664:71:15"},"nodeType":"YulExpressionStatement","src":"11664:71:15"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11590:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11602:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11613:4:15","type":""}],"src":"11520:222:15"},{"body":{"nodeType":"YulBlock","src":"11796:54:15","statements":[{"nodeType":"YulAssignment","src":"11806:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11824:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"11831:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11820:3:15"},"nodeType":"YulFunctionCall","src":"11820:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11840:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11836:3:15"},"nodeType":"YulFunctionCall","src":"11836:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11816:3:15"},"nodeType":"YulFunctionCall","src":"11816:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"11806:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11779:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"11789:6:15","type":""}],"src":"11748:102:15"},{"body":{"nodeType":"YulBlock","src":"11884:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11901:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11904:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11894:6:15"},"nodeType":"YulFunctionCall","src":"11894:88:15"},"nodeType":"YulExpressionStatement","src":"11894:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11998:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12001:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11991:6:15"},"nodeType":"YulFunctionCall","src":"11991:15:15"},"nodeType":"YulExpressionStatement","src":"11991:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12022:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12025:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12015:6:15"},"nodeType":"YulFunctionCall","src":"12015:15:15"},"nodeType":"YulExpressionStatement","src":"12015:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"11856:180:15"},{"body":{"nodeType":"YulBlock","src":"12085:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12095:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12117:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"12147:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"12125:21:15"},"nodeType":"YulFunctionCall","src":"12125:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12113:3:15"},"nodeType":"YulFunctionCall","src":"12113:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"12099:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"12264:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"12266:16:15"},"nodeType":"YulFunctionCall","src":"12266:18:15"},"nodeType":"YulExpressionStatement","src":"12266:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"12207:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"12219:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12204:2:15"},"nodeType":"YulFunctionCall","src":"12204:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"12243:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"12255:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12240:2:15"},"nodeType":"YulFunctionCall","src":"12240:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"12201:2:15"},"nodeType":"YulFunctionCall","src":"12201:62:15"},"nodeType":"YulIf","src":"12198:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12302:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"12306:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12295:6:15"},"nodeType":"YulFunctionCall","src":"12295:22:15"},"nodeType":"YulExpressionStatement","src":"12295:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12071:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"12079:4:15","type":""}],"src":"12042:281:15"},{"body":{"nodeType":"YulBlock","src":"12370:88:15","statements":[{"nodeType":"YulAssignment","src":"12380:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"12390:18:15"},"nodeType":"YulFunctionCall","src":"12390:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12380:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12439:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"12447:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"12419:19:15"},"nodeType":"YulFunctionCall","src":"12419:33:15"},"nodeType":"YulExpressionStatement","src":"12419:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"12354:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"12363:6:15","type":""}],"src":"12329:129:15"},{"body":{"nodeType":"YulBlock","src":"12575:229:15","statements":[{"body":{"nodeType":"YulBlock","src":"12680:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"12682:16:15"},"nodeType":"YulFunctionCall","src":"12682:18:15"},"nodeType":"YulExpressionStatement","src":"12682:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12652:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12660:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12649:2:15"},"nodeType":"YulFunctionCall","src":"12649:30:15"},"nodeType":"YulIf","src":"12646:56:15"},{"nodeType":"YulAssignment","src":"12712:25:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12724:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12732:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12720:3:15"},"nodeType":"YulFunctionCall","src":"12720:17:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"12712:4:15"}]},{"nodeType":"YulAssignment","src":"12774:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"12786:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12792:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12782:3:15"},"nodeType":"YulFunctionCall","src":"12782:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"12774:4:15"}]}]},"name":"array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"12559:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"12570:4:15","type":""}],"src":"12464:340:15"},{"body":{"nodeType":"YulBlock","src":"12899:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12916:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12919:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12909:6:15"},"nodeType":"YulFunctionCall","src":"12909:12:15"},"nodeType":"YulExpressionStatement","src":"12909:12:15"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"12810:117:15"},{"body":{"nodeType":"YulBlock","src":"13022:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13039:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13042:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13032:6:15"},"nodeType":"YulFunctionCall","src":"13032:12:15"},"nodeType":"YulExpressionStatement","src":"13032:12:15"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"12933:117:15"},{"body":{"nodeType":"YulBlock","src":"13189:494:15","statements":[{"body":{"nodeType":"YulBlock","src":"13233:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"13235:77:15"},"nodeType":"YulFunctionCall","src":"13235:79:15"},"nodeType":"YulExpressionStatement","src":"13235:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"13210:3:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"13215:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13206:3:15"},"nodeType":"YulFunctionCall","src":"13206:19:15"},{"kind":"number","nodeType":"YulLiteral","src":"13227:4:15","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13202:3:15"},"nodeType":"YulFunctionCall","src":"13202:30:15"},"nodeType":"YulIf","src":"13199:117:15"},{"nodeType":"YulAssignment","src":"13325:30:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13350:4:15","type":"","value":"0x40"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"13334:15:15"},"nodeType":"YulFunctionCall","src":"13334:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"13325:5:15"}]},{"nodeType":"YulBlock","src":"13365:150:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13400:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13414:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13404:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13440:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"13447:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13436:3:15"},"nodeType":"YulFunctionCall","src":"13436:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13479:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13490:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13475:3:15"},"nodeType":"YulFunctionCall","src":"13475:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"13499:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"13454:20:15"},"nodeType":"YulFunctionCall","src":"13454:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13429:6:15"},"nodeType":"YulFunctionCall","src":"13429:75:15"},"nodeType":"YulExpressionStatement","src":"13429:75:15"}]},{"nodeType":"YulBlock","src":"13525:151:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13560:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13574:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13564:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13601:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"13608:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13597:3:15"},"nodeType":"YulFunctionCall","src":"13597:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13640:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13651:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13636:3:15"},"nodeType":"YulFunctionCall","src":"13636:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"13660:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"13615:20:15"},"nodeType":"YulFunctionCall","src":"13615:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13590:6:15"},"nodeType":"YulFunctionCall","src":"13590:75:15"},"nodeType":"YulExpressionStatement","src":"13590:75:15"}]}]},"name":"abi_decode_t_struct$_Institution_$3624_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13164:9:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"13175:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"13183:5:15","type":""}],"src":"13105:578:15"},{"body":{"nodeType":"YulBlock","src":"13871:666:15","statements":[{"nodeType":"YulAssignment","src":"13881:119:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13992:6:15"}],"functionName":{"name":"array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13906:85:15"},"nodeType":"YulFunctionCall","src":"13906:93:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"13890:15:15"},"nodeType":"YulFunctionCall","src":"13890:110:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"13881:5:15"}]},{"nodeType":"YulVariableDeclaration","src":"14009:16:15","value":{"name":"array","nodeType":"YulIdentifier","src":"14020:5:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"14013:3:15","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14042:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"14049:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14035:6:15"},"nodeType":"YulFunctionCall","src":"14035:21:15"},"nodeType":"YulExpressionStatement","src":"14035:21:15"},{"nodeType":"YulAssignment","src":"14065:23:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14076:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14083:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14072:3:15"},"nodeType":"YulFunctionCall","src":"14072:16:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"14065:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"14098:44:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14116:6:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14128:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14136:4:15","type":"","value":"0x40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"14124:3:15"},"nodeType":"YulFunctionCall","src":"14124:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14112:3:15"},"nodeType":"YulFunctionCall","src":"14112:30:15"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"14102:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"14170:103:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"14184:77:15"},"nodeType":"YulFunctionCall","src":"14184:79:15"},"nodeType":"YulExpressionStatement","src":"14184:79:15"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"14157:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"14165:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14154:2:15"},"nodeType":"YulFunctionCall","src":"14154:15:15"},"nodeType":"YulIf","src":"14151:122:15"},{"body":{"nodeType":"YulBlock","src":"14358:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14373:21:15","value":{"name":"src","nodeType":"YulIdentifier","src":"14391:3:15"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"14377:10:15","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"14415:3:15"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"14470:10:15"},{"name":"end","nodeType":"YulIdentifier","src":"14482:3:15"}],"functionName":{"name":"abi_decode_t_struct$_Institution_$3624_memory_ptr","nodeType":"YulIdentifier","src":"14420:49:15"},"nodeType":"YulFunctionCall","src":"14420:66:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14408:6:15"},"nodeType":"YulFunctionCall","src":"14408:79:15"},"nodeType":"YulExpressionStatement","src":"14408:79:15"},{"nodeType":"YulAssignment","src":"14500:21:15","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"14511:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14516:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14507:3:15"},"nodeType":"YulFunctionCall","src":"14507:14:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"14500:3:15"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"14311:3:15"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"14316:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14308:2:15"},"nodeType":"YulFunctionCall","src":"14308:15:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"14324:25:15","statements":[{"nodeType":"YulAssignment","src":"14326:21:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"14337:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14342:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14333:3:15"},"nodeType":"YulFunctionCall","src":"14333:14:15"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"14326:3:15"}]}]},"pre":{"nodeType":"YulBlock","src":"14286:21:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14288:17:15","value":{"name":"offset","nodeType":"YulIdentifier","src":"14299:6:15"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"14292:3:15","type":""}]}]},"src":"14282:249:15"}]},"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"13841:6:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"13849:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"13857:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"13865:5:15","type":""}],"src":"13740:797:15"},{"body":{"nodeType":"YulBlock","src":"14700:322:15","statements":[{"body":{"nodeType":"YulBlock","src":"14749:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"14751:77:15"},"nodeType":"YulFunctionCall","src":"14751:79:15"},"nodeType":"YulExpressionStatement","src":"14751:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14728:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14736:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14724:3:15"},"nodeType":"YulFunctionCall","src":"14724:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"14743:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14720:3:15"},"nodeType":"YulFunctionCall","src":"14720:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14713:6:15"},"nodeType":"YulFunctionCall","src":"14713:35:15"},"nodeType":"YulIf","src":"14710:122:15"},{"nodeType":"YulVariableDeclaration","src":"14841:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14868:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14855:12:15"},"nodeType":"YulFunctionCall","src":"14855:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14845:6:15","type":""}]},{"nodeType":"YulAssignment","src":"14884:132:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14989:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14997:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14985:3:15"},"nodeType":"YulFunctionCall","src":"14985:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"15004:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"15012:3:15"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14893:91:15"},"nodeType":"YulFunctionCall","src":"14893:123:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"14884:5:15"}]}]},"name":"abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"14678:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"14686:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"14694:5:15","type":""}],"src":"14594:428:15"},{"body":{"nodeType":"YulBlock","src":"15165:605:15","statements":[{"body":{"nodeType":"YulBlock","src":"15211:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"15213:77:15"},"nodeType":"YulFunctionCall","src":"15213:79:15"},"nodeType":"YulExpressionStatement","src":"15213:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"15186:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"15195:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15182:3:15"},"nodeType":"YulFunctionCall","src":"15182:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"15207:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"15178:3:15"},"nodeType":"YulFunctionCall","src":"15178:32:15"},"nodeType":"YulIf","src":"15175:119:15"},{"nodeType":"YulBlock","src":"15304:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15319:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15333:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15323:6:15","type":""}]},{"nodeType":"YulAssignment","src":"15348:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15383:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15394:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15379:3:15"},"nodeType":"YulFunctionCall","src":"15379:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15403:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"15358:20:15"},"nodeType":"YulFunctionCall","src":"15358:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"15348:6:15"}]}]},{"nodeType":"YulBlock","src":"15431:332:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15446:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15477:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"15488:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15473:3:15"},"nodeType":"YulFunctionCall","src":"15473:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"15460:12:15"},"nodeType":"YulFunctionCall","src":"15460:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15450:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"15539:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"15541:77:15"},"nodeType":"YulFunctionCall","src":"15541:79:15"},"nodeType":"YulExpressionStatement","src":"15541:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15511:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15519:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15508:2:15"},"nodeType":"YulFunctionCall","src":"15508:30:15"},"nodeType":"YulIf","src":"15505:117:15"},{"nodeType":"YulAssignment","src":"15636:117:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15725:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15736:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15721:3:15"},"nodeType":"YulFunctionCall","src":"15721:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15745:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"15646:74:15"},"nodeType":"YulFunctionCall","src":"15646:107:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"15636:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15127:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"15138:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"15150:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15158:6:15","type":""}],"src":"15028:742:15"},{"body":{"nodeType":"YulBlock","src":"15834:40:15","statements":[{"nodeType":"YulAssignment","src":"15845:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15861:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15855:5:15"},"nodeType":"YulFunctionCall","src":"15855:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15845:6:15"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15817:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15827:6:15","type":""}],"src":"15776:98:15"},{"body":{"nodeType":"YulBlock","src":"15975:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15992:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"15997:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15985:6:15"},"nodeType":"YulFunctionCall","src":"15985:19:15"},"nodeType":"YulExpressionStatement","src":"15985:19:15"},{"nodeType":"YulAssignment","src":"16013:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16032:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"16037:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16028:3:15"},"nodeType":"YulFunctionCall","src":"16028:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16013:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15947:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"15952:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"15963:11:15","type":""}],"src":"15880:168:15"},{"body":{"nodeType":"YulBlock","src":"16116:184:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16126:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16135:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16130:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16195:63:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"16220:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"16225:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16216:3:15"},"nodeType":"YulFunctionCall","src":"16216:11:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16239:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"16244:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16235:3:15"},"nodeType":"YulFunctionCall","src":"16235:11:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16229:5:15"},"nodeType":"YulFunctionCall","src":"16229:18:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16209:6:15"},"nodeType":"YulFunctionCall","src":"16209:39:15"},"nodeType":"YulExpressionStatement","src":"16209:39:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16156:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"16159:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16153:2:15"},"nodeType":"YulFunctionCall","src":"16153:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16167:19:15","statements":[{"nodeType":"YulAssignment","src":"16169:15:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16178:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"16181:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16174:3:15"},"nodeType":"YulFunctionCall","src":"16174:10:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16169:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"16149:3:15","statements":[]},"src":"16145:113:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"16278:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16283:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16274:3:15"},"nodeType":"YulFunctionCall","src":"16274:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"16292:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16267:6:15"},"nodeType":"YulFunctionCall","src":"16267:27:15"},"nodeType":"YulExpressionStatement","src":"16267:27:15"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"16098:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"16103:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"16108:6:15","type":""}],"src":"16054:246:15"},{"body":{"nodeType":"YulBlock","src":"16396:283:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16406:52:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16452:5:15"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"16420:31:15"},"nodeType":"YulFunctionCall","src":"16420:38:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16410:6:15","type":""}]},{"nodeType":"YulAssignment","src":"16467:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16532:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16537:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16474:57:15"},"nodeType":"YulFunctionCall","src":"16474:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16467:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16592:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"16599:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16588:3:15"},"nodeType":"YulFunctionCall","src":"16588:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"16606:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16611:6:15"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"16553:34:15"},"nodeType":"YulFunctionCall","src":"16553:65:15"},"nodeType":"YulExpressionStatement","src":"16553:65:15"},{"nodeType":"YulAssignment","src":"16627:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16638:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"16665:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"16643:21:15"},"nodeType":"YulFunctionCall","src":"16643:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16634:3:15"},"nodeType":"YulFunctionCall","src":"16634:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16627:3:15"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16377:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16384:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16392:3:15","type":""}],"src":"16306:373:15"},{"body":{"nodeType":"YulBlock","src":"16801:193:15","statements":[{"nodeType":"YulAssignment","src":"16811:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16823:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16834:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16819:3:15"},"nodeType":"YulFunctionCall","src":"16819:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16811:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16858:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16869:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16854:3:15"},"nodeType":"YulFunctionCall","src":"16854:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16877:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"16883:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16873:3:15"},"nodeType":"YulFunctionCall","src":"16873:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16847:6:15"},"nodeType":"YulFunctionCall","src":"16847:47:15"},"nodeType":"YulExpressionStatement","src":"16847:47:15"},{"nodeType":"YulAssignment","src":"16903:84:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16973:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"16982:4:15"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16911:61:15"},"nodeType":"YulFunctionCall","src":"16911:76:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16903:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16773:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16785:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16796:4:15","type":""}],"src":"16685:309:15"},{"body":{"nodeType":"YulBlock","src":"17066:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"17112:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"17114:77:15"},"nodeType":"YulFunctionCall","src":"17114:79:15"},"nodeType":"YulExpressionStatement","src":"17114:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"17087:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"17096:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17083:3:15"},"nodeType":"YulFunctionCall","src":"17083:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"17108:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"17079:3:15"},"nodeType":"YulFunctionCall","src":"17079:32:15"},"nodeType":"YulIf","src":"17076:119:15"},{"nodeType":"YulBlock","src":"17205:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"17220:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"17234:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"17224:6:15","type":""}]},{"nodeType":"YulAssignment","src":"17249:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17284:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"17295:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17280:3:15"},"nodeType":"YulFunctionCall","src":"17280:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"17304:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"17259:20:15"},"nodeType":"YulFunctionCall","src":"17259:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"17249:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17036:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"17047:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"17059:6:15","type":""}],"src":"17000:329:15"},{"body":{"nodeType":"YulBlock","src":"17394:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17411:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17431:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"17416:14:15"},"nodeType":"YulFunctionCall","src":"17416:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17404:6:15"},"nodeType":"YulFunctionCall","src":"17404:34:15"},"nodeType":"YulExpressionStatement","src":"17404:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17382:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17389:3:15","type":""}],"src":"17335:109:15"},{"body":{"nodeType":"YulBlock","src":"17542:118:15","statements":[{"nodeType":"YulAssignment","src":"17552:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17564:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17575:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17560:3:15"},"nodeType":"YulFunctionCall","src":"17560:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17552:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17626:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17639:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17650:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17635:3:15"},"nodeType":"YulFunctionCall","src":"17635:17:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"17588:37:15"},"nodeType":"YulFunctionCall","src":"17588:65:15"},"nodeType":"YulExpressionStatement","src":"17588:65:15"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17514:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17526:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17537:4:15","type":""}],"src":"17450:210:15"},{"body":{"nodeType":"YulBlock","src":"17721:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17738:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17761:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"17743:17:15"},"nodeType":"YulFunctionCall","src":"17743:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17731:6:15"},"nodeType":"YulFunctionCall","src":"17731:37:15"},"nodeType":"YulExpressionStatement","src":"17731:37:15"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17709:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17716:3:15","type":""}],"src":"17666:108:15"},{"body":{"nodeType":"YulBlock","src":"17835:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17852:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17875:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"17857:17:15"},"nodeType":"YulFunctionCall","src":"17857:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17845:6:15"},"nodeType":"YulFunctionCall","src":"17845:37:15"},"nodeType":"YulExpressionStatement","src":"17845:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17823:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17830:3:15","type":""}],"src":"17780:108:15"},{"body":{"nodeType":"YulBlock","src":"17947:52:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17964:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17986:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"17969:16:15"},"nodeType":"YulFunctionCall","src":"17969:23:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17957:6:15"},"nodeType":"YulFunctionCall","src":"17957:36:15"},"nodeType":"YulExpressionStatement","src":"17957:36:15"}]},"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17935:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17942:3:15","type":""}],"src":"17894:105:15"},{"body":{"nodeType":"YulBlock","src":"18054:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18071:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18091:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"18076:14:15"},"nodeType":"YulFunctionCall","src":"18076:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18064:6:15"},"nodeType":"YulFunctionCall","src":"18064:34:15"},"nodeType":"YulExpressionStatement","src":"18064:34:15"}]},"name":"abi_encode_t_bool_to_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18042:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18049:3:15","type":""}],"src":"18005:99:15"},{"body":{"nodeType":"YulBlock","src":"18278:1651:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18288:28:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18304:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18309:6:15","type":"","value":"0x0120"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18300:3:15"},"nodeType":"YulFunctionCall","src":"18300:16:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"18292:4:15","type":""}]},{"nodeType":"YulBlock","src":"18326:166:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18363:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18393:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18400:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18389:3:15"},"nodeType":"YulFunctionCall","src":"18389:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18383:5:15"},"nodeType":"YulFunctionCall","src":"18383:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18367:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18453:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18471:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18476:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18467:3:15"},"nodeType":"YulFunctionCall","src":"18467:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18419:33:15"},"nodeType":"YulFunctionCall","src":"18419:63:15"},"nodeType":"YulExpressionStatement","src":"18419:63:15"}]},{"nodeType":"YulBlock","src":"18502:165:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18538:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18568:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18575:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18564:3:15"},"nodeType":"YulFunctionCall","src":"18564:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18558:5:15"},"nodeType":"YulFunctionCall","src":"18558:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18542:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18628:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18646:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18651:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18642:3:15"},"nodeType":"YulFunctionCall","src":"18642:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18594:33:15"},"nodeType":"YulFunctionCall","src":"18594:63:15"},"nodeType":"YulExpressionStatement","src":"18594:63:15"}]},{"nodeType":"YulBlock","src":"18677:178:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18726:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18756:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18763:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18752:3:15"},"nodeType":"YulFunctionCall","src":"18752:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18746:5:15"},"nodeType":"YulFunctionCall","src":"18746:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18730:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18816:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18834:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18839:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18830:3:15"},"nodeType":"YulFunctionCall","src":"18830:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18782:33:15"},"nodeType":"YulFunctionCall","src":"18782:63:15"},"nodeType":"YulExpressionStatement","src":"18782:63:15"}]},{"nodeType":"YulBlock","src":"18865:169:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18905:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18935:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18942:4:15","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18931:3:15"},"nodeType":"YulFunctionCall","src":"18931:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18925:5:15"},"nodeType":"YulFunctionCall","src":"18925:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18909:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18995:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19013:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19018:4:15","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19009:3:15"},"nodeType":"YulFunctionCall","src":"19009:14:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"18961:33:15"},"nodeType":"YulFunctionCall","src":"18961:63:15"},"nodeType":"YulExpressionStatement","src":"18961:63:15"}]},{"nodeType":"YulBlock","src":"19044:162:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19079:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19109:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19116:4:15","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19105:3:15"},"nodeType":"YulFunctionCall","src":"19105:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19099:5:15"},"nodeType":"YulFunctionCall","src":"19099:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19083:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19167:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19185:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19190:4:15","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19181:3:15"},"nodeType":"YulFunctionCall","src":"19181:14:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulIdentifier","src":"19135:31:15"},"nodeType":"YulFunctionCall","src":"19135:61:15"},"nodeType":"YulExpressionStatement","src":"19135:61:15"}]},{"nodeType":"YulBlock","src":"19216:165:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19258:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19288:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19295:4:15","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19284:3:15"},"nodeType":"YulFunctionCall","src":"19284:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19278:5:15"},"nodeType":"YulFunctionCall","src":"19278:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19262:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19342:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19360:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19365:4:15","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19356:3:15"},"nodeType":"YulFunctionCall","src":"19356:14:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool","nodeType":"YulIdentifier","src":"19314:27:15"},"nodeType":"YulFunctionCall","src":"19314:57:15"},"nodeType":"YulExpressionStatement","src":"19314:57:15"}]},{"nodeType":"YulBlock","src":"19391:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19435:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19465:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19472:4:15","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19461:3:15"},"nodeType":"YulFunctionCall","src":"19461:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19455:5:15"},"nodeType":"YulFunctionCall","src":"19455:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19439:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19525:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19543:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19548:4:15","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19539:3:15"},"nodeType":"YulFunctionCall","src":"19539:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"19491:33:15"},"nodeType":"YulFunctionCall","src":"19491:63:15"},"nodeType":"YulExpressionStatement","src":"19491:63:15"}]},{"nodeType":"YulBlock","src":"19574:168:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19615:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19645:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19652:4:15","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19641:3:15"},"nodeType":"YulFunctionCall","src":"19641:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19635:5:15"},"nodeType":"YulFunctionCall","src":"19635:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19619:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19703:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19721:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19726:4:15","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19717:3:15"},"nodeType":"YulFunctionCall","src":"19717:14:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulIdentifier","src":"19671:31:15"},"nodeType":"YulFunctionCall","src":"19671:61:15"},"nodeType":"YulExpressionStatement","src":"19671:61:15"}]},{"nodeType":"YulBlock","src":"19752:170:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19789:45:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19819:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19826:6:15","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19815:3:15"},"nodeType":"YulFunctionCall","src":"19815:18:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19809:5:15"},"nodeType":"YulFunctionCall","src":"19809:25:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19793:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19881:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19899:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19904:6:15","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19895:3:15"},"nodeType":"YulFunctionCall","src":"19895:16:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"19847:33:15"},"nodeType":"YulFunctionCall","src":"19847:65:15"},"nodeType":"YulExpressionStatement","src":"19847:65:15"}]}]},"name":"abi_encode_t_struct$_Order_$3950_memory_ptr_to_t_struct$_Order_$3950_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18265:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18272:3:15","type":""}],"src":"18166:1763:15"},{"body":{"nodeType":"YulBlock","src":"20079:171:15","statements":[{"nodeType":"YulAssignment","src":"20089:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20101:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20112:3:15","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20097:3:15"},"nodeType":"YulFunctionCall","src":"20097:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20089:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20216:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20229:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20240:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20225:3:15"},"nodeType":"YulFunctionCall","src":"20225:17:15"}],"functionName":{"name":"abi_encode_t_struct$_Order_$3950_memory_ptr_to_t_struct$_Order_$3950_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20126:89:15"},"nodeType":"YulFunctionCall","src":"20126:117:15"},"nodeType":"YulExpressionStatement","src":"20126:117:15"}]},"name":"abi_encode_tuple_t_struct$_Order_$3950_memory_ptr__to_t_struct$_Order_$3950_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20051:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20063:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20074:4:15","type":""}],"src":"19935:315:15"},{"body":{"nodeType":"YulBlock","src":"20339:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"20385:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"20387:77:15"},"nodeType":"YulFunctionCall","src":"20387:79:15"},"nodeType":"YulExpressionStatement","src":"20387:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"20360:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"20369:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20356:3:15"},"nodeType":"YulFunctionCall","src":"20356:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"20381:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"20352:3:15"},"nodeType":"YulFunctionCall","src":"20352:32:15"},"nodeType":"YulIf","src":"20349:119:15"},{"nodeType":"YulBlock","src":"20478:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20493:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"20507:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"20497:6:15","type":""}]},{"nodeType":"YulAssignment","src":"20522:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20557:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"20568:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20553:3:15"},"nodeType":"YulFunctionCall","src":"20553:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"20577:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"20532:20:15"},"nodeType":"YulFunctionCall","src":"20532:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"20522:6:15"}]}]},{"nodeType":"YulBlock","src":"20605:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20620:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"20634:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"20624:6:15","type":""}]},{"nodeType":"YulAssignment","src":"20650:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20685:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"20696:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20681:3:15"},"nodeType":"YulFunctionCall","src":"20681:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"20705:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"20660:20:15"},"nodeType":"YulFunctionCall","src":"20660:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"20650:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20301:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"20312:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"20324:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20332:6:15","type":""}],"src":"20256:474:15"},{"body":{"nodeType":"YulBlock","src":"20978:395:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20988:26:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21004:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21009:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21000:3:15"},"nodeType":"YulFunctionCall","src":"21000:14:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"20992:4:15","type":""}]},{"nodeType":"YulBlock","src":"21024:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21059:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21089:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"21096:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21085:3:15"},"nodeType":"YulFunctionCall","src":"21085:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21079:5:15"},"nodeType":"YulFunctionCall","src":"21079:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"21063:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"21149:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21167:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21172:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21163:3:15"},"nodeType":"YulFunctionCall","src":"21163:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"21115:33:15"},"nodeType":"YulFunctionCall","src":"21115:63:15"},"nodeType":"YulExpressionStatement","src":"21115:63:15"}]},{"nodeType":"YulBlock","src":"21198:168:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21237:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21267:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"21274:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21263:3:15"},"nodeType":"YulFunctionCall","src":"21263:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21257:5:15"},"nodeType":"YulFunctionCall","src":"21257:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"21241:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"21327:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21345:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21350:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21341:3:15"},"nodeType":"YulFunctionCall","src":"21341:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"21293:33:15"},"nodeType":"YulFunctionCall","src":"21293:63:15"},"nodeType":"YulExpressionStatement","src":"21293:63:15"}]}]},"name":"abi_encode_t_struct$_InstitutionByCode_$3629_memory_ptr_to_t_struct$_InstitutionByCode_$3629_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20965:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"20972:3:15","type":""}],"src":"20842:531:15"},{"body":{"nodeType":"YulBlock","src":"21547:194:15","statements":[{"nodeType":"YulAssignment","src":"21557:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21569:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21580:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21565:3:15"},"nodeType":"YulFunctionCall","src":"21565:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21557:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21707:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21720:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21731:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21716:3:15"},"nodeType":"YulFunctionCall","src":"21716:17:15"}],"functionName":{"name":"abi_encode_t_struct$_InstitutionByCode_$3629_memory_ptr_to_t_struct$_InstitutionByCode_$3629_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21593:113:15"},"nodeType":"YulFunctionCall","src":"21593:141:15"},"nodeType":"YulExpressionStatement","src":"21593:141:15"}]},"name":"abi_encode_tuple_t_struct$_InstitutionByCode_$3629_memory_ptr__to_t_struct$_InstitutionByCode_$3629_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21519:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21531:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21542:4:15","type":""}],"src":"21379:362:15"},{"body":{"nodeType":"YulBlock","src":"21845:124:15","statements":[{"nodeType":"YulAssignment","src":"21855:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21867:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21878:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21863:3:15"},"nodeType":"YulFunctionCall","src":"21863:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21855:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21935:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21948:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21959:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21944:3:15"},"nodeType":"YulFunctionCall","src":"21944:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21891:43:15"},"nodeType":"YulFunctionCall","src":"21891:71:15"},"nodeType":"YulExpressionStatement","src":"21891:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21817:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21829:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21840:4:15","type":""}],"src":"21747:222:15"},{"body":{"nodeType":"YulBlock","src":"22072:516:15","statements":[{"body":{"nodeType":"YulBlock","src":"22118:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"22120:77:15"},"nodeType":"YulFunctionCall","src":"22120:79:15"},"nodeType":"YulExpressionStatement","src":"22120:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"22093:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"22102:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22089:3:15"},"nodeType":"YulFunctionCall","src":"22089:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"22114:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22085:3:15"},"nodeType":"YulFunctionCall","src":"22085:32:15"},"nodeType":"YulIf","src":"22082:119:15"},{"nodeType":"YulBlock","src":"22211:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22226:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"22240:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22230:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22255:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22290:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"22301:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22286:3:15"},"nodeType":"YulFunctionCall","src":"22286:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22310:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"22265:20:15"},"nodeType":"YulFunctionCall","src":"22265:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"22255:6:15"}]}]},{"nodeType":"YulBlock","src":"22338:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22353:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"22367:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22357:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22383:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22418:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"22429:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22414:3:15"},"nodeType":"YulFunctionCall","src":"22414:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22438:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"22393:20:15"},"nodeType":"YulFunctionCall","src":"22393:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"22383:6:15"}]}]},{"nodeType":"YulBlock","src":"22466:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22481:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"22495:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22485:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22511:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22543:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"22554:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22539:3:15"},"nodeType":"YulFunctionCall","src":"22539:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22563:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"22521:17:15"},"nodeType":"YulFunctionCall","src":"22521:50:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"22511:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22026:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"22037:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"22049:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22057:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22065:6:15","type":""}],"src":"21975:613:15"},{"body":{"nodeType":"YulBlock","src":"22639:73:15","statements":[{"nodeType":"YulAssignment","src":"22649:57:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22664:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"22671:34:15","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22660:3:15"},"nodeType":"YulFunctionCall","src":"22660:46:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"22649:7:15"}]}]},"name":"cleanup_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22621:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"22631:7:15","type":""}],"src":"22594:118:15"},{"body":{"nodeType":"YulBlock","src":"22783:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22800:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22823:5:15"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"22805:17:15"},"nodeType":"YulFunctionCall","src":"22805:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22793:6:15"},"nodeType":"YulFunctionCall","src":"22793:37:15"},"nodeType":"YulExpressionStatement","src":"22793:37:15"}]},"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22771:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22778:3:15","type":""}],"src":"22718:118:15"},{"body":{"nodeType":"YulBlock","src":"22907:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22924:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22947:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22929:17:15"},"nodeType":"YulFunctionCall","src":"22929:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22917:6:15"},"nodeType":"YulFunctionCall","src":"22917:37:15"},"nodeType":"YulExpressionStatement","src":"22917:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22895:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22902:3:15","type":""}],"src":"22842:118:15"},{"body":{"nodeType":"YulBlock","src":"23120:288:15","statements":[{"nodeType":"YulAssignment","src":"23130:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23142:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23153:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23138:3:15"},"nodeType":"YulFunctionCall","src":"23138:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23130:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"23210:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23223:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23234:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23219:3:15"},"nodeType":"YulFunctionCall","src":"23219:17:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"23166:43:15"},"nodeType":"YulFunctionCall","src":"23166:71:15"},"nodeType":"YulExpressionStatement","src":"23166:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23291:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23304:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23315:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23300:3:15"},"nodeType":"YulFunctionCall","src":"23300:18:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"23247:43:15"},"nodeType":"YulFunctionCall","src":"23247:72:15"},"nodeType":"YulExpressionStatement","src":"23247:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"23373:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23386:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23397:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23382:3:15"},"nodeType":"YulFunctionCall","src":"23382:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"23329:43:15"},"nodeType":"YulFunctionCall","src":"23329:72:15"},"nodeType":"YulExpressionStatement","src":"23329:72:15"}]},"name":"abi_encode_tuple_t_uint128_t_uint128_t_uint256__to_t_uint128_t_uint128_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23076:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"23088:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23096:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23104:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23115:4:15","type":""}],"src":"22966:442:15"},{"body":{"nodeType":"YulBlock","src":"23501:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"23550:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"23552:77:15"},"nodeType":"YulFunctionCall","src":"23552:79:15"},"nodeType":"YulExpressionStatement","src":"23552:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23529:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23537:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23525:3:15"},"nodeType":"YulFunctionCall","src":"23525:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"23544:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23521:3:15"},"nodeType":"YulFunctionCall","src":"23521:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"23514:6:15"},"nodeType":"YulFunctionCall","src":"23514:35:15"},"nodeType":"YulIf","src":"23511:122:15"},{"nodeType":"YulAssignment","src":"23642:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23665:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23652:12:15"},"nodeType":"YulFunctionCall","src":"23652:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"23642:6:15"}]},{"body":{"nodeType":"YulBlock","src":"23715:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"23717:77:15"},"nodeType":"YulFunctionCall","src":"23717:79:15"},"nodeType":"YulExpressionStatement","src":"23717:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"23687:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23695:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23684:2:15"},"nodeType":"YulFunctionCall","src":"23684:30:15"},"nodeType":"YulIf","src":"23681:117:15"},{"nodeType":"YulAssignment","src":"23807:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23823:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23831:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23819:3:15"},"nodeType":"YulFunctionCall","src":"23819:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"23807:8:15"}]},{"body":{"nodeType":"YulBlock","src":"23890:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"23892:77:15"},"nodeType":"YulFunctionCall","src":"23892:79:15"},"nodeType":"YulExpressionStatement","src":"23892:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"23855:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"23869:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23877:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"23865:3:15"},"nodeType":"YulFunctionCall","src":"23865:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23851:3:15"},"nodeType":"YulFunctionCall","src":"23851:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"23885:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23848:2:15"},"nodeType":"YulFunctionCall","src":"23848:41:15"},"nodeType":"YulIf","src":"23845:128:15"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"23468:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"23476:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"23484:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"23494:6:15","type":""}],"src":"23427:552:15"},{"body":{"nodeType":"YulBlock","src":"24070:442:15","statements":[{"body":{"nodeType":"YulBlock","src":"24116:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"24118:77:15"},"nodeType":"YulFunctionCall","src":"24118:79:15"},"nodeType":"YulExpressionStatement","src":"24118:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"24091:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"24100:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24087:3:15"},"nodeType":"YulFunctionCall","src":"24087:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"24112:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"24083:3:15"},"nodeType":"YulFunctionCall","src":"24083:32:15"},"nodeType":"YulIf","src":"24080:119:15"},{"nodeType":"YulBlock","src":"24209:296:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24224:45:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24255:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"24266:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24251:3:15"},"nodeType":"YulFunctionCall","src":"24251:17:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"24238:12:15"},"nodeType":"YulFunctionCall","src":"24238:31:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24228:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"24316:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"24318:77:15"},"nodeType":"YulFunctionCall","src":"24318:79:15"},"nodeType":"YulExpressionStatement","src":"24318:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"24288:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"24296:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24285:2:15"},"nodeType":"YulFunctionCall","src":"24285:30:15"},"nodeType":"YulIf","src":"24282:117:15"},{"nodeType":"YulAssignment","src":"24413:82:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24467:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24478:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24463:3:15"},"nodeType":"YulFunctionCall","src":"24463:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24487:7:15"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"24431:31:15"},"nodeType":"YulFunctionCall","src":"24431:64:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"24413:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"24421:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24032:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"24043:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"24055:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24063:6:15","type":""}],"src":"23985:527:15"},{"body":{"nodeType":"YulBlock","src":"24618:519:15","statements":[{"body":{"nodeType":"YulBlock","src":"24664:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"24666:77:15"},"nodeType":"YulFunctionCall","src":"24666:79:15"},"nodeType":"YulExpressionStatement","src":"24666:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"24639:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"24648:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24635:3:15"},"nodeType":"YulFunctionCall","src":"24635:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"24660:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"24631:3:15"},"nodeType":"YulFunctionCall","src":"24631:32:15"},"nodeType":"YulIf","src":"24628:119:15"},{"nodeType":"YulBlock","src":"24757:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24772:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"24786:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24776:6:15","type":""}]},{"nodeType":"YulAssignment","src":"24801:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24836:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24847:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24832:3:15"},"nodeType":"YulFunctionCall","src":"24832:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24856:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"24811:20:15"},"nodeType":"YulFunctionCall","src":"24811:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"24801:6:15"}]}]},{"nodeType":"YulBlock","src":"24884:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24899:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"24913:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24903:6:15","type":""}]},{"nodeType":"YulAssignment","src":"24929:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24964:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24975:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24960:3:15"},"nodeType":"YulFunctionCall","src":"24960:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24984:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"24939:20:15"},"nodeType":"YulFunctionCall","src":"24939:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"24929:6:15"}]}]},{"nodeType":"YulBlock","src":"25012:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"25027:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25041:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25031:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25057:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25092:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25103:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25088:3:15"},"nodeType":"YulFunctionCall","src":"25088:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25112:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"25067:20:15"},"nodeType":"YulFunctionCall","src":"25067:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"25057:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24572:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"24583:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"24595:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24603:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"24611:6:15","type":""}],"src":"24518:619:15"},{"body":{"nodeType":"YulBlock","src":"25226:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"25272:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"25274:77:15"},"nodeType":"YulFunctionCall","src":"25274:79:15"},"nodeType":"YulExpressionStatement","src":"25274:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"25247:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"25256:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25243:3:15"},"nodeType":"YulFunctionCall","src":"25243:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"25268:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25239:3:15"},"nodeType":"YulFunctionCall","src":"25239:32:15"},"nodeType":"YulIf","src":"25236:119:15"},{"nodeType":"YulBlock","src":"25365:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"25380:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25394:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25384:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25409:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25444:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25455:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25440:3:15"},"nodeType":"YulFunctionCall","src":"25440:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25464:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"25419:20:15"},"nodeType":"YulFunctionCall","src":"25419:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"25409:6:15"}]}]},{"nodeType":"YulBlock","src":"25492:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"25507:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25521:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25511:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25537:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25572:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25583:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25568:3:15"},"nodeType":"YulFunctionCall","src":"25568:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25592:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"25547:20:15"},"nodeType":"YulFunctionCall","src":"25547:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"25537:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25188:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"25199:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"25211:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"25219:6:15","type":""}],"src":"25143:474:15"},{"body":{"nodeType":"YulBlock","src":"25666:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"25723:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25732:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25735:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25725:6:15"},"nodeType":"YulFunctionCall","src":"25725:12:15"},"nodeType":"YulExpressionStatement","src":"25725:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25689:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25714:5:15"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"25696:17:15"},"nodeType":"YulFunctionCall","src":"25696:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"25686:2:15"},"nodeType":"YulFunctionCall","src":"25686:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25679:6:15"},"nodeType":"YulFunctionCall","src":"25679:43:15"},"nodeType":"YulIf","src":"25676:63:15"}]},"name":"validator_revert_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"25659:5:15","type":""}],"src":"25623:122:15"},{"body":{"nodeType":"YulBlock","src":"25803:87:15","statements":[{"nodeType":"YulAssignment","src":"25813:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"25835:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"25822:12:15"},"nodeType":"YulFunctionCall","src":"25822:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"25813:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25878:5:15"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"25851:26:15"},"nodeType":"YulFunctionCall","src":"25851:33:15"},"nodeType":"YulExpressionStatement","src":"25851:33:15"}]},"name":"abi_decode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"25781:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"25789:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"25797:5:15","type":""}],"src":"25751:139:15"},{"body":{"nodeType":"YulBlock","src":"25979:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"26025:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"26027:77:15"},"nodeType":"YulFunctionCall","src":"26027:79:15"},"nodeType":"YulExpressionStatement","src":"26027:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"26000:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"26009:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25996:3:15"},"nodeType":"YulFunctionCall","src":"25996:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"26021:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25992:3:15"},"nodeType":"YulFunctionCall","src":"25992:32:15"},"nodeType":"YulIf","src":"25989:119:15"},{"nodeType":"YulBlock","src":"26118:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"26133:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"26147:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26137:6:15","type":""}]},{"nodeType":"YulAssignment","src":"26162:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26197:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"26208:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26193:3:15"},"nodeType":"YulFunctionCall","src":"26193:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"26217:7:15"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"26172:20:15"},"nodeType":"YulFunctionCall","src":"26172:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"26162:6:15"}]}]},{"nodeType":"YulBlock","src":"26245:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"26260:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"26274:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26264:6:15","type":""}]},{"nodeType":"YulAssignment","src":"26290:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26325:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"26336:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26321:3:15"},"nodeType":"YulFunctionCall","src":"26321:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"26345:7:15"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"26300:20:15"},"nodeType":"YulFunctionCall","src":"26300:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"26290:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint128t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25941:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"25952:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"25964:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"25972:6:15","type":""}],"src":"25896:474:15"},{"body":{"nodeType":"YulBlock","src":"26404:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26421:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26424:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26414:6:15"},"nodeType":"YulFunctionCall","src":"26414:88:15"},"nodeType":"YulExpressionStatement","src":"26414:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26518:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"26521:4:15","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26511:6:15"},"nodeType":"YulFunctionCall","src":"26511:15:15"},"nodeType":"YulExpressionStatement","src":"26511:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26542:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26545:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26535:6:15"},"nodeType":"YulFunctionCall","src":"26535:15:15"},"nodeType":"YulExpressionStatement","src":"26535:15:15"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"26376:180:15"},{"body":{"nodeType":"YulBlock","src":"26658:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26675:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"26680:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26668:6:15"},"nodeType":"YulFunctionCall","src":"26668:19:15"},"nodeType":"YulExpressionStatement","src":"26668:19:15"},{"nodeType":"YulAssignment","src":"26696:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26715:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"26720:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26711:3:15"},"nodeType":"YulFunctionCall","src":"26711:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"26696:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26630:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"26635:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"26646:11:15","type":""}],"src":"26562:169:15"},{"body":{"nodeType":"YulBlock","src":"26843:58:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"26865:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"26873:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26861:3:15"},"nodeType":"YulFunctionCall","src":"26861:14:15"},{"hexValue":"4f6e6c7941676772656761746f72","kind":"string","nodeType":"YulLiteral","src":"26877:16:15","type":"","value":"OnlyAggregator"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26854:6:15"},"nodeType":"YulFunctionCall","src":"26854:40:15"},"nodeType":"YulExpressionStatement","src":"26854:40:15"}]},"name":"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"26835:6:15","type":""}],"src":"26737:164:15"},{"body":{"nodeType":"YulBlock","src":"27053:220:15","statements":[{"nodeType":"YulAssignment","src":"27063:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27129:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"27134:2:15","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27070:58:15"},"nodeType":"YulFunctionCall","src":"27070:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"27063:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27235:3:15"}],"functionName":{"name":"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","nodeType":"YulIdentifier","src":"27146:88:15"},"nodeType":"YulFunctionCall","src":"27146:93:15"},"nodeType":"YulExpressionStatement","src":"27146:93:15"},{"nodeType":"YulAssignment","src":"27248:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27259:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"27264:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27255:3:15"},"nodeType":"YulFunctionCall","src":"27255:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"27248:3:15"}]}]},"name":"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"27041:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"27049:3:15","type":""}],"src":"26907:366:15"},{"body":{"nodeType":"YulBlock","src":"27450:248:15","statements":[{"nodeType":"YulAssignment","src":"27460:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27472:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27483:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27468:3:15"},"nodeType":"YulFunctionCall","src":"27468:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27460:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27507:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27518:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27503:3:15"},"nodeType":"YulFunctionCall","src":"27503:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27526:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"27532:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27522:3:15"},"nodeType":"YulFunctionCall","src":"27522:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27496:6:15"},"nodeType":"YulFunctionCall","src":"27496:47:15"},"nodeType":"YulExpressionStatement","src":"27496:47:15"},{"nodeType":"YulAssignment","src":"27552:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27686:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27560:124:15"},"nodeType":"YulFunctionCall","src":"27560:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27552:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27430:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27445:4:15","type":""}],"src":"27279:419:15"},{"body":{"nodeType":"YulBlock","src":"27810:58:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"27832:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"27840:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27828:3:15"},"nodeType":"YulFunctionCall","src":"27828:14:15"},{"hexValue":"4f7264657246756c66696c6c6564","kind":"string","nodeType":"YulLiteral","src":"27844:16:15","type":"","value":"OrderFulfilled"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27821:6:15"},"nodeType":"YulFunctionCall","src":"27821:40:15"},"nodeType":"YulExpressionStatement","src":"27821:40:15"}]},"name":"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"27802:6:15","type":""}],"src":"27704:164:15"},{"body":{"nodeType":"YulBlock","src":"28020:220:15","statements":[{"nodeType":"YulAssignment","src":"28030:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28096:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"28101:2:15","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"28037:58:15"},"nodeType":"YulFunctionCall","src":"28037:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"28030:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28202:3:15"}],"functionName":{"name":"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","nodeType":"YulIdentifier","src":"28113:88:15"},"nodeType":"YulFunctionCall","src":"28113:93:15"},"nodeType":"YulExpressionStatement","src":"28113:93:15"},{"nodeType":"YulAssignment","src":"28215:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28226:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"28231:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28222:3:15"},"nodeType":"YulFunctionCall","src":"28222:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"28215:3:15"}]}]},"name":"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"28008:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"28016:3:15","type":""}],"src":"27874:366:15"},{"body":{"nodeType":"YulBlock","src":"28417:248:15","statements":[{"nodeType":"YulAssignment","src":"28427:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28439:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28450:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28435:3:15"},"nodeType":"YulFunctionCall","src":"28435:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"28427:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28474:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28485:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28470:3:15"},"nodeType":"YulFunctionCall","src":"28470:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"28493:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"28499:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28489:3:15"},"nodeType":"YulFunctionCall","src":"28489:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28463:6:15"},"nodeType":"YulFunctionCall","src":"28463:47:15"},"nodeType":"YulExpressionStatement","src":"28463:47:15"},{"nodeType":"YulAssignment","src":"28519:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"28653:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"28527:124:15"},"nodeType":"YulFunctionCall","src":"28527:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"28519:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28397:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"28412:4:15","type":""}],"src":"28246:419:15"},{"body":{"nodeType":"YulBlock","src":"28699:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28716:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28719:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28709:6:15"},"nodeType":"YulFunctionCall","src":"28709:88:15"},"nodeType":"YulExpressionStatement","src":"28709:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28813:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"28816:4:15","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28806:6:15"},"nodeType":"YulFunctionCall","src":"28806:15:15"},"nodeType":"YulExpressionStatement","src":"28806:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28837:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28840:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"28830:6:15"},"nodeType":"YulFunctionCall","src":"28830:15:15"},"nodeType":"YulExpressionStatement","src":"28830:15:15"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"28671:180:15"},{"body":{"nodeType":"YulBlock","src":"28901:172:15","statements":[{"nodeType":"YulAssignment","src":"28911:24:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"28933:1:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"28916:16:15"},"nodeType":"YulFunctionCall","src":"28916:19:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"28911:1:15"}]},{"nodeType":"YulAssignment","src":"28944:24:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"28966:1:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"28949:16:15"},"nodeType":"YulFunctionCall","src":"28949:19:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"28944:1:15"}]},{"nodeType":"YulAssignment","src":"28977:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"28989:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"28992:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28985:3:15"},"nodeType":"YulFunctionCall","src":"28985:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"28977:4:15"}]},{"body":{"nodeType":"YulBlock","src":"29044:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"29046:16:15"},"nodeType":"YulFunctionCall","src":"29046:18:15"},"nodeType":"YulExpressionStatement","src":"29046:18:15"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"29010:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"29016:26:15","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"29007:2:15"},"nodeType":"YulFunctionCall","src":"29007:36:15"},"nodeType":"YulIf","src":"29004:62:15"}]},"name":"checked_sub_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"28887:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"28890:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"28896:4:15","type":""}],"src":"28857:216:15"},{"body":{"nodeType":"YulBlock","src":"29205:206:15","statements":[{"nodeType":"YulAssignment","src":"29215:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29227:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29238:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29223:3:15"},"nodeType":"YulFunctionCall","src":"29223:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29215:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"29295:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29308:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29319:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29304:3:15"},"nodeType":"YulFunctionCall","src":"29304:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"29251:43:15"},"nodeType":"YulFunctionCall","src":"29251:71:15"},"nodeType":"YulExpressionStatement","src":"29251:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"29376:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29389:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29400:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29385:3:15"},"nodeType":"YulFunctionCall","src":"29385:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"29332:43:15"},"nodeType":"YulFunctionCall","src":"29332:72:15"},"nodeType":"YulExpressionStatement","src":"29332:72:15"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29169:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"29181:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"29189:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"29200:4:15","type":""}],"src":"29079:332:15"},{"body":{"nodeType":"YulBlock","src":"29477:77:15","statements":[{"nodeType":"YulAssignment","src":"29487:22:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"29502:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"29496:5:15"},"nodeType":"YulFunctionCall","src":"29496:13:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"29487:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29542:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"29518:23:15"},"nodeType":"YulFunctionCall","src":"29518:30:15"},"nodeType":"YulExpressionStatement","src":"29518:30:15"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"29455:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"29463:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"29471:5:15","type":""}],"src":"29417:137:15"},{"body":{"nodeType":"YulBlock","src":"29634:271:15","statements":[{"body":{"nodeType":"YulBlock","src":"29680:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"29682:77:15"},"nodeType":"YulFunctionCall","src":"29682:79:15"},"nodeType":"YulExpressionStatement","src":"29682:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"29655:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"29664:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29651:3:15"},"nodeType":"YulFunctionCall","src":"29651:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"29676:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"29647:3:15"},"nodeType":"YulFunctionCall","src":"29647:32:15"},"nodeType":"YulIf","src":"29644:119:15"},{"nodeType":"YulBlock","src":"29773:125:15","statements":[{"nodeType":"YulVariableDeclaration","src":"29788:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"29802:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"29792:6:15","type":""}]},{"nodeType":"YulAssignment","src":"29817:71:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29860:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"29871:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29856:3:15"},"nodeType":"YulFunctionCall","src":"29856:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"29880:7:15"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"29827:28:15"},"nodeType":"YulFunctionCall","src":"29827:61:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"29817:6:15"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29604:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"29615:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"29627:6:15","type":""}],"src":"29560:345:15"},{"body":{"nodeType":"YulBlock","src":"29943:28:15","statements":[{"nodeType":"YulAssignment","src":"29953:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"29960:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"29953:3:15"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29929:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"29939:3:15","type":""}],"src":"29911:60:15"},{"body":{"nodeType":"YulBlock","src":"30035:80:15","statements":[{"nodeType":"YulAssignment","src":"30045:64:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30101:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"30084:16:15"},"nodeType":"YulFunctionCall","src":"30084:23:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"30075:8:15"},"nodeType":"YulFunctionCall","src":"30075:33:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"30058:16:15"},"nodeType":"YulFunctionCall","src":"30058:51:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"30045:9:15"}]}]},"name":"convert_t_uint64_to_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"30015:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"30025:9:15","type":""}],"src":"29977:138:15"},{"body":{"nodeType":"YulBlock","src":"30184:64:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30201:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30235:5:15"}],"functionName":{"name":"convert_t_uint64_to_t_uint96","nodeType":"YulIdentifier","src":"30206:28:15"},"nodeType":"YulFunctionCall","src":"30206:35:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30194:6:15"},"nodeType":"YulFunctionCall","src":"30194:48:15"},"nodeType":"YulExpressionStatement","src":"30194:48:15"}]},"name":"abi_encode_t_uint64_to_t_uint96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"30172:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"30179:3:15","type":""}],"src":"30121:127:15"},{"body":{"nodeType":"YulBlock","src":"30406:286:15","statements":[{"nodeType":"YulAssignment","src":"30416:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30428:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30439:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30424:3:15"},"nodeType":"YulFunctionCall","src":"30424:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30416:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"30496:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30509:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30520:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30505:3:15"},"nodeType":"YulFunctionCall","src":"30505:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"30452:43:15"},"nodeType":"YulFunctionCall","src":"30452:71:15"},"nodeType":"YulExpressionStatement","src":"30452:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"30577:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30590:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30601:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30586:3:15"},"nodeType":"YulFunctionCall","src":"30586:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"30533:43:15"},"nodeType":"YulFunctionCall","src":"30533:72:15"},"nodeType":"YulExpressionStatement","src":"30533:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"30657:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30670:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30681:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30666:3:15"},"nodeType":"YulFunctionCall","src":"30666:18:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"30615:41:15"},"nodeType":"YulFunctionCall","src":"30615:70:15"},"nodeType":"YulExpressionStatement","src":"30615:70:15"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"30362:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"30374:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"30382:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"30390:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"30401:4:15","type":""}],"src":"30254:438:15"},{"body":{"nodeType":"YulBlock","src":"30746:362:15","statements":[{"nodeType":"YulAssignment","src":"30756:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"30779:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"30761:17:15"},"nodeType":"YulFunctionCall","src":"30761:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"30756:1:15"}]},{"nodeType":"YulAssignment","src":"30790:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"30813:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"30795:17:15"},"nodeType":"YulFunctionCall","src":"30795:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"30790:1:15"}]},{"nodeType":"YulVariableDeclaration","src":"30824:28:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"30847:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"30850:1:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"30843:3:15"},"nodeType":"YulFunctionCall","src":"30843:9:15"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"30828:11:15","type":""}]},{"nodeType":"YulAssignment","src":"30861:41:15","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"30890:11:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"30872:17:15"},"nodeType":"YulFunctionCall","src":"30872:30:15"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"30861:7:15"}]},{"body":{"nodeType":"YulBlock","src":"31079:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"31081:16:15"},"nodeType":"YulFunctionCall","src":"31081:18:15"},"nodeType":"YulExpressionStatement","src":"31081:18:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"31012:1:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"31005:6:15"},"nodeType":"YulFunctionCall","src":"31005:9:15"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"31035:1:15"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"31042:7:15"},{"name":"x","nodeType":"YulIdentifier","src":"31051:1:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"31038:3:15"},"nodeType":"YulFunctionCall","src":"31038:15:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"31032:2:15"},"nodeType":"YulFunctionCall","src":"31032:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"30985:2:15"},"nodeType":"YulFunctionCall","src":"30985:83:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"30965:6:15"},"nodeType":"YulFunctionCall","src":"30965:113:15"},"nodeType":"YulIf","src":"30962:139:15"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"30729:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"30732:1:15","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"30738:7:15","type":""}],"src":"30698:410:15"},{"body":{"nodeType":"YulBlock","src":"31142:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"31159:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"31162:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31152:6:15"},"nodeType":"YulFunctionCall","src":"31152:88:15"},"nodeType":"YulExpressionStatement","src":"31152:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"31256:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"31259:4:15","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31249:6:15"},"nodeType":"YulFunctionCall","src":"31249:15:15"},"nodeType":"YulExpressionStatement","src":"31249:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"31280:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"31283:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"31273:6:15"},"nodeType":"YulFunctionCall","src":"31273:15:15"},"nodeType":"YulExpressionStatement","src":"31273:15:15"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"31114:180:15"},{"body":{"nodeType":"YulBlock","src":"31342:143:15","statements":[{"nodeType":"YulAssignment","src":"31352:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"31375:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"31357:17:15"},"nodeType":"YulFunctionCall","src":"31357:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"31352:1:15"}]},{"nodeType":"YulAssignment","src":"31386:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"31409:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"31391:17:15"},"nodeType":"YulFunctionCall","src":"31391:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"31386:1:15"}]},{"body":{"nodeType":"YulBlock","src":"31433:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"31435:16:15"},"nodeType":"YulFunctionCall","src":"31435:18:15"},"nodeType":"YulExpressionStatement","src":"31435:18:15"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"31430:1:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"31423:6:15"},"nodeType":"YulFunctionCall","src":"31423:9:15"},"nodeType":"YulIf","src":"31420:35:15"},{"nodeType":"YulAssignment","src":"31465:14:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"31474:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"31477:1:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"31470:3:15"},"nodeType":"YulFunctionCall","src":"31470:9:15"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"31465:1:15"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"31331:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"31334:1:15","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"31340:1:15","type":""}],"src":"31300:185:15"},{"body":{"nodeType":"YulBlock","src":"31597:60:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"31619:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"31627:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31615:3:15"},"nodeType":"YulFunctionCall","src":"31615:14:15"},{"hexValue":"53656e646572466565546f6f48696768","kind":"string","nodeType":"YulLiteral","src":"31631:18:15","type":"","value":"SenderFeeTooHigh"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31608:6:15"},"nodeType":"YulFunctionCall","src":"31608:42:15"},"nodeType":"YulExpressionStatement","src":"31608:42:15"}]},"name":"store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"31589:6:15","type":""}],"src":"31491:166:15"},{"body":{"nodeType":"YulBlock","src":"31809:220:15","statements":[{"nodeType":"YulAssignment","src":"31819:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31885:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"31890:2:15","type":"","value":"16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31826:58:15"},"nodeType":"YulFunctionCall","src":"31826:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"31819:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31991:3:15"}],"functionName":{"name":"store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","nodeType":"YulIdentifier","src":"31902:88:15"},"nodeType":"YulFunctionCall","src":"31902:93:15"},"nodeType":"YulExpressionStatement","src":"31902:93:15"},{"nodeType":"YulAssignment","src":"32004:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32015:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"32020:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32011:3:15"},"nodeType":"YulFunctionCall","src":"32011:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"32004:3:15"}]}]},"name":"abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"31797:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"31805:3:15","type":""}],"src":"31663:366:15"},{"body":{"nodeType":"YulBlock","src":"32206:248:15","statements":[{"nodeType":"YulAssignment","src":"32216:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32228:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32239:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32224:3:15"},"nodeType":"YulFunctionCall","src":"32224:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"32216:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32263:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32274:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32259:3:15"},"nodeType":"YulFunctionCall","src":"32259:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"32282:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"32288:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"32278:3:15"},"nodeType":"YulFunctionCall","src":"32278:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32252:6:15"},"nodeType":"YulFunctionCall","src":"32252:47:15"},"nodeType":"YulExpressionStatement","src":"32252:47:15"},{"nodeType":"YulAssignment","src":"32308:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"32442:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"32316:124:15"},"nodeType":"YulFunctionCall","src":"32316:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"32308:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"32186:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"32201:4:15","type":""}],"src":"32035:419:15"},{"body":{"nodeType":"YulBlock","src":"32614:288:15","statements":[{"nodeType":"YulAssignment","src":"32624:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32636:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32647:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32632:3:15"},"nodeType":"YulFunctionCall","src":"32632:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"32624:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"32704:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32717:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32728:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32713:3:15"},"nodeType":"YulFunctionCall","src":"32713:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"32660:43:15"},"nodeType":"YulFunctionCall","src":"32660:71:15"},"nodeType":"YulExpressionStatement","src":"32660:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"32785:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32798:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32809:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32794:3:15"},"nodeType":"YulFunctionCall","src":"32794:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"32741:43:15"},"nodeType":"YulFunctionCall","src":"32741:72:15"},"nodeType":"YulExpressionStatement","src":"32741:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"32867:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32880:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32891:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32876:3:15"},"nodeType":"YulFunctionCall","src":"32876:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"32823:43:15"},"nodeType":"YulFunctionCall","src":"32823:72:15"},"nodeType":"YulExpressionStatement","src":"32823:72:15"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"32570:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"32582:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"32590:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"32598:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"32609:4:15","type":""}],"src":"32460:442:15"},{"body":{"nodeType":"YulBlock","src":"32951:190:15","statements":[{"nodeType":"YulAssignment","src":"32961:33:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"32988:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32970:17:15"},"nodeType":"YulFunctionCall","src":"32970:24:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"32961:5:15"}]},{"body":{"nodeType":"YulBlock","src":"33084:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"33086:16:15"},"nodeType":"YulFunctionCall","src":"33086:18:15"},"nodeType":"YulExpressionStatement","src":"33086:18:15"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"33009:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"33016:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"33006:2:15"},"nodeType":"YulFunctionCall","src":"33006:77:15"},"nodeType":"YulIf","src":"33003:103:15"},{"nodeType":"YulAssignment","src":"33115:20:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"33126:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"33133:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33122:3:15"},"nodeType":"YulFunctionCall","src":"33122:13:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"33115:3:15"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"32937:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"32947:3:15","type":""}],"src":"32908:233:15"},{"body":{"nodeType":"YulBlock","src":"33206:81:15","statements":[{"nodeType":"YulAssignment","src":"33216:65:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"33273:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"33256:16:15"},"nodeType":"YulFunctionCall","src":"33256:23:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"33247:8:15"},"nodeType":"YulFunctionCall","src":"33247:33:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"33229:17:15"},"nodeType":"YulFunctionCall","src":"33229:52:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"33216:9:15"}]}]},"name":"convert_t_uint96_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"33186:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"33196:9:15","type":""}],"src":"33147:140:15"},{"body":{"nodeType":"YulBlock","src":"33357:65:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33374:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"33409:5:15"}],"functionName":{"name":"convert_t_uint96_to_t_uint256","nodeType":"YulIdentifier","src":"33379:29:15"},"nodeType":"YulFunctionCall","src":"33379:36:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33367:6:15"},"nodeType":"YulFunctionCall","src":"33367:49:15"},"nodeType":"YulExpressionStatement","src":"33367:49:15"}]},"name":"abi_encode_t_uint96_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"33345:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"33352:3:15","type":""}],"src":"33293:129:15"},{"body":{"nodeType":"YulBlock","src":"33492:82:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"33515:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"33520:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"33525:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"33502:12:15"},"nodeType":"YulFunctionCall","src":"33502:30:15"},"nodeType":"YulExpressionStatement","src":"33502:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"33552:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"33557:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33548:3:15"},"nodeType":"YulFunctionCall","src":"33548:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"33566:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33541:6:15"},"nodeType":"YulFunctionCall","src":"33541:27:15"},"nodeType":"YulExpressionStatement","src":"33541:27:15"}]},"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"33474:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"33479:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"33484:6:15","type":""}],"src":"33428:146:15"},{"body":{"nodeType":"YulBlock","src":"33706:215:15","statements":[{"nodeType":"YulAssignment","src":"33716:78:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33782:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"33787:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"33723:58:15"},"nodeType":"YulFunctionCall","src":"33723:71:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"33716:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"33841:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"33848:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"33853:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"33804:36:15"},"nodeType":"YulFunctionCall","src":"33804:56:15"},"nodeType":"YulExpressionStatement","src":"33804:56:15"},{"nodeType":"YulAssignment","src":"33869:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33880:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"33907:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"33885:21:15"},"nodeType":"YulFunctionCall","src":"33885:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33876:3:15"},"nodeType":"YulFunctionCall","src":"33876:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"33869:3:15"}]}]},"name":"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"33679:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"33686:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"33694:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"33702:3:15","type":""}],"src":"33604:317:15"},{"body":{"nodeType":"YulBlock","src":"34138:451:15","statements":[{"nodeType":"YulAssignment","src":"34148:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34160:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34171:3:15","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34156:3:15"},"nodeType":"YulFunctionCall","src":"34156:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34148:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"34228:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34241:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34252:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34237:3:15"},"nodeType":"YulFunctionCall","src":"34237:17:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"34185:42:15"},"nodeType":"YulFunctionCall","src":"34185:70:15"},"nodeType":"YulExpressionStatement","src":"34185:70:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"34309:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34322:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34333:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34318:3:15"},"nodeType":"YulFunctionCall","src":"34318:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"34265:43:15"},"nodeType":"YulFunctionCall","src":"34265:72:15"},"nodeType":"YulExpressionStatement","src":"34265:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"34391:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34404:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34415:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34400:3:15"},"nodeType":"YulFunctionCall","src":"34400:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"34347:43:15"},"nodeType":"YulFunctionCall","src":"34347:72:15"},"nodeType":"YulExpressionStatement","src":"34347:72:15"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34440:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34451:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34436:3:15"},"nodeType":"YulFunctionCall","src":"34436:18:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"34460:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"34466:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"34456:3:15"},"nodeType":"YulFunctionCall","src":"34456:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34429:6:15"},"nodeType":"YulFunctionCall","src":"34429:48:15"},"nodeType":"YulExpressionStatement","src":"34429:48:15"},{"nodeType":"YulAssignment","src":"34486:96:15","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"34560:6:15"},{"name":"value4","nodeType":"YulIdentifier","src":"34568:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"34577:4:15"}],"functionName":{"name":"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"34494:65:15"},"nodeType":"YulFunctionCall","src":"34494:88:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34486:4:15"}]}]},"name":"abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"34078:9:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"34090:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"34098:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"34106:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"34114:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"34122:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"34133:4:15","type":""}],"src":"33927:662:15"},{"body":{"nodeType":"YulBlock","src":"34623:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"34640:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"34643:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34633:6:15"},"nodeType":"YulFunctionCall","src":"34633:88:15"},"nodeType":"YulExpressionStatement","src":"34633:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"34737:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"34740:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34730:6:15"},"nodeType":"YulFunctionCall","src":"34730:15:15"},"nodeType":"YulExpressionStatement","src":"34730:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"34761:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"34764:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"34754:6:15"},"nodeType":"YulFunctionCall","src":"34754:15:15"},"nodeType":"YulExpressionStatement","src":"34754:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"34595:180:15"},{"body":{"nodeType":"YulBlock","src":"34832:269:15","statements":[{"nodeType":"YulAssignment","src":"34842:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"34856:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"34862:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"34852:3:15"},"nodeType":"YulFunctionCall","src":"34852:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"34842:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"34873:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"34903:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"34909:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"34899:3:15"},"nodeType":"YulFunctionCall","src":"34899:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"34877:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"34950:51:15","statements":[{"nodeType":"YulAssignment","src":"34964:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"34978:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"34986:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"34974:3:15"},"nodeType":"YulFunctionCall","src":"34974:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"34964:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"34930:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"34923:6:15"},"nodeType":"YulFunctionCall","src":"34923:26:15"},"nodeType":"YulIf","src":"34920:81:15"},{"body":{"nodeType":"YulBlock","src":"35053:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"35067:16:15"},"nodeType":"YulFunctionCall","src":"35067:18:15"},"nodeType":"YulExpressionStatement","src":"35067:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"35017:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"35040:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"35048:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"35037:2:15"},"nodeType":"YulFunctionCall","src":"35037:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"35014:2:15"},"nodeType":"YulFunctionCall","src":"35014:38:15"},"nodeType":"YulIf","src":"35011:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"34816:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"34825:6:15","type":""}],"src":"34781:320:15"},{"body":{"nodeType":"YulBlock","src":"35213:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"35235:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"35243:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35231:3:15"},"nodeType":"YulFunctionCall","src":"35231:14:15"},{"hexValue":"50617963726573743a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"35247:24:15","type":"","value":"Paycrest: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35224:6:15"},"nodeType":"YulFunctionCall","src":"35224:48:15"},"nodeType":"YulExpressionStatement","src":"35224:48:15"}]},"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"35205:6:15","type":""}],"src":"35107:172:15"},{"body":{"nodeType":"YulBlock","src":"35431:220:15","statements":[{"nodeType":"YulAssignment","src":"35441:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35507:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"35512:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"35448:58:15"},"nodeType":"YulFunctionCall","src":"35448:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"35441:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35613:3:15"}],"functionName":{"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulIdentifier","src":"35524:88:15"},"nodeType":"YulFunctionCall","src":"35524:93:15"},"nodeType":"YulExpressionStatement","src":"35524:93:15"},{"nodeType":"YulAssignment","src":"35626:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35637:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"35642:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35633:3:15"},"nodeType":"YulFunctionCall","src":"35633:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"35626:3:15"}]}]},"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"35419:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"35427:3:15","type":""}],"src":"35285:366:15"},{"body":{"nodeType":"YulBlock","src":"35828:248:15","statements":[{"nodeType":"YulAssignment","src":"35838:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35850:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35861:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35846:3:15"},"nodeType":"YulFunctionCall","src":"35846:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35838:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35885:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35896:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35881:3:15"},"nodeType":"YulFunctionCall","src":"35881:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"35904:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"35910:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"35900:3:15"},"nodeType":"YulFunctionCall","src":"35900:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35874:6:15"},"nodeType":"YulFunctionCall","src":"35874:47:15"},"nodeType":"YulExpressionStatement","src":"35874:47:15"},{"nodeType":"YulAssignment","src":"35930:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"36064:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"35938:124:15"},"nodeType":"YulFunctionCall","src":"35938:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35930:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"35808:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"35823:4:15","type":""}],"src":"35657:419:15"},{"body":{"nodeType":"YulBlock","src":"36230:282:15","statements":[{"nodeType":"YulAssignment","src":"36240:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36252:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36263:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36248:3:15"},"nodeType":"YulFunctionCall","src":"36248:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"36240:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"36320:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36333:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36344:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36329:3:15"},"nodeType":"YulFunctionCall","src":"36329:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"36276:43:15"},"nodeType":"YulFunctionCall","src":"36276:71:15"},"nodeType":"YulExpressionStatement","src":"36276:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"36401:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36414:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36425:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36410:3:15"},"nodeType":"YulFunctionCall","src":"36410:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"36357:43:15"},"nodeType":"YulFunctionCall","src":"36357:72:15"},"nodeType":"YulExpressionStatement","src":"36357:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"36477:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36490:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36501:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36486:3:15"},"nodeType":"YulFunctionCall","src":"36486:18:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"36439:37:15"},"nodeType":"YulFunctionCall","src":"36439:66:15"},"nodeType":"YulExpressionStatement","src":"36439:66:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"36186:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"36198:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"36206:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"36214:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"36225:4:15","type":""}],"src":"36082:430:15"},{"body":{"nodeType":"YulBlock","src":"36624:127:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"36646:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"36654:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36642:3:15"},"nodeType":"YulFunctionCall","src":"36642:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"36658:34:15","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"36635:6:15"},"nodeType":"YulFunctionCall","src":"36635:58:15"},"nodeType":"YulExpressionStatement","src":"36635:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"36714:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"36722:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36710:3:15"},"nodeType":"YulFunctionCall","src":"36710:15:15"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"36727:16:15","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"36703:6:15"},"nodeType":"YulFunctionCall","src":"36703:41:15"},"nodeType":"YulExpressionStatement","src":"36703:41:15"}]},"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"36616:6:15","type":""}],"src":"36518:233:15"},{"body":{"nodeType":"YulBlock","src":"36903:220:15","statements":[{"nodeType":"YulAssignment","src":"36913:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36979:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"36984:2:15","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"36920:58:15"},"nodeType":"YulFunctionCall","src":"36920:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"36913:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"37085:3:15"}],"functionName":{"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nodeType":"YulIdentifier","src":"36996:88:15"},"nodeType":"YulFunctionCall","src":"36996:93:15"},"nodeType":"YulExpressionStatement","src":"36996:93:15"},{"nodeType":"YulAssignment","src":"37098:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"37109:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"37114:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37105:3:15"},"nodeType":"YulFunctionCall","src":"37105:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"37098:3:15"}]}]},"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"36891:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"36899:3:15","type":""}],"src":"36757:366:15"},{"body":{"nodeType":"YulBlock","src":"37300:248:15","statements":[{"nodeType":"YulAssignment","src":"37310:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"37322:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"37333:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37318:3:15"},"nodeType":"YulFunctionCall","src":"37318:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"37310:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"37357:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"37368:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37353:3:15"},"nodeType":"YulFunctionCall","src":"37353:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"37376:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"37382:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"37372:3:15"},"nodeType":"YulFunctionCall","src":"37372:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"37346:6:15"},"nodeType":"YulFunctionCall","src":"37346:47:15"},"nodeType":"YulExpressionStatement","src":"37346:47:15"},{"nodeType":"YulAssignment","src":"37402:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"37536:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"37410:124:15"},"nodeType":"YulFunctionCall","src":"37410:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"37402:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"37280:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"37295:4:15","type":""}],"src":"37129:419:15"},{"body":{"nodeType":"YulBlock","src":"37607:32:15","statements":[{"nodeType":"YulAssignment","src":"37617:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"37628:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"37617:7:15"}]}]},"name":"cleanup_t_rational_1_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37589:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"37599:7:15","type":""}],"src":"37554:85:15"},{"body":{"nodeType":"YulBlock","src":"37688:43:15","statements":[{"nodeType":"YulAssignment","src":"37698:27:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37713:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"37720:4:15","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"37709:3:15"},"nodeType":"YulFunctionCall","src":"37709:16:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"37698:7:15"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37670:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"37680:7:15","type":""}],"src":"37645:86:15"},{"body":{"nodeType":"YulBlock","src":"37803:88:15","statements":[{"nodeType":"YulAssignment","src":"37813:72:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37877:5:15"}],"functionName":{"name":"cleanup_t_rational_1_by_1","nodeType":"YulIdentifier","src":"37851:25:15"},"nodeType":"YulFunctionCall","src":"37851:32:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"37842:8:15"},"nodeType":"YulFunctionCall","src":"37842:42:15"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"37826:15:15"},"nodeType":"YulFunctionCall","src":"37826:59:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"37813:9:15"}]}]},"name":"convert_t_rational_1_by_1_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37783:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"37793:9:15","type":""}],"src":"37737:154:15"},{"body":{"nodeType":"YulBlock","src":"37968:72:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"37985:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"38027:5:15"}],"functionName":{"name":"convert_t_rational_1_by_1_to_t_uint8","nodeType":"YulIdentifier","src":"37990:36:15"},"nodeType":"YulFunctionCall","src":"37990:43:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"37978:6:15"},"nodeType":"YulFunctionCall","src":"37978:56:15"},"nodeType":"YulExpressionStatement","src":"37978:56:15"}]},"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37956:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"37963:3:15","type":""}],"src":"37897:143:15"},{"body":{"nodeType":"YulBlock","src":"38150:130:15","statements":[{"nodeType":"YulAssignment","src":"38160:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"38172:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"38183:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38168:3:15"},"nodeType":"YulFunctionCall","src":"38168:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"38160:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"38246:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"38259:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"38270:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38255:3:15"},"nodeType":"YulFunctionCall","src":"38255:17:15"}],"functionName":{"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"38196:49:15"},"nodeType":"YulFunctionCall","src":"38196:77:15"},"nodeType":"YulExpressionStatement","src":"38196:77:15"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"38122:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"38134:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"38145:4:15","type":""}],"src":"38046:234:15"},{"body":{"nodeType":"YulBlock","src":"38351:31:15","statements":[{"nodeType":"YulAssignment","src":"38362:13:15","value":{"name":"len","nodeType":"YulIdentifier","src":"38372:3:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"38362:6:15"}]}]},"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"38329:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"38336:3:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"38344:6:15","type":""}],"src":"38286:96:15"},{"body":{"nodeType":"YulBlock","src":"38441:87:15","statements":[{"nodeType":"YulAssignment","src":"38451:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"38459:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"38451:4:15"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"38479:1:15","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"38482:3:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"38472:6:15"},"nodeType":"YulFunctionCall","src":"38472:14:15"},"nodeType":"YulExpressionStatement","src":"38472:14:15"},{"nodeType":"YulAssignment","src":"38495:26:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"38513:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"38516:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"38503:9:15"},"nodeType":"YulFunctionCall","src":"38503:18:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"38495:4:15"}]}]},"name":"array_dataslot_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"38428:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"38436:4:15","type":""}],"src":"38388:140:15"},{"body":{"nodeType":"YulBlock","src":"38578:49:15","statements":[{"nodeType":"YulAssignment","src":"38588:33:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"38606:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"38613:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38602:3:15"},"nodeType":"YulFunctionCall","src":"38602:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"38618:2:15","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"38598:3:15"},"nodeType":"YulFunctionCall","src":"38598:23:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"38588:6:15"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"38561:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"38571:6:15","type":""}],"src":"38534:93:15"},{"body":{"nodeType":"YulBlock","src":"38686:54:15","statements":[{"nodeType":"YulAssignment","src":"38696:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"38721:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"38727:5:15"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"38717:3:15"},"nodeType":"YulFunctionCall","src":"38717:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"38696:8:15"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"38661:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"38667:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"38677:8:15","type":""}],"src":"38633:107:15"},{"body":{"nodeType":"YulBlock","src":"38822:317:15","statements":[{"nodeType":"YulVariableDeclaration","src":"38832:35:15","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"38853:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"38865:1:15","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"38849:3:15"},"nodeType":"YulFunctionCall","src":"38849:18:15"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"38836:9:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"38876:109:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"38907:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"38918:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"38888:18:15"},"nodeType":"YulFunctionCall","src":"38888:97:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"38880:4:15","type":""}]},{"nodeType":"YulAssignment","src":"38994:51:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"39025:9:15"},{"name":"toInsert","nodeType":"YulIdentifier","src":"39036:8:15"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"39006:18:15"},"nodeType":"YulFunctionCall","src":"39006:39:15"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"38994:8:15"}]},{"nodeType":"YulAssignment","src":"39054:30:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"39067:5:15"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"39078:4:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"39074:3:15"},"nodeType":"YulFunctionCall","src":"39074:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"39063:3:15"},"nodeType":"YulFunctionCall","src":"39063:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"39054:5:15"}]},{"nodeType":"YulAssignment","src":"39093:40:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"39106:5:15"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"39117:8:15"},{"name":"mask","nodeType":"YulIdentifier","src":"39127:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"39113:3:15"},"nodeType":"YulFunctionCall","src":"39113:19:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"39103:2:15"},"nodeType":"YulFunctionCall","src":"39103:30:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"39093:6:15"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"38783:5:15","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"38790:10:15","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"38802:8:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"38815:6:15","type":""}],"src":"38746:393:15"},{"body":{"nodeType":"YulBlock","src":"39205:82:15","statements":[{"nodeType":"YulAssignment","src":"39215:66:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"39273:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"39255:17:15"},"nodeType":"YulFunctionCall","src":"39255:24:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"39246:8:15"},"nodeType":"YulFunctionCall","src":"39246:34:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"39228:17:15"},"nodeType":"YulFunctionCall","src":"39228:53:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"39215:9:15"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"39185:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"39195:9:15","type":""}],"src":"39145:142:15"},{"body":{"nodeType":"YulBlock","src":"39340:28:15","statements":[{"nodeType":"YulAssignment","src":"39350:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"39357:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"39350:3:15"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"39326:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"39336:3:15","type":""}],"src":"39293:75:15"},{"body":{"nodeType":"YulBlock","src":"39450:193:15","statements":[{"nodeType":"YulVariableDeclaration","src":"39460:63:15","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"39515:7:15"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"39484:30:15"},"nodeType":"YulFunctionCall","src":"39484:39:15"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"39464:16:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"39539:4:15"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"39579:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"39573:5:15"},"nodeType":"YulFunctionCall","src":"39573:11:15"},{"name":"offset","nodeType":"YulIdentifier","src":"39586:6:15"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"39618:16:15"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"39594:23:15"},"nodeType":"YulFunctionCall","src":"39594:41:15"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"39545:27:15"},"nodeType":"YulFunctionCall","src":"39545:91:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"39532:6:15"},"nodeType":"YulFunctionCall","src":"39532:105:15"},"nodeType":"YulExpressionStatement","src":"39532:105:15"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"39427:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"39433:6:15","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"39441:7:15","type":""}],"src":"39374:269:15"},{"body":{"nodeType":"YulBlock","src":"39698:24:15","statements":[{"nodeType":"YulAssignment","src":"39708:8:15","value":{"kind":"number","nodeType":"YulLiteral","src":"39715:1:15","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"39708:3:15"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"39694:3:15","type":""}],"src":"39649:73:15"},{"body":{"nodeType":"YulBlock","src":"39781:136:15","statements":[{"nodeType":"YulVariableDeclaration","src":"39791:46:15","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"39805:30:15"},"nodeType":"YulFunctionCall","src":"39805:32:15"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"39795:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"39890:4:15"},{"name":"offset","nodeType":"YulIdentifier","src":"39896:6:15"},{"name":"zero_0","nodeType":"YulIdentifier","src":"39904:6:15"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"39846:43:15"},"nodeType":"YulFunctionCall","src":"39846:65:15"},"nodeType":"YulExpressionStatement","src":"39846:65:15"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"39767:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"39773:6:15","type":""}],"src":"39728:189:15"},{"body":{"nodeType":"YulBlock","src":"39973:136:15","statements":[{"body":{"nodeType":"YulBlock","src":"40040:63:15","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"40084:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"40091:1:15","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"40054:29:15"},"nodeType":"YulFunctionCall","src":"40054:39:15"},"nodeType":"YulExpressionStatement","src":"40054:39:15"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"39993:5:15"},{"name":"end","nodeType":"YulIdentifier","src":"40000:3:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"39990:2:15"},"nodeType":"YulFunctionCall","src":"39990:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"40005:26:15","statements":[{"nodeType":"YulAssignment","src":"40007:22:15","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"40020:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"40027:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40016:3:15"},"nodeType":"YulFunctionCall","src":"40016:13:15"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"40007:5:15"}]}]},"pre":{"nodeType":"YulBlock","src":"39987:2:15","statements":[]},"src":"39983:120:15"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"39961:5:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"39968:3:15","type":""}],"src":"39923:186:15"},{"body":{"nodeType":"YulBlock","src":"40193:463:15","statements":[{"body":{"nodeType":"YulBlock","src":"40219:430:15","statements":[{"nodeType":"YulVariableDeclaration","src":"40233:53:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"40280:5:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"40249:30:15"},"nodeType":"YulFunctionCall","src":"40249:37:15"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"40237:8:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"40299:63:15","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"40322:8:15"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"40350:10:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"40332:17:15"},"nodeType":"YulFunctionCall","src":"40332:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40318:3:15"},"nodeType":"YulFunctionCall","src":"40318:44:15"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"40303:11:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"40519:27:15","statements":[{"nodeType":"YulAssignment","src":"40521:23:15","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"40536:8:15"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"40521:11:15"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"40503:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"40515:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"40500:2:15"},"nodeType":"YulFunctionCall","src":"40500:18:15"},"nodeType":"YulIf","src":"40497:49:15"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"40588:11:15"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"40605:8:15"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"40633:3:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"40615:17:15"},"nodeType":"YulFunctionCall","src":"40615:22:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40601:3:15"},"nodeType":"YulFunctionCall","src":"40601:37:15"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"40559:28:15"},"nodeType":"YulFunctionCall","src":"40559:80:15"},"nodeType":"YulExpressionStatement","src":"40559:80:15"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"40210:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"40215:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"40207:2:15"},"nodeType":"YulFunctionCall","src":"40207:11:15"},"nodeType":"YulIf","src":"40204:445:15"}]},"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"40169:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"40176:3:15","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"40181:10:15","type":""}],"src":"40115:541:15"},{"body":{"nodeType":"YulBlock","src":"40725:54:15","statements":[{"nodeType":"YulAssignment","src":"40735:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"40760:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"40766:5:15"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"40756:3:15"},"nodeType":"YulFunctionCall","src":"40756:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"40735:8:15"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"40700:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"40706:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"40716:8:15","type":""}],"src":"40662:117:15"},{"body":{"nodeType":"YulBlock","src":"40836:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"40846:68:15","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40895:1:15","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"40898:5:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"40891:3:15"},"nodeType":"YulFunctionCall","src":"40891:13:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40910:1:15","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"40906:3:15"},"nodeType":"YulFunctionCall","src":"40906:6:15"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"40862:28:15"},"nodeType":"YulFunctionCall","src":"40862:51:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"40858:3:15"},"nodeType":"YulFunctionCall","src":"40858:56:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"40850:4:15","type":""}]},{"nodeType":"YulAssignment","src":"40923:25:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"40937:4:15"},{"name":"mask","nodeType":"YulIdentifier","src":"40943:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"40933:3:15"},"nodeType":"YulFunctionCall","src":"40933:15:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"40923:6:15"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"40813:4:15","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"40819:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"40829:6:15","type":""}],"src":"40785:169:15"},{"body":{"nodeType":"YulBlock","src":"41040:214:15","statements":[{"nodeType":"YulAssignment","src":"41173:37:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"41200:4:15"},{"name":"len","nodeType":"YulIdentifier","src":"41206:3:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"41181:18:15"},"nodeType":"YulFunctionCall","src":"41181:29:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"41173:4:15"}]},{"nodeType":"YulAssignment","src":"41219:29:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"41230:4:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"41240:1:15","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"41243:3:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"41236:3:15"},"nodeType":"YulFunctionCall","src":"41236:11:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"41227:2:15"},"nodeType":"YulFunctionCall","src":"41227:21:15"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"41219:4:15"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"41021:4:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"41027:3:15","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"41035:4:15","type":""}],"src":"40959:295:15"},{"body":{"nodeType":"YulBlock","src":"41356:1301:15","statements":[{"nodeType":"YulVariableDeclaration","src":"41367:57:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"41415:3:15"},{"name":"len","nodeType":"YulIdentifier","src":"41420:3:15"}],"functionName":{"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"41381:33:15"},"nodeType":"YulFunctionCall","src":"41381:43:15"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"41371:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"41509:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"41511:16:15"},"nodeType":"YulFunctionCall","src":"41511:18:15"},"nodeType":"YulExpressionStatement","src":"41511:18:15"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"41481:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"41489:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"41478:2:15"},"nodeType":"YulFunctionCall","src":"41478:30:15"},"nodeType":"YulIf","src":"41475:56:15"},{"nodeType":"YulVariableDeclaration","src":"41541:52:15","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"41587:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"41581:5:15"},"nodeType":"YulFunctionCall","src":"41581:11:15"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"41555:25:15"},"nodeType":"YulFunctionCall","src":"41555:38:15"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"41545:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"41685:4:15"},{"name":"oldLen","nodeType":"YulIdentifier","src":"41691:6:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"41699:6:15"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulIdentifier","src":"41640:44:15"},"nodeType":"YulFunctionCall","src":"41640:66:15"},"nodeType":"YulExpressionStatement","src":"41640:66:15"},{"nodeType":"YulVariableDeclaration","src":"41716:18:15","value":{"kind":"number","nodeType":"YulLiteral","src":"41733:1:15","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"41720:9:15","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"41781:624:15","statements":[{"nodeType":"YulVariableDeclaration","src":"41795:37:15","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"41814:6:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"41826:4:15","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"41822:3:15"},"nodeType":"YulFunctionCall","src":"41822:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"41810:3:15"},"nodeType":"YulFunctionCall","src":"41810:22:15"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"41799:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"41846:50:15","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"41891:4:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"41860:30:15"},"nodeType":"YulFunctionCall","src":"41860:36:15"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"41850:6:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"41909:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"41918:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"41913:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"41977:170:15","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"42002:6:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"42027:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"42032:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42023:3:15"},"nodeType":"YulFunctionCall","src":"42023:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"42010:12:15"},"nodeType":"YulFunctionCall","src":"42010:33:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"41995:6:15"},"nodeType":"YulFunctionCall","src":"41995:49:15"},"nodeType":"YulExpressionStatement","src":"41995:49:15"},{"nodeType":"YulAssignment","src":"42061:24:15","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"42075:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"42083:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42071:3:15"},"nodeType":"YulFunctionCall","src":"42071:14:15"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"42061:6:15"}]},{"nodeType":"YulAssignment","src":"42102:31:15","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"42119:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42130:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42115:3:15"},"nodeType":"YulFunctionCall","src":"42115:18:15"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"42102:9:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"41943:1:15"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"41946:7:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"41940:2:15"},"nodeType":"YulFunctionCall","src":"41940:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"41955:21:15","statements":[{"nodeType":"YulAssignment","src":"41957:17:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"41966:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"41969:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41962:3:15"},"nodeType":"YulFunctionCall","src":"41962:12:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"41957:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"41936:3:15","statements":[]},"src":"41932:215:15"},{"body":{"nodeType":"YulBlock","src":"42183:163:15","statements":[{"nodeType":"YulVariableDeclaration","src":"42201:50:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"42235:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"42240:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42231:3:15"},"nodeType":"YulFunctionCall","src":"42231:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"42218:12:15"},"nodeType":"YulFunctionCall","src":"42218:33:15"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"42205:9:15","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"42275:6:15"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"42302:9:15"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"42317:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"42325:4:15","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"42313:3:15"},"nodeType":"YulFunctionCall","src":"42313:17:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"42283:18:15"},"nodeType":"YulFunctionCall","src":"42283:48:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"42268:6:15"},"nodeType":"YulFunctionCall","src":"42268:64:15"},"nodeType":"YulExpressionStatement","src":"42268:64:15"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"42166:7:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"42175:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"42163:2:15"},"nodeType":"YulFunctionCall","src":"42163:19:15"},"nodeType":"YulIf","src":"42160:186:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"42366:4:15"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"42380:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"42388:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"42376:3:15"},"nodeType":"YulFunctionCall","src":"42376:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"42392:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42372:3:15"},"nodeType":"YulFunctionCall","src":"42372:22:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"42359:6:15"},"nodeType":"YulFunctionCall","src":"42359:36:15"},"nodeType":"YulExpressionStatement","src":"42359:36:15"}]},"nodeType":"YulCase","src":"41774:631:15","value":{"kind":"number","nodeType":"YulLiteral","src":"41779:1:15","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"42422:229:15","statements":[{"nodeType":"YulVariableDeclaration","src":"42436:14:15","value":{"kind":"number","nodeType":"YulLiteral","src":"42449:1:15","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"42440:5:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"42473:74:15","statements":[{"nodeType":"YulAssignment","src":"42491:42:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"42517:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"42522:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42513:3:15"},"nodeType":"YulFunctionCall","src":"42513:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"42500:12:15"},"nodeType":"YulFunctionCall","src":"42500:33:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"42491:5:15"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"42466:6:15"},"nodeType":"YulIf","src":"42463:84:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"42567:4:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"42626:5:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"42633:6:15"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"42573:52:15"},"nodeType":"YulFunctionCall","src":"42573:67:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"42560:6:15"},"nodeType":"YulFunctionCall","src":"42560:81:15"},"nodeType":"YulExpressionStatement","src":"42560:81:15"}]},"nodeType":"YulCase","src":"42414:237:15","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"41754:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"41762:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"41751:2:15"},"nodeType":"YulFunctionCall","src":"41751:14:15"},"nodeType":"YulSwitch","src":"41744:907:15"}]},"name":"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"41340:4:15","type":""},{"name":"src","nodeType":"YulTypedName","src":"41346:3:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"41351:3:15","type":""}],"src":"41259:1398:15"},{"body":{"nodeType":"YulBlock","src":"42785:214:15","statements":[{"nodeType":"YulAssignment","src":"42795:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42860:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"42865:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"42802:57:15"},"nodeType":"YulFunctionCall","src":"42802:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"42795:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"42919:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"42926:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"42931:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"42882:36:15"},"nodeType":"YulFunctionCall","src":"42882:56:15"},"nodeType":"YulExpressionStatement","src":"42882:56:15"},{"nodeType":"YulAssignment","src":"42947:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42958:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"42985:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"42963:21:15"},"nodeType":"YulFunctionCall","src":"42963:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42954:3:15"},"nodeType":"YulFunctionCall","src":"42954:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"42947:3:15"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"42758:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"42765:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"42773:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"42781:3:15","type":""}],"src":"42685:314:15"},{"body":{"nodeType":"YulBlock","src":"43131:203:15","statements":[{"nodeType":"YulAssignment","src":"43141:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"43153:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"43164:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43149:3:15"},"nodeType":"YulFunctionCall","src":"43149:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"43141:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"43188:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"43199:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43184:3:15"},"nodeType":"YulFunctionCall","src":"43184:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"43207:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"43213:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"43203:3:15"},"nodeType":"YulFunctionCall","src":"43203:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43177:6:15"},"nodeType":"YulFunctionCall","src":"43177:47:15"},"nodeType":"YulExpressionStatement","src":"43177:47:15"},{"nodeType":"YulAssignment","src":"43233:94:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"43305:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"43313:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"43322:4:15"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"43241:63:15"},"nodeType":"YulFunctionCall","src":"43241:86:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"43233:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"43095:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"43107:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"43115:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"43126:4:15","type":""}],"src":"43005:329:15"},{"body":{"nodeType":"YulBlock","src":"43446:119:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"43468:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"43476:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43464:3:15"},"nodeType":"YulFunctionCall","src":"43464:14:15"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"43480:34:15","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43457:6:15"},"nodeType":"YulFunctionCall","src":"43457:58:15"},"nodeType":"YulExpressionStatement","src":"43457:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"43536:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"43544:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43532:3:15"},"nodeType":"YulFunctionCall","src":"43532:15:15"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"43549:8:15","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43525:6:15"},"nodeType":"YulFunctionCall","src":"43525:33:15"},"nodeType":"YulExpressionStatement","src":"43525:33:15"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"43438:6:15","type":""}],"src":"43340:225:15"},{"body":{"nodeType":"YulBlock","src":"43717:220:15","statements":[{"nodeType":"YulAssignment","src":"43727:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43793:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"43798:2:15","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"43734:58:15"},"nodeType":"YulFunctionCall","src":"43734:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"43727:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43899:3:15"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"43810:88:15"},"nodeType":"YulFunctionCall","src":"43810:93:15"},"nodeType":"YulExpressionStatement","src":"43810:93:15"},{"nodeType":"YulAssignment","src":"43912:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43923:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"43928:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43919:3:15"},"nodeType":"YulFunctionCall","src":"43919:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"43912:3:15"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"43705:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"43713:3:15","type":""}],"src":"43571:366:15"},{"body":{"nodeType":"YulBlock","src":"44114:248:15","statements":[{"nodeType":"YulAssignment","src":"44124:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"44136:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"44147:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44132:3:15"},"nodeType":"YulFunctionCall","src":"44132:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"44124:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"44171:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"44182:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44167:3:15"},"nodeType":"YulFunctionCall","src":"44167:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"44190:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"44196:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"44186:3:15"},"nodeType":"YulFunctionCall","src":"44186:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"44160:6:15"},"nodeType":"YulFunctionCall","src":"44160:47:15"},"nodeType":"YulExpressionStatement","src":"44160:47:15"},{"nodeType":"YulAssignment","src":"44216:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"44350:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"44224:124:15"},"nodeType":"YulFunctionCall","src":"44224:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"44216:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"44094:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"44109:4:15","type":""}],"src":"43943:419:15"},{"body":{"nodeType":"YulBlock","src":"44494:206:15","statements":[{"nodeType":"YulAssignment","src":"44504:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"44516:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"44527:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44512:3:15"},"nodeType":"YulFunctionCall","src":"44512:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"44504:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"44584:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"44597:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"44608:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44593:3:15"},"nodeType":"YulFunctionCall","src":"44593:17:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"44540:43:15"},"nodeType":"YulFunctionCall","src":"44540:71:15"},"nodeType":"YulExpressionStatement","src":"44540:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"44665:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"44678:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"44689:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44674:3:15"},"nodeType":"YulFunctionCall","src":"44674:18:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"44621:43:15"},"nodeType":"YulFunctionCall","src":"44621:72:15"},"nodeType":"YulExpressionStatement","src":"44621:72:15"}]},"name":"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"44458:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"44470:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"44478:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"44489:4:15","type":""}],"src":"44368:332:15"},{"body":{"nodeType":"YulBlock","src":"44751:149:15","statements":[{"nodeType":"YulAssignment","src":"44761:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44784:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"44766:17:15"},"nodeType":"YulFunctionCall","src":"44766:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"44761:1:15"}]},{"nodeType":"YulAssignment","src":"44795:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"44818:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"44800:17:15"},"nodeType":"YulFunctionCall","src":"44800:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"44795:1:15"}]},{"nodeType":"YulAssignment","src":"44829:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44841:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"44844:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"44837:3:15"},"nodeType":"YulFunctionCall","src":"44837:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"44829:4:15"}]},{"body":{"nodeType":"YulBlock","src":"44871:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"44873:16:15"},"nodeType":"YulFunctionCall","src":"44873:18:15"},"nodeType":"YulExpressionStatement","src":"44873:18:15"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"44862:4:15"},{"name":"x","nodeType":"YulIdentifier","src":"44868:1:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"44859:2:15"},"nodeType":"YulFunctionCall","src":"44859:11:15"},"nodeType":"YulIf","src":"44856:37:15"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"44737:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"44740:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"44746:4:15","type":""}],"src":"44706:194:15"},{"body":{"nodeType":"YulBlock","src":"44950:147:15","statements":[{"nodeType":"YulAssignment","src":"44960:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44983:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"44965:17:15"},"nodeType":"YulFunctionCall","src":"44965:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"44960:1:15"}]},{"nodeType":"YulAssignment","src":"44994:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"45017:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"44999:17:15"},"nodeType":"YulFunctionCall","src":"44999:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"44994:1:15"}]},{"nodeType":"YulAssignment","src":"45028:16:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"45039:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"45042:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45035:3:15"},"nodeType":"YulFunctionCall","src":"45035:9:15"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"45028:3:15"}]},{"body":{"nodeType":"YulBlock","src":"45068:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"45070:16:15"},"nodeType":"YulFunctionCall","src":"45070:18:15"},"nodeType":"YulExpressionStatement","src":"45070:18:15"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"45060:1:15"},{"name":"sum","nodeType":"YulIdentifier","src":"45063:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"45057:2:15"},"nodeType":"YulFunctionCall","src":"45057:10:15"},"nodeType":"YulIf","src":"45054:36:15"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"44937:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"44940:1:15","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"44946:3:15","type":""}],"src":"44906:191:15"},{"body":{"nodeType":"YulBlock","src":"45209:61:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"45231:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"45239:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45227:3:15"},"nodeType":"YulFunctionCall","src":"45227:14:15"},{"hexValue":"546f6b656e4e6f74537570706f72746564","kind":"string","nodeType":"YulLiteral","src":"45243:19:15","type":"","value":"TokenNotSupported"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45220:6:15"},"nodeType":"YulFunctionCall","src":"45220:43:15"},"nodeType":"YulExpressionStatement","src":"45220:43:15"}]},"name":"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"45201:6:15","type":""}],"src":"45103:167:15"},{"body":{"nodeType":"YulBlock","src":"45422:220:15","statements":[{"nodeType":"YulAssignment","src":"45432:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45498:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"45503:2:15","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"45439:58:15"},"nodeType":"YulFunctionCall","src":"45439:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"45432:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45604:3:15"}],"functionName":{"name":"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","nodeType":"YulIdentifier","src":"45515:88:15"},"nodeType":"YulFunctionCall","src":"45515:93:15"},"nodeType":"YulExpressionStatement","src":"45515:93:15"},{"nodeType":"YulAssignment","src":"45617:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45628:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"45633:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45624:3:15"},"nodeType":"YulFunctionCall","src":"45624:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"45617:3:15"}]}]},"name":"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"45410:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"45418:3:15","type":""}],"src":"45276:366:15"},{"body":{"nodeType":"YulBlock","src":"45819:248:15","statements":[{"nodeType":"YulAssignment","src":"45829:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45841:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"45852:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45837:3:15"},"nodeType":"YulFunctionCall","src":"45837:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45829:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45876:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"45887:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45872:3:15"},"nodeType":"YulFunctionCall","src":"45872:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"45895:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"45901:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"45891:3:15"},"nodeType":"YulFunctionCall","src":"45891:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45865:6:15"},"nodeType":"YulFunctionCall","src":"45865:47:15"},"nodeType":"YulExpressionStatement","src":"45865:47:15"},{"nodeType":"YulAssignment","src":"45921:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"46055:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"45929:124:15"},"nodeType":"YulFunctionCall","src":"45929:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45921:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"45799:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"45814:4:15","type":""}],"src":"45648:419:15"},{"body":{"nodeType":"YulBlock","src":"46179:56:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"46201:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"46209:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46197:3:15"},"nodeType":"YulFunctionCall","src":"46197:14:15"},{"hexValue":"416d6f756e7449735a65726f","kind":"string","nodeType":"YulLiteral","src":"46213:14:15","type":"","value":"AmountIsZero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"46190:6:15"},"nodeType":"YulFunctionCall","src":"46190:38:15"},"nodeType":"YulExpressionStatement","src":"46190:38:15"}]},"name":"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"46171:6:15","type":""}],"src":"46073:162:15"},{"body":{"nodeType":"YulBlock","src":"46387:220:15","statements":[{"nodeType":"YulAssignment","src":"46397:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46463:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"46468:2:15","type":"","value":"12"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"46404:58:15"},"nodeType":"YulFunctionCall","src":"46404:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"46397:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46569:3:15"}],"functionName":{"name":"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","nodeType":"YulIdentifier","src":"46480:88:15"},"nodeType":"YulFunctionCall","src":"46480:93:15"},"nodeType":"YulExpressionStatement","src":"46480:93:15"},{"nodeType":"YulAssignment","src":"46582:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46593:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"46598:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46589:3:15"},"nodeType":"YulFunctionCall","src":"46589:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"46582:3:15"}]}]},"name":"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"46375:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"46383:3:15","type":""}],"src":"46241:366:15"},{"body":{"nodeType":"YulBlock","src":"46784:248:15","statements":[{"nodeType":"YulAssignment","src":"46794:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"46806:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"46817:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46802:3:15"},"nodeType":"YulFunctionCall","src":"46802:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"46794:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"46841:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"46852:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46837:3:15"},"nodeType":"YulFunctionCall","src":"46837:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"46860:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"46866:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"46856:3:15"},"nodeType":"YulFunctionCall","src":"46856:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"46830:6:15"},"nodeType":"YulFunctionCall","src":"46830:47:15"},"nodeType":"YulExpressionStatement","src":"46830:47:15"},{"nodeType":"YulAssignment","src":"46886:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47020:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"46894:124:15"},"nodeType":"YulFunctionCall","src":"46894:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"46886:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"46764:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"46779:4:15","type":""}],"src":"46613:419:15"},{"body":{"nodeType":"YulBlock","src":"47144:60:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"47166:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"47174:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47162:3:15"},"nodeType":"YulFunctionCall","src":"47162:14:15"},{"hexValue":"5468726f775a65726f41646472657373","kind":"string","nodeType":"YulLiteral","src":"47178:18:15","type":"","value":"ThrowZeroAddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47155:6:15"},"nodeType":"YulFunctionCall","src":"47155:42:15"},"nodeType":"YulExpressionStatement","src":"47155:42:15"}]},"name":"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"47136:6:15","type":""}],"src":"47038:166:15"},{"body":{"nodeType":"YulBlock","src":"47356:220:15","statements":[{"nodeType":"YulAssignment","src":"47366:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47432:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"47437:2:15","type":"","value":"16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"47373:58:15"},"nodeType":"YulFunctionCall","src":"47373:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"47366:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47538:3:15"}],"functionName":{"name":"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","nodeType":"YulIdentifier","src":"47449:88:15"},"nodeType":"YulFunctionCall","src":"47449:93:15"},"nodeType":"YulExpressionStatement","src":"47449:93:15"},{"nodeType":"YulAssignment","src":"47551:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47562:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"47567:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47558:3:15"},"nodeType":"YulFunctionCall","src":"47558:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"47551:3:15"}]}]},"name":"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"47344:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"47352:3:15","type":""}],"src":"47210:366:15"},{"body":{"nodeType":"YulBlock","src":"47753:248:15","statements":[{"nodeType":"YulAssignment","src":"47763:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47775:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"47786:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47771:3:15"},"nodeType":"YulFunctionCall","src":"47771:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"47763:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47810:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"47821:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47806:3:15"},"nodeType":"YulFunctionCall","src":"47806:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47829:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"47835:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"47825:3:15"},"nodeType":"YulFunctionCall","src":"47825:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47799:6:15"},"nodeType":"YulFunctionCall","src":"47799:47:15"},"nodeType":"YulExpressionStatement","src":"47799:47:15"},{"nodeType":"YulAssignment","src":"47855:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47989:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"47863:124:15"},"nodeType":"YulFunctionCall","src":"47863:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"47855:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"47733:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"47748:4:15","type":""}],"src":"47582:419:15"},{"body":{"nodeType":"YulBlock","src":"48113:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"48135:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"48143:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48131:3:15"},"nodeType":"YulFunctionCall","src":"48131:14:15"},{"hexValue":"496e76616c6964496e737469747574696f6e436f6465","kind":"string","nodeType":"YulLiteral","src":"48147:24:15","type":"","value":"InvalidInstitutionCode"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48124:6:15"},"nodeType":"YulFunctionCall","src":"48124:48:15"},"nodeType":"YulExpressionStatement","src":"48124:48:15"}]},"name":"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"48105:6:15","type":""}],"src":"48007:172:15"},{"body":{"nodeType":"YulBlock","src":"48331:220:15","statements":[{"nodeType":"YulAssignment","src":"48341:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48407:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"48412:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"48348:58:15"},"nodeType":"YulFunctionCall","src":"48348:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"48341:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48513:3:15"}],"functionName":{"name":"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","nodeType":"YulIdentifier","src":"48424:88:15"},"nodeType":"YulFunctionCall","src":"48424:93:15"},"nodeType":"YulExpressionStatement","src":"48424:93:15"},{"nodeType":"YulAssignment","src":"48526:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48537:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"48542:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48533:3:15"},"nodeType":"YulFunctionCall","src":"48533:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"48526:3:15"}]}]},"name":"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"48319:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"48327:3:15","type":""}],"src":"48185:366:15"},{"body":{"nodeType":"YulBlock","src":"48728:248:15","statements":[{"nodeType":"YulAssignment","src":"48738:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"48750:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"48761:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48746:3:15"},"nodeType":"YulFunctionCall","src":"48746:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"48738:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"48785:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"48796:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48781:3:15"},"nodeType":"YulFunctionCall","src":"48781:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"48804:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"48810:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"48800:3:15"},"nodeType":"YulFunctionCall","src":"48800:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48774:6:15"},"nodeType":"YulFunctionCall","src":"48774:47:15"},"nodeType":"YulExpressionStatement","src":"48774:47:15"},{"nodeType":"YulAssignment","src":"48830:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"48964:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"48838:124:15"},"nodeType":"YulFunctionCall","src":"48838:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"48830:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"48708:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"48723:4:15","type":""}],"src":"48557:419:15"},{"body":{"nodeType":"YulBlock","src":"49088:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"49110:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"49118:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49106:3:15"},"nodeType":"YulFunctionCall","src":"49106:14:15"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"49122:34:15","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"49099:6:15"},"nodeType":"YulFunctionCall","src":"49099:58:15"},"nodeType":"YulExpressionStatement","src":"49099:58:15"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"49080:6:15","type":""}],"src":"48982:182:15"},{"body":{"nodeType":"YulBlock","src":"49316:220:15","statements":[{"nodeType":"YulAssignment","src":"49326:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49392:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"49397:2:15","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"49333:58:15"},"nodeType":"YulFunctionCall","src":"49333:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"49326:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49498:3:15"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"49409:88:15"},"nodeType":"YulFunctionCall","src":"49409:93:15"},"nodeType":"YulExpressionStatement","src":"49409:93:15"},{"nodeType":"YulAssignment","src":"49511:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49522:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"49527:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49518:3:15"},"nodeType":"YulFunctionCall","src":"49518:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"49511:3:15"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"49304:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"49312:3:15","type":""}],"src":"49170:366:15"},{"body":{"nodeType":"YulBlock","src":"49713:248:15","statements":[{"nodeType":"YulAssignment","src":"49723:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49735:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"49746:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49731:3:15"},"nodeType":"YulFunctionCall","src":"49731:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49723:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49770:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"49781:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49766:3:15"},"nodeType":"YulFunctionCall","src":"49766:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"49789:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"49795:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"49785:3:15"},"nodeType":"YulFunctionCall","src":"49785:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"49759:6:15"},"nodeType":"YulFunctionCall","src":"49759:47:15"},"nodeType":"YulExpressionStatement","src":"49759:47:15"},{"nodeType":"YulAssignment","src":"49815:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"49949:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"49823:124:15"},"nodeType":"YulFunctionCall","src":"49823:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49815:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49693:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"49708:4:15","type":""}],"src":"49542:419:15"},{"body":{"nodeType":"YulBlock","src":"50073:124:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"50095:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"50103:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"50091:3:15"},"nodeType":"YulFunctionCall","src":"50091:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"50107:34:15","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"50084:6:15"},"nodeType":"YulFunctionCall","src":"50084:58:15"},"nodeType":"YulExpressionStatement","src":"50084:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"50163:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"50171:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"50159:3:15"},"nodeType":"YulFunctionCall","src":"50159:15:15"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"50176:13:15","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"50152:6:15"},"nodeType":"YulFunctionCall","src":"50152:38:15"},"nodeType":"YulExpressionStatement","src":"50152:38:15"}]},"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"50065:6:15","type":""}],"src":"49967:230:15"},{"body":{"nodeType":"YulBlock","src":"50349:220:15","statements":[{"nodeType":"YulAssignment","src":"50359:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"50425:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"50430:2:15","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"50366:58:15"},"nodeType":"YulFunctionCall","src":"50366:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"50359:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"50531:3:15"}],"functionName":{"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nodeType":"YulIdentifier","src":"50442:88:15"},"nodeType":"YulFunctionCall","src":"50442:93:15"},"nodeType":"YulExpressionStatement","src":"50442:93:15"},{"nodeType":"YulAssignment","src":"50544:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"50555:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"50560:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"50551:3:15"},"nodeType":"YulFunctionCall","src":"50551:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"50544:3:15"}]}]},"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"50337:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"50345:3:15","type":""}],"src":"50203:366:15"},{"body":{"nodeType":"YulBlock","src":"50746:248:15","statements":[{"nodeType":"YulAssignment","src":"50756:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"50768:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"50779:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"50764:3:15"},"nodeType":"YulFunctionCall","src":"50764:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"50756:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"50803:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"50814:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"50799:3:15"},"nodeType":"YulFunctionCall","src":"50799:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"50822:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"50828:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"50818:3:15"},"nodeType":"YulFunctionCall","src":"50818:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"50792:6:15"},"nodeType":"YulFunctionCall","src":"50792:47:15"},"nodeType":"YulExpressionStatement","src":"50792:47:15"},{"nodeType":"YulAssignment","src":"50848:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"50982:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"50856:124:15"},"nodeType":"YulFunctionCall","src":"50856:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"50848:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"50726:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"50741:4:15","type":""}],"src":"50575:419:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n // struct PaycrestSettingManager.Institution -> struct PaycrestSettingManager.Institution\n function abi_encode_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // code\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x00))\n }\n\n {\n // name\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encodeUpdatedPos_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr(value0, pos) -> updatedPos {\n abi_encode_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr(value0, pos)\n updatedPos := add(pos, 0x40)\n }\n\n function array_nextElement_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct PaycrestSettingManager.Institution[] -> struct PaycrestSettingManager.Institution[]\n function abi_encode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_struct$_Institution_$3624_memory_ptr_to_t_struct$_Institution_$3624_memory_ptr(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_array$_t_address_$dyn_calldata_ptrt_addresst_uint64t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7 {\n if slt(sub(dataEnd, headStart), 224) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3, value4 := abi_decode_t_array$_t_address_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value5 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value6 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value7 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint96(value) {\n if iszero(eq(value, cleanup_t_uint96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint96(value)\n }\n\n // string\n function abi_decode_t_string_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint96(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 256))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value8, value9 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n // struct PaycrestSettingManager.Institution\n function abi_decode_t_struct$_Institution_$3624_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x40) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x40)\n\n {\n // code\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n {\n // name\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x40))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x40) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_struct$_Institution_$3624_memory_ptr(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_uint96_to_t_uint96(value, pos) {\n mstore(pos, cleanup_t_uint96(value))\n }\n\n function abi_encode_t_bool_to_t_bool(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n // struct IPaycrest.Order -> struct IPaycrest.Order\n function abi_encode_t_struct$_Order_$3950_memory_ptr_to_t_struct$_Order_$3950_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x0120)\n\n {\n // seller\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // token\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // senderFeeRecipient\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x40))\n }\n\n {\n // senderFee\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x60))\n }\n\n {\n // rate\n\n let memberValue0 := mload(add(value, 0x80))\n abi_encode_t_uint96_to_t_uint96(memberValue0, add(pos, 0x80))\n }\n\n {\n // isFulfilled\n\n let memberValue0 := mload(add(value, 0xa0))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0xa0))\n }\n\n {\n // refundAddress\n\n let memberValue0 := mload(add(value, 0xc0))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0xc0))\n }\n\n {\n // currentBPS\n\n let memberValue0 := mload(add(value, 0xe0))\n abi_encode_t_uint96_to_t_uint96(memberValue0, add(pos, 0xe0))\n }\n\n {\n // amount\n\n let memberValue0 := mload(add(value, 0x0100))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x0100))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_Order_$3950_memory_ptr__to_t_struct$_Order_$3950_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 288)\n\n abi_encode_t_struct$_Order_$3950_memory_ptr_to_t_struct$_Order_$3950_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n // struct PaycrestSettingManager.InstitutionByCode -> struct PaycrestSettingManager.InstitutionByCode\n function abi_encode_t_struct$_InstitutionByCode_$3629_memory_ptr_to_t_struct$_InstitutionByCode_$3629_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // name\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x00))\n }\n\n {\n // currency\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_InstitutionByCode_$3629_memory_ptr__to_t_struct$_InstitutionByCode_$3629_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_InstitutionByCode_$3629_memory_ptr_to_t_struct$_InstitutionByCode_$3629_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_addresst_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint128(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff)\n }\n\n function abi_encode_t_uint128_to_t_uint128_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint128(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint128_t_uint128_t_uint256__to_t_uint128_t_uint128_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_uint128(value) {\n if iszero(eq(value, cleanup_t_uint128(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint128(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint128(value)\n }\n\n function abi_decode_tuple_t_uint128t_uint128(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243(memPtr) {\n\n mstore(add(memPtr, 0), \"OnlyAggregator\")\n\n }\n\n function abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5(memPtr) {\n\n mstore(add(memPtr, 0), \"OrderFulfilled\")\n\n }\n\n function abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint96(x, y) -> diff {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n diff := sub(x, y)\n\n if gt(diff, 0xffffffffffffffffffffffff) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint64_to_t_uint96(value) -> converted {\n converted := cleanup_t_uint96(identity(cleanup_t_uint64(value)))\n }\n\n function abi_encode_t_uint64_to_t_uint96_fromStack(value, pos) {\n mstore(pos, convert_t_uint64_to_t_uint96(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint64_to_t_uint96_fromStack(value2, add(headStart, 64))\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4(memPtr) {\n\n mstore(add(memPtr, 0), \"SenderFeeTooHigh\")\n\n }\n\n function abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function convert_t_uint96_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint96(value)))\n }\n\n function abi_encode_t_uint96_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint96_to_t_uint256(value))\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // string -> string\n function abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint96_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(value3, value4, tail)\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(memPtr) {\n\n mstore(add(memPtr, 0), \"Paycrest: zero address\")\n\n }\n\n function abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is alrea\")\n\n mstore(add(memPtr, 32), \"dy initialized\")\n\n }\n\n function abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function convert_t_rational_1_by_1_to_t_uint8(value) -> converted {\n converted := cleanup_t_uint8(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint8(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_bytes_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len) {\n\n let newLen := array_length_t_bytes_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1(memPtr) {\n\n mstore(add(memPtr, 0), \"TokenNotSupported\")\n\n }\n\n function abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2(memPtr) {\n\n mstore(add(memPtr, 0), \"AmountIsZero\")\n\n }\n\n function abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 12)\n store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7(memPtr) {\n\n mstore(add(memPtr, 0), \"ThrowZeroAddress\")\n\n }\n\n function abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5(memPtr) {\n\n mstore(add(memPtr, 0), \"InvalidInstitutionCode\")\n\n }\n\n function abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is not i\")\n\n mstore(add(memPtr, 32), \"nitializing\")\n\n }\n\n function abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063d8e8de341161007c578063d8e8de341461034f578063d9caed121461037f578063e4683a791461039b578063e8d6e0de146103cb578063f2fde38b146103e9578063f5326b191461040557610137565b80638da5cb5b146102bd57806399e3c0b4146102db578063b810c636146102f7578063c4d66de814610317578063cb79455b1461033357610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb1461027157806387490d861461028d57610137565b8063026213381461013c578063137764fb1461016c5780632654ec7e1461019d57806332200882146101cd5780633ad59dbc146101e9575b600080fd5b61015660048036038101906101519190612780565b610421565b604051610163919061289a565b60405180910390f35b610186600480360381019061018191906129f7565b61055f565b604051610194929190612ad7565b60405180910390f35b6101b760048036038101906101b29190612bd0565b61096a565b6040516101c49190612cbb565b60405180910390f35b6101e760048036038101906101e29190612e7a565b610e42565b005b6101f1610f56565b6040516101fe9190612f55565b60405180910390f35b61020f610fe8565b005b61022b60048036038101906102269190612f77565b610ffc565b6040516102389190612fb3565b60405180910390f35b61025b60048036038101906102569190612780565b611052565b60405161026891906130c1565b60405180910390f35b61028b600480360381019061028691906130dd565b611283565b005b6102a760048036038101906102a29190612780565b6113d0565b6040516102b4919061314c565b60405180910390f35b6102c5611411565b6040516102d29190613167565b60405180910390f35b6102f560048036038101906102f09190613182565b61143b565b005b6102ff6115f0565b60405161030e9392919061320f565b60405180910390f35b610331600480360381019061032c9190612f77565b611641565b005b61034d6004803603810190610348919061329c565b611858565b005b61036960048036038101906103649190612f77565b6118af565b6040516103769190612fb3565b60405180910390f35b610399600480360381019061039491906132e9565b611905565b005b6103b560048036038101906103b0919061333c565b611991565b6040516103c29190612fb3565b60405180910390f35b6103d3611c3e565b6040516103e09190613167565b60405180910390f35b61040360048036038101906103fe9190612f77565b611c68565b005b61041f600480360381019061041a91906133a8565b611ceb565b005b60606000609e6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049e57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610458565b50505050905060008151905060008167ffffffffffffffff8111156104c6576104c5612ce7565b5b6040519080825280602002602001820160405280156104ff57816020015b6104ec612613565b8152602001906001900390816104e45790505b50905060005b82811015610553578381815181106105205761051f6133e8565b5b602002602001015182828151811061053b5761053a6133e8565b5b60200260200101819052508080600101915050610505565b50809350505050919050565b600080606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e990613474565b60405180910390fd5b60a060008a8152602001908152602001600020600401600c9054906101000a900460ff1615610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d906134e0565b60405180910390fd5b600060a060008b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff1660a060008c815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff166106d8919061352f565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600061071d8b8767ffffffffffffffff1687611da2565b9050600060a060008d815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036107bc57600160a060008d8152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a060008d81526020019081526020016000206003015411156107bb576107ba8b611f3d565b5b5b60008160000151111561086f578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b815260040161082a92919061356f565b6020604051808303816000875af1158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d91906135ad565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b81526004016108ae92919061356f565b6020604051808303816000875af11580156108cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f191906135ad565b506109028989848460400151612091565b8673ffffffffffffffffffffffffffffffffffffffff168b7ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268e8d8a60405161094d93929190613615565b60405180910390a38a829350935050509850989650505050505050565b60006109798b8b86898d6121db565b606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168b6109b8919061364c565b6109c291906136bd565b851115610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb9061373a565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610a419392919061375a565b6020604051808303816000875af1158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8491906135ad565b5060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610ad590613791565b91905055503360a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610b2c92919061356f565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b81525060a0600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610e2c959493929190613846565b60405180910390a49a9950505050505050505050565b610e4a6123ea565b60008151905060005b81811015610f5057609e6000858152602001908152602001600020838281518110610e8157610e806133e8565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610ee657610ee56133e8565b5b602002602001015160200151815260200185815250609f6000858481518110610f1257610f116133e8565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610e53565b50505050565b606060698054610f65906138c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f91906138c3565b8015610fde5780601f10610fb357610100808354040283529160200191610fde565b820191906000526020600020905b815481529060010190602001808311610fc157829003601f168201915b5050505050905090565b610ff06123ea565b610ffa6000612468565b565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61105a612633565b60a06000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b61128b6123ea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613940565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113635780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113cc5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113d86126f5565b609f6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114436123ea565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990613940565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036115315780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115b05780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516115e393929190613960565b60405180910390a1505050565b6000806000606660009054906101000a90046fffffffffffffffffffffffffffffffff16606660109054906101000a90046fffffffffffffffffffffffffffffffff16606554925092509250909192565b60008060019054906101000a900460ff161590508080156116725750600160008054906101000a900460ff1660ff16105b8061169f57506116813061252e565b15801561169e5750600160008054906101000a900460ff1660ff16145b5b6116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590613a09565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561171b576001600060016101000a81548160ff0219169083151502179055505b6001609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506101f4606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506117fb612551565b80156118545760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161184b9190613a71565b60405180910390a15b5050565b6118606123ea565b818160699182611871929190613c39565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516118a3929190613d36565b60405180910390a15050565b6000609d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61190d6123ea565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161194892919061356f565b6020604051808303816000875af1158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b91906135ad565b50505050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90613474565b60405180910390fd5b60a06000848152602001908152602001600020600401600c9054906101000a900460ff1615611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e906134e0565b60405180910390fd5b600160a06000858152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a0600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60a0600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660a06000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611bb992919061356f565b6020604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc91906135ad565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611c2c9190612cbb565b60405180910390a26001905092915050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c706123ea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613dcc565b60405180910390fd5b611ce881612468565b50565b611cf36123ea565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051611d96929190613dec565b60405180910390a15050565b611daa612715565b600060a0600086815260200190815260200160002060060154905060a060008681526020019081526020016000206003015481611de79190613e15565b9050606554846bffffffffffffffffffffffff1682611e06919061364c565b611e1091906136bd565b826020018181525050606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360200151611e5c919061364c565b611e6691906136bd565b82600001818152505081600001518260200151611e839190613e15565b826020018181525050606554606660109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360000151611ecf919061364c565b611ed991906136bd565b826040018181525050600082604001518360000151611ef89190613e15565b90508315611f29578083602001818151611f129190613e49565b915081815250506000836000018181525050611f34565b808360000181815250505b50509392505050565b600060a0600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060a0600084815260200190815260200160002060030154905060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161200492919061356f565b6020604051808303816000875af1158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906135ad565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b6000848490509050600081836120a791906136bd565b905060005b828110156121d2578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8888848181106120e3576120e26133e8565b5b90506020020160208101906120f89190612f77565b846040518363ffffffff1660e01b815260040161211692919061356f565b6020604051808303816000875af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215991906135ad565b508187878381811061216e5761216d6133e8565b5b90506020020160208101906121839190612f77565b73ffffffffffffffffffffffffffffffffffffffff167f61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c260405160405180910390a380806001019150506120ac565b50505050505050565b609c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225e90613ec9565b60405180910390fd5b600084116122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190613f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090613fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f90613fa1565b60405180910390fd5b6000801b609f600083815260200190815260200160002060000154036123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123da9061400d565b60405180910390fd5b5050505050565b6123f26125aa565b73ffffffffffffffffffffffffffffffffffffffff16612410611411565b73ffffffffffffffffffffffffffffffffffffffff1614612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614079565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166125a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125979061410b565b60405180910390fd5b6125a86125b2565b565b600033905090565b600060019054906101000a900460ff16612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f89061410b565b60405180910390fd5b61261161260c6125aa565b612468565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b60405180606001604052806000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61275d8161274a565b811461276857600080fd5b50565b60008135905061277a81612754565b92915050565b60006020828403121561279657612795612740565b5b60006127a48482850161276b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6127e28161274a565b82525050565b6040820160008201516127fe60008501826127d9565b50602082015161281160208501826127d9565b50505050565b600061282383836127e8565b60408301905092915050565b6000602082019050919050565b6000612847826127ad565b61285181856127b8565b935061285c836127c9565b8060005b8381101561288d5781516128748882612817565b975061287f8361282f565b925050600181019050612860565b5085935050505092915050565b600060208201905081810360008301526128b4818461283c565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126128e1576128e06128bc565b5b8235905067ffffffffffffffff8111156128fe576128fd6128c1565b5b60208301915083602082028301111561291a576129196128c6565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061294c82612921565b9050919050565b61295c81612941565b811461296757600080fd5b50565b60008135905061297981612953565b92915050565b600067ffffffffffffffff82169050919050565b61299c8161297f565b81146129a757600080fd5b50565b6000813590506129b981612993565b92915050565b60008115159050919050565b6129d4816129bf565b81146129df57600080fd5b50565b6000813590506129f1816129cb565b92915050565b60008060008060008060008060e0898b031215612a1757612a16612740565b5b6000612a258b828c0161276b565b9850506020612a368b828c0161276b565b9750506040612a478b828c0161276b565b965050606089013567ffffffffffffffff811115612a6857612a67612745565b5b612a748b828c016128cb565b95509550506080612a878b828c0161296a565b93505060a0612a988b828c016129aa565b92505060c0612aa98b828c016129e2565b9150509295985092959890939650565b612ac28161274a565b82525050565b612ad181612941565b82525050565b6000604082019050612aec6000830185612ab9565b612af96020830184612ac8565b9392505050565b6000819050919050565b612b1381612b00565b8114612b1e57600080fd5b50565b600081359050612b3081612b0a565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612b5781612b36565b8114612b6257600080fd5b50565b600081359050612b7481612b4e565b92915050565b60008083601f840112612b9057612b8f6128bc565b5b8235905067ffffffffffffffff811115612bad57612bac6128c1565b5b602083019150836001820283011115612bc957612bc86128c6565b5b9250929050565b6000806000806000806000806000806101208b8d031215612bf457612bf3612740565b5b6000612c028d828e0161296a565b9a50506020612c138d828e01612b21565b9950506040612c248d828e0161276b565b9850506060612c358d828e0161276b565b9750506080612c468d828e01612b65565b96505060a0612c578d828e0161296a565b95505060c0612c688d828e01612b21565b94505060e0612c798d828e0161296a565b9350506101008b013567ffffffffffffffff811115612c9b57612c9a612745565b5b612ca78d828e01612b7a565b92509250509295989b9194979a5092959850565b6000602082019050612cd06000830184612ab9565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d1f82612cd6565b810181811067ffffffffffffffff82111715612d3e57612d3d612ce7565b5b80604052505050565b6000612d51612736565b9050612d5d8282612d16565b919050565b600067ffffffffffffffff821115612d7d57612d7c612ce7565b5b602082029050602081019050919050565b600080fd5b600060408284031215612da957612da8612d8e565b5b612db36040612d47565b90506000612dc38482850161276b565b6000830152506020612dd78482850161276b565b60208301525092915050565b6000612df6612df184612d62565b612d47565b90508083825260208201905060408402830185811115612e1957612e186128c6565b5b835b81811015612e425780612e2e8882612d93565b845260208401935050604081019050612e1b565b5050509392505050565b600082601f830112612e6157612e606128bc565b5b8135612e71848260208601612de3565b91505092915050565b60008060408385031215612e9157612e90612740565b5b6000612e9f8582860161276b565b925050602083013567ffffffffffffffff811115612ec057612ebf612745565b5b612ecc85828601612e4c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f10578082015181840152602081019050612ef5565b60008484015250505050565b6000612f2782612ed6565b612f318185612ee1565b9350612f41818560208601612ef2565b612f4a81612cd6565b840191505092915050565b60006020820190508181036000830152612f6f8184612f1c565b905092915050565b600060208284031215612f8d57612f8c612740565b5b6000612f9b8482850161296a565b91505092915050565b612fad816129bf565b82525050565b6000602082019050612fc86000830184612fa4565b92915050565b612fd781612941565b82525050565b612fe681612b00565b82525050565b612ff581612b36565b82525050565b613004816129bf565b82525050565b610120820160008201516130216000850182612fce565b5060208201516130346020850182612fce565b5060408201516130476040850182612fce565b50606082015161305a6060850182612fdd565b50608082015161306d6080850182612fec565b5060a082015161308060a0850182612ffb565b5060c082015161309360c0850182612fce565b5060e08201516130a660e0850182612fec565b506101008201516130bb610100850182612fdd565b50505050565b6000610120820190506130d7600083018461300a565b92915050565b600080604083850312156130f4576130f3612740565b5b60006131028582860161276b565b92505060206131138582860161296a565b9150509250929050565b60408201600082015161313360008501826127d9565b50602082015161314660208501826127d9565b50505050565b6000604082019050613161600083018461311d565b92915050565b600060208201905061317c6000830184612ac8565b92915050565b60008060006060848603121561319b5761319a612740565b5b60006131a98682870161276b565b93505060206131ba8682870161296a565b92505060406131cb868287016129e2565b9150509250925092565b60006fffffffffffffffffffffffffffffffff82169050919050565b6131fa816131d5565b82525050565b61320981612b00565b82525050565b600060608201905061322460008301866131f1565b61323160208301856131f1565b61323e6040830184613200565b949350505050565b60008083601f84011261325c5761325b6128bc565b5b8235905067ffffffffffffffff811115613279576132786128c1565b5b602083019150836001820283011115613295576132946128c6565b5b9250929050565b600080602083850312156132b3576132b2612740565b5b600083013567ffffffffffffffff8111156132d1576132d0612745565b5b6132dd85828601613246565b92509250509250929050565b60008060006060848603121561330257613301612740565b5b60006133108682870161296a565b93505060206133218682870161296a565b925050604061333286828701612b21565b9150509250925092565b6000806040838503121561335357613352612740565b5b60006133618582860161276b565b92505060206133728582860161276b565b9150509250929050565b613385816131d5565b811461339057600080fd5b50565b6000813590506133a28161337c565b92915050565b600080604083850312156133bf576133be612740565b5b60006133cd85828601613393565b92505060206133de85828601613393565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b600061345e600e83613417565b915061346982613428565b602082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b60006134ca600e83613417565b91506134d582613494565b602082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353a82612b36565b915061354583612b36565b925082820390506bffffffffffffffffffffffff81111561356957613568613500565b5b92915050565b60006040820190506135846000830185612ac8565b6135916020830184613200565b9392505050565b6000815190506135a7816129cb565b92915050565b6000602082840312156135c3576135c2612740565b5b60006135d184828501613598565b91505092915050565b6000819050919050565b60006135ff6135fa6135f58461297f565b6135da565b612b36565b9050919050565b61360f816135e4565b82525050565b600060608201905061362a6000830186612ab9565b6136376020830185612ab9565b6136446040830184613606565b949350505050565b600061365782612b00565b915061366283612b00565b925082820261367081612b00565b9150828204841483151761368757613686613500565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136c882612b00565b91506136d383612b00565b9250826136e3576136e261368e565b5b828204905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b6000613724601083613417565b915061372f826136ee565b602082019050919050565b6000602082019050818103600083015261375381613717565b9050919050565b600060608201905061376f6000830186612ac8565b61377c6020830185612ac8565b6137896040830184613200565b949350505050565b600061379c82612b00565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137ce576137cd613500565b5b600182019050919050565b60006137f46137ef6137ea84612b36565b6135da565b612b00565b9050919050565b613804816137d9565b82525050565b82818337600083830152505050565b60006138258385613417565b935061383283858461380a565b61383b83612cd6565b840190509392505050565b600060808201905061385b60008301886137fb565b6138686020830187612ab9565b6138756040830186612ab9565b8181036060830152613888818486613819565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138db57607f821691505b6020821081036138ee576138ed613894565b5b50919050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b600061392a601683613417565b9150613935826138f4565b602082019050919050565b600060208201905081810360008301526139598161391d565b9050919050565b60006060820190506139756000830186612ab9565b6139826020830185612ac8565b61398f6040830184612fa4565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006139f3602e83613417565b91506139fe82613997565b604082019050919050565b60006020820190508181036000830152613a22816139e6565b9050919050565b6000819050919050565b600060ff82169050919050565b6000613a5b613a56613a5184613a29565b6135da565b613a33565b9050919050565b613a6b81613a40565b82525050565b6000602082019050613a866000830184613a62565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613af97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613abc565b613b038683613abc565b95508019841693508086168417925050509392505050565b6000613b36613b31613b2c84612b00565b6135da565b612b00565b9050919050565b6000819050919050565b613b5083613b1b565b613b64613b5c82613b3d565b848454613ac9565b825550505050565b600090565b613b79613b6c565b613b84818484613b47565b505050565b5b81811015613ba857613b9d600082613b71565b600181019050613b8a565b5050565b601f821115613bed57613bbe81613a97565b613bc784613aac565b81016020851015613bd6578190505b613bea613be285613aac565b830182613b89565b50505b505050565b600082821c905092915050565b6000613c1060001984600802613bf2565b1980831691505092915050565b6000613c298383613bff565b9150826002028217905092915050565b613c438383613a8c565b67ffffffffffffffff811115613c5c57613c5b612ce7565b5b613c6682546138c3565b613c71828285613bac565b6000601f831160018114613ca05760008415613c8e578287013590505b613c988582613c1d565b865550613d00565b601f198416613cae86613a97565b60005b82811015613cd657848901358255600182019150602085019450602081019050613cb1565b86831015613cf35784890135613cef601f891682613bff565b8355505b6001600288020188555050505b50505050505050565b6000613d158385612ee1565b9350613d2283858461380a565b613d2b83612cd6565b840190509392505050565b60006020820190508181036000830152613d51818486613d09565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613db6602683613417565b9150613dc182613d5a565b604082019050919050565b60006020820190508181036000830152613de581613da9565b9050919050565b6000604082019050613e0160008301856131f1565b613e0e60208301846131f1565b9392505050565b6000613e2082612b00565b9150613e2b83612b00565b9250828203905081811115613e4357613e42613500565b5b92915050565b6000613e5482612b00565b9150613e5f83612b00565b9250828201905080821115613e7757613e76613500565b5b92915050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613eb3601183613417565b9150613ebe82613e7d565b602082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613f1f600c83613417565b9150613f2a82613ee9565b602082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613f8b601083613417565b9150613f9682613f55565b602082019050919050565b60006020820190508181036000830152613fba81613f7e565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613ff7601683613417565b915061400282613fc1565b602082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614063602083613417565b915061406e8261402d565b602082019050919050565b6000602082019050818103600083015261409281614056565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006140f5602b83613417565b915061410082614099565b604082019050919050565b60006020820190508181036000830152614124816140e8565b905091905056fea26469706673582212208b3d52873e081656e3e1c7f7db950185305cc50b26459ed56e4b7d69aa27310664736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xD8E8DE34 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD8E8DE34 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xE4683A79 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0xE8D6E0DE EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0xF5326B19 EQ PUSH2 0x405 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xB810C636 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x333 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x75151B63 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x768C6EC0 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x87490D86 EQ PUSH2 0x28D JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x2621338 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x137764FB EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x2654EC7E EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x32200882 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x3AD59DBC EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x2780 JUMP JUMPDEST PUSH2 0x421 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x289A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x29F7 JUMP JUMPDEST PUSH2 0x55F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x194 SWAP3 SWAP2 SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B2 SWAP2 SWAP1 PUSH2 0x2BD0 JUMP JUMPDEST PUSH2 0x96A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x2CBB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E2 SWAP2 SWAP1 PUSH2 0x2E7A JUMP JUMPDEST PUSH2 0xE42 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F1 PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2F55 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH2 0xFE8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH2 0xFFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x2780 JUMP JUMPDEST PUSH2 0x1052 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x30C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x28B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x30DD JUMP JUMPDEST PUSH2 0x1283 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x2780 JUMP JUMPDEST PUSH2 0x13D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B4 SWAP2 SWAP1 PUSH2 0x314C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C5 PUSH2 0x1411 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D2 SWAP2 SWAP1 PUSH2 0x3167 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F0 SWAP2 SWAP1 PUSH2 0x3182 JUMP JUMPDEST PUSH2 0x143B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FF PUSH2 0x15F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x320F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x331 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x32C SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH2 0x1641 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x348 SWAP2 SWAP1 PUSH2 0x329C JUMP JUMPDEST PUSH2 0x1858 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH2 0x18AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x376 SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x399 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x394 SWAP2 SWAP1 PUSH2 0x32E9 JUMP JUMPDEST PUSH2 0x1905 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3B0 SWAP2 SWAP1 PUSH2 0x333C JUMP JUMPDEST PUSH2 0x1991 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3C2 SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D3 PUSH2 0x1C3E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E0 SWAP2 SWAP1 PUSH2 0x3167 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FE SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH2 0x1C68 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41A SWAP2 SWAP1 PUSH2 0x33A8 JUMP JUMPDEST PUSH2 0x1CEB JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x9E PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x49E JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x458 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C5 PUSH2 0x2CE7 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x4EC PUSH2 0x2613 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x4E4 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x520 JUMPI PUSH2 0x51F PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53B JUMPI PUSH2 0x53A PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x505 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E9 SWAP1 PUSH2 0x3474 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x64D SWAP1 PUSH2 0x34E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA0 PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6D8 SWAP2 SWAP1 PUSH2 0x352F JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x71D DUP12 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x1DA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7BC JUMPI PUSH1 0x1 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD GT ISZERO PUSH2 0x7BB JUMPI PUSH2 0x7BA DUP12 PUSH2 0x1F3D JUMP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD GT ISZERO PUSH2 0x86F JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82A SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x849 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x86D SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8AE SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8F1 SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP PUSH2 0x902 DUP10 DUP10 DUP5 DUP5 PUSH1 0x40 ADD MLOAD PUSH2 0x2091 JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH32 0xF26DE978CBAEA68EA699627155A10AD53DF3321B0F95A08264C0CFD6D4C05326 DUP15 DUP14 DUP11 PUSH1 0x40 MLOAD PUSH2 0x94D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3615 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP11 DUP3 SWAP4 POP SWAP4 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x979 DUP12 DUP12 DUP7 DUP10 DUP14 PUSH2 0x21DB JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH2 0x9B8 SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH2 0x9C2 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST DUP6 GT ISZERO PUSH2 0xA04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9FB SWAP1 PUSH2 0x373A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP14 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA41 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x375A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP PUSH1 0xA1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0xAD5 SWAP1 PUSH2 0x3791 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP CALLER PUSH1 0xA1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB2C SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x65 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE POP PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP1 DUP11 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C205F90C01160D42994A0EB521810056D94BB82A1FCB038D7179C4158A1F15B DUP11 DUP14 DUP14 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xE2C SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3846 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE4A PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x9E PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE81 JUMPI PUSH2 0xE80 PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEE6 JUMPI PUSH2 0xEE5 PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF12 JUMPI PUSH2 0xF11 PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xE53 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x69 DUP1 SLOAD PUSH2 0xF65 SWAP1 PUSH2 0x38C3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF91 SWAP1 PUSH2 0x38C3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xFDE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xFB3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFDE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xFC1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFF0 PUSH2 0x23EA JUMP JUMPDEST PUSH2 0xFFA PUSH1 0x0 PUSH2 0x2468 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9C PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x105A PUSH2 0x2633 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x128B PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12F1 SWAP1 PUSH2 0x3940 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x1363 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x13CC JUMPI DUP1 PUSH1 0x68 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x13D8 PUSH2 0x26F5 JUMP JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1443 PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x14B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14A9 SWAP1 PUSH2 0x3940 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x1531 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x15B0 JUMPI DUP1 PUSH1 0x9D PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x15E3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3960 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x66 PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x65 SLOAD SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1672 JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND LT JUMPDEST DUP1 PUSH2 0x169F JUMPI POP PUSH2 0x1681 ADDRESS PUSH2 0x252E JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x169E JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ JUMPDEST JUMPDEST PUSH2 0x16DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16D5 SWAP1 PUSH2 0x3A09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x171B JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x186A0 PUSH1 0x65 DUP2 SWAP1 SSTORE POP PUSH2 0x1388 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1F4 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x17FB PUSH2 0x2551 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1854 JUMPI PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x184B SWAP2 SWAP1 PUSH2 0x3A71 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1860 PUSH2 0x23EA JUMP JUMPDEST DUP2 DUP2 PUSH1 0x69 SWAP2 DUP3 PUSH2 0x1871 SWAP3 SWAP2 SWAP1 PUSH2 0x3C39 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x18A3 SWAP3 SWAP2 SWAP1 PUSH2 0x3D36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9D PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x190D PUSH2 0x23EA JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1948 SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1967 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x198B SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1A23 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A1A SWAP1 PUSH2 0x3474 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1A87 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A7E SWAP1 PUSH2 0x34E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BB9 SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BFC SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP DUP3 PUSH31 0x7C875846B687732A7579C19BB1DADE66CD14E9F4F809565E2B2B5E76C72B4F DUP4 PUSH1 0x40 MLOAD PUSH2 0x1C2C SWAP2 SWAP1 PUSH2 0x2CBB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1C70 PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1CDF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CD6 SWAP1 PUSH2 0x3DCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1CE8 DUP2 PUSH2 0x2468 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1CF3 PUSH2 0x23EA JUMP JUMPDEST DUP2 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xE38926C5806B98A6FD00C5D791A36FBD196537FE48D11C45C9F1D0ACD1EA74DF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1D96 SWAP3 SWAP2 SWAP1 PUSH2 0x3DEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x1DAA PUSH2 0x2715 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH2 0x1DE7 SWAP2 SWAP1 PUSH2 0x3E15 JUMP JUMPDEST SWAP1 POP PUSH1 0x65 SLOAD DUP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1E06 SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH2 0x1E10 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1E5C SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH2 0x1E66 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1E83 SWAP2 SWAP1 PUSH2 0x3E15 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x1ECF SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST PUSH2 0x1ED9 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST DUP3 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x1EF8 SWAP2 SWAP1 PUSH2 0x3E15 JUMP JUMPDEST SWAP1 POP DUP4 ISZERO PUSH2 0x1F29 JUMPI DUP1 DUP4 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x1F12 SWAP2 SWAP1 PUSH2 0x3E49 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP4 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1F34 JUMP JUMPDEST DUP1 DUP4 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2004 SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2023 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2047 SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x96C76D5AEC8A8C11A9C8E02768E3FA309347330D08961E0CF9FD43B349B684C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x20A7 SWAP2 SWAP1 PUSH2 0x36BD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x21D2 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x20E3 JUMPI PUSH2 0x20E2 PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x20F8 SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2116 SWAP3 SWAP2 SWAP1 PUSH2 0x356F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2135 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2159 SWAP2 SWAP1 PUSH2 0x35AD JUMP JUMPDEST POP DUP2 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x216E JUMPI PUSH2 0x216D PUSH2 0x33E8 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2183 SWAP2 SWAP1 PUSH2 0x2F77 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x61DCEB70B8F97239C33A3F9C0D0EFC6C8759C7E9A808F75DD42B3A0F213186C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x20AC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9C PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2267 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x225E SWAP1 PUSH2 0x3EC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x22AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22A1 SWAP1 PUSH2 0x3F35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2319 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2310 SWAP1 PUSH2 0x3FA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2388 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x237F SWAP1 PUSH2 0x3FA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SHL PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SUB PUSH2 0x23E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23DA SWAP1 PUSH2 0x400D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x23F2 PUSH2 0x25AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2410 PUSH2 0x1411 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2466 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x245D SWAP1 PUSH2 0x4079 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x25A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2597 SWAP1 PUSH2 0x410B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x25A8 PUSH2 0x25B2 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2601 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x25F8 SWAP1 PUSH2 0x410B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2611 PUSH2 0x260C PUSH2 0x25AA JUMP JUMPDEST PUSH2 0x2468 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x275D DUP2 PUSH2 0x274A JUMP JUMPDEST DUP2 EQ PUSH2 0x2768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x277A DUP2 PUSH2 0x2754 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2796 JUMPI PUSH2 0x2795 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x27A4 DUP5 DUP3 DUP6 ADD PUSH2 0x276B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x27E2 DUP2 PUSH2 0x274A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x27FE PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x27D9 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2811 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x27D9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2823 DUP4 DUP4 PUSH2 0x27E8 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2847 DUP3 PUSH2 0x27AD JUMP JUMPDEST PUSH2 0x2851 DUP2 DUP6 PUSH2 0x27B8 JUMP JUMPDEST SWAP4 POP PUSH2 0x285C DUP4 PUSH2 0x27C9 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x288D JUMPI DUP2 MLOAD PUSH2 0x2874 DUP9 DUP3 PUSH2 0x2817 JUMP JUMPDEST SWAP8 POP PUSH2 0x287F DUP4 PUSH2 0x282F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2860 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x28B4 DUP2 DUP5 PUSH2 0x283C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x28E1 JUMPI PUSH2 0x28E0 PUSH2 0x28BC JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x28FE JUMPI PUSH2 0x28FD PUSH2 0x28C1 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x291A JUMPI PUSH2 0x2919 PUSH2 0x28C6 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294C DUP3 PUSH2 0x2921 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x295C DUP2 PUSH2 0x2941 JUMP JUMPDEST DUP2 EQ PUSH2 0x2967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2979 DUP2 PUSH2 0x2953 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x299C DUP2 PUSH2 0x297F JUMP JUMPDEST DUP2 EQ PUSH2 0x29A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x29B9 DUP2 PUSH2 0x2993 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x29D4 DUP2 PUSH2 0x29BF JUMP JUMPDEST DUP2 EQ PUSH2 0x29DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x29F1 DUP2 PUSH2 0x29CB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2A17 JUMPI PUSH2 0x2A16 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2A25 DUP12 DUP3 DUP13 ADD PUSH2 0x276B JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x2A36 DUP12 DUP3 DUP13 ADD PUSH2 0x276B JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x2A47 DUP12 DUP3 DUP13 ADD PUSH2 0x276B JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A68 JUMPI PUSH2 0x2A67 PUSH2 0x2745 JUMP JUMPDEST JUMPDEST PUSH2 0x2A74 DUP12 DUP3 DUP13 ADD PUSH2 0x28CB JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x80 PUSH2 0x2A87 DUP12 DUP3 DUP13 ADD PUSH2 0x296A JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x2A98 DUP12 DUP3 DUP13 ADD PUSH2 0x29AA JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x2AA9 DUP12 DUP3 DUP13 ADD PUSH2 0x29E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH2 0x2AC2 DUP2 PUSH2 0x274A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2AD1 DUP2 PUSH2 0x2941 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2AEC PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x2AF9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2AC8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B13 DUP2 PUSH2 0x2B00 JUMP JUMPDEST DUP2 EQ PUSH2 0x2B1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2B30 DUP2 PUSH2 0x2B0A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B57 DUP2 PUSH2 0x2B36 JUMP JUMPDEST DUP2 EQ PUSH2 0x2B62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2B74 DUP2 PUSH2 0x2B4E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2B90 JUMPI PUSH2 0x2B8F PUSH2 0x28BC JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BAD JUMPI PUSH2 0x2BAC PUSH2 0x28C1 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2BC9 JUMPI PUSH2 0x2BC8 PUSH2 0x28C6 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x2BF4 JUMPI PUSH2 0x2BF3 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2C02 DUP14 DUP3 DUP15 ADD PUSH2 0x296A JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x2C13 DUP14 DUP3 DUP15 ADD PUSH2 0x2B21 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x2C24 DUP14 DUP3 DUP15 ADD PUSH2 0x276B JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x2C35 DUP14 DUP3 DUP15 ADD PUSH2 0x276B JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x2C46 DUP14 DUP3 DUP15 ADD PUSH2 0x2B65 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x2C57 DUP14 DUP3 DUP15 ADD PUSH2 0x296A JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x2C68 DUP14 DUP3 DUP15 ADD PUSH2 0x2B21 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x2C79 DUP14 DUP3 DUP15 ADD PUSH2 0x296A JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C9B JUMPI PUSH2 0x2C9A PUSH2 0x2745 JUMP JUMPDEST JUMPDEST PUSH2 0x2CA7 DUP14 DUP3 DUP15 ADD PUSH2 0x2B7A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2CD0 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2AB9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2D1F DUP3 PUSH2 0x2CD6 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2D3E JUMPI PUSH2 0x2D3D PUSH2 0x2CE7 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D51 PUSH2 0x2736 JUMP JUMPDEST SWAP1 POP PUSH2 0x2D5D DUP3 DUP3 PUSH2 0x2D16 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2D7D JUMPI PUSH2 0x2D7C PUSH2 0x2CE7 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DA9 JUMPI PUSH2 0x2DA8 PUSH2 0x2D8E JUMP JUMPDEST JUMPDEST PUSH2 0x2DB3 PUSH1 0x40 PUSH2 0x2D47 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2DC3 DUP5 DUP3 DUP6 ADD PUSH2 0x276B JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2DD7 DUP5 DUP3 DUP6 ADD PUSH2 0x276B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DF6 PUSH2 0x2DF1 DUP5 PUSH2 0x2D62 JUMP JUMPDEST PUSH2 0x2D47 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2E19 JUMPI PUSH2 0x2E18 PUSH2 0x28C6 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2E42 JUMPI DUP1 PUSH2 0x2E2E DUP9 DUP3 PUSH2 0x2D93 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x2E1B JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E61 JUMPI PUSH2 0x2E60 PUSH2 0x28BC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2E71 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2DE3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E91 JUMPI PUSH2 0x2E90 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E9F DUP6 DUP3 DUP7 ADD PUSH2 0x276B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2EC0 JUMPI PUSH2 0x2EBF PUSH2 0x2745 JUMP JUMPDEST JUMPDEST PUSH2 0x2ECC DUP6 DUP3 DUP7 ADD PUSH2 0x2E4C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F10 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2EF5 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F27 DUP3 PUSH2 0x2ED6 JUMP JUMPDEST PUSH2 0x2F31 DUP2 DUP6 PUSH2 0x2EE1 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F41 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2EF2 JUMP JUMPDEST PUSH2 0x2F4A DUP2 PUSH2 0x2CD6 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2F6F DUP2 DUP5 PUSH2 0x2F1C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F8D JUMPI PUSH2 0x2F8C PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F9B DUP5 DUP3 DUP6 ADD PUSH2 0x296A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2FAD DUP2 PUSH2 0x29BF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2FC8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2FA4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2FD7 DUP2 PUSH2 0x2941 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2FE6 DUP2 PUSH2 0x2B00 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2FF5 DUP2 PUSH2 0x2B36 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3004 DUP2 PUSH2 0x29BF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x120 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x3021 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2FCE JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3034 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2FCE JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x3047 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2FCE JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x305A PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2FDD JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x306D PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2FEC JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x3080 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2FFB JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x3093 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2FCE JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x30A6 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2FEC JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x30BB PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2FDD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 ADD SWAP1 POP PUSH2 0x30D7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x300A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x30F4 JUMPI PUSH2 0x30F3 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3102 DUP6 DUP3 DUP7 ADD PUSH2 0x276B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3113 DUP6 DUP3 DUP7 ADD PUSH2 0x296A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x3133 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x27D9 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3146 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x27D9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3161 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x311D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x317C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2AC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x319B JUMPI PUSH2 0x319A PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x31A9 DUP7 DUP3 DUP8 ADD PUSH2 0x276B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x31BA DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x31CB DUP7 DUP3 DUP8 ADD PUSH2 0x29E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x31FA DUP2 PUSH2 0x31D5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3209 DUP2 PUSH2 0x2B00 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3224 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x31F1 JUMP JUMPDEST PUSH2 0x3231 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x31F1 JUMP JUMPDEST PUSH2 0x323E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3200 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x325C JUMPI PUSH2 0x325B PUSH2 0x28BC JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3279 JUMPI PUSH2 0x3278 PUSH2 0x28C1 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3295 JUMPI PUSH2 0x3294 PUSH2 0x28C6 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32B3 JUMPI PUSH2 0x32B2 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x32D1 JUMPI PUSH2 0x32D0 PUSH2 0x2745 JUMP JUMPDEST JUMPDEST PUSH2 0x32DD DUP6 DUP3 DUP7 ADD PUSH2 0x3246 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3302 JUMPI PUSH2 0x3301 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3310 DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3321 DUP7 DUP3 DUP8 ADD PUSH2 0x296A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3332 DUP7 DUP3 DUP8 ADD PUSH2 0x2B21 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3353 JUMPI PUSH2 0x3352 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3361 DUP6 DUP3 DUP7 ADD PUSH2 0x276B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3372 DUP6 DUP3 DUP7 ADD PUSH2 0x276B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x3385 DUP2 PUSH2 0x31D5 JUMP JUMPDEST DUP2 EQ PUSH2 0x3390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x33A2 DUP2 PUSH2 0x337C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x33BF JUMPI PUSH2 0x33BE PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x33CD DUP6 DUP3 DUP7 ADD PUSH2 0x3393 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x33DE DUP6 DUP3 DUP7 ADD PUSH2 0x3393 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F6E6C7941676772656761746F72000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x345E PUSH1 0xE DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3469 DUP3 PUSH2 0x3428 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x348D DUP2 PUSH2 0x3451 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F7264657246756C66696C6C6564000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34CA PUSH1 0xE DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x34D5 DUP3 PUSH2 0x3494 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34F9 DUP2 PUSH2 0x34BD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x353A DUP3 PUSH2 0x2B36 JUMP JUMPDEST SWAP2 POP PUSH2 0x3545 DUP4 PUSH2 0x2B36 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3569 JUMPI PUSH2 0x3568 PUSH2 0x3500 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3584 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2AC8 JUMP JUMPDEST PUSH2 0x3591 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3200 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x35A7 DUP2 PUSH2 0x29CB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35C3 JUMPI PUSH2 0x35C2 PUSH2 0x2740 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x35D1 DUP5 DUP3 DUP6 ADD PUSH2 0x3598 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35FF PUSH2 0x35FA PUSH2 0x35F5 DUP5 PUSH2 0x297F JUMP JUMPDEST PUSH2 0x35DA JUMP JUMPDEST PUSH2 0x2B36 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x360F DUP2 PUSH2 0x35E4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x362A PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x3637 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x3644 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3606 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3657 DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH2 0x3662 DUP4 PUSH2 0x2B00 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3670 DUP2 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x3687 JUMPI PUSH2 0x3686 PUSH2 0x3500 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x36C8 DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH2 0x36D3 DUP4 PUSH2 0x2B00 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x36E3 JUMPI PUSH2 0x36E2 PUSH2 0x368E JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x53656E646572466565546F6F4869676800000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3724 PUSH1 0x10 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x372F DUP3 PUSH2 0x36EE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3753 DUP2 PUSH2 0x3717 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x376F PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2AC8 JUMP JUMPDEST PUSH2 0x377C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2AC8 JUMP JUMPDEST PUSH2 0x3789 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3200 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379C DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x37CE JUMPI PUSH2 0x37CD PUSH2 0x3500 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37F4 PUSH2 0x37EF PUSH2 0x37EA DUP5 PUSH2 0x2B36 JUMP JUMPDEST PUSH2 0x35DA JUMP JUMPDEST PUSH2 0x2B00 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3804 DUP2 PUSH2 0x37D9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3825 DUP4 DUP6 PUSH2 0x3417 JUMP JUMPDEST SWAP4 POP PUSH2 0x3832 DUP4 DUP6 DUP5 PUSH2 0x380A JUMP JUMPDEST PUSH2 0x383B DUP4 PUSH2 0x2CD6 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x385B PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x37FB JUMP JUMPDEST PUSH2 0x3868 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x3875 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2AB9 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3888 DUP2 DUP5 DUP7 PUSH2 0x3819 JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x38DB JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x38EE JUMPI PUSH2 0x38ED PUSH2 0x3894 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x392A PUSH1 0x16 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3935 DUP3 PUSH2 0x38F4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3959 DUP2 PUSH2 0x391D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3975 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2AB9 JUMP JUMPDEST PUSH2 0x3982 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2AC8 JUMP JUMPDEST PUSH2 0x398F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2FA4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39F3 PUSH1 0x2E DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x39FE DUP3 PUSH2 0x3997 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A22 DUP2 PUSH2 0x39E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A5B PUSH2 0x3A56 PUSH2 0x3A51 DUP5 PUSH2 0x3A29 JUMP JUMPDEST PUSH2 0x35DA JUMP JUMPDEST PUSH2 0x3A33 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A6B DUP2 PUSH2 0x3A40 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3A86 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3A62 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x3AF9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x3ABC JUMP JUMPDEST PUSH2 0x3B03 DUP7 DUP4 PUSH2 0x3ABC JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B36 PUSH2 0x3B31 PUSH2 0x3B2C DUP5 PUSH2 0x2B00 JUMP JUMPDEST PUSH2 0x35DA JUMP JUMPDEST PUSH2 0x2B00 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B50 DUP4 PUSH2 0x3B1B JUMP JUMPDEST PUSH2 0x3B64 PUSH2 0x3B5C DUP3 PUSH2 0x3B3D JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x3AC9 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x3B79 PUSH2 0x3B6C JUMP JUMPDEST PUSH2 0x3B84 DUP2 DUP5 DUP5 PUSH2 0x3B47 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3BA8 JUMPI PUSH2 0x3B9D PUSH1 0x0 DUP3 PUSH2 0x3B71 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x3B8A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x3BED JUMPI PUSH2 0x3BBE DUP2 PUSH2 0x3A97 JUMP JUMPDEST PUSH2 0x3BC7 DUP5 PUSH2 0x3AAC JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x3BD6 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x3BEA PUSH2 0x3BE2 DUP6 PUSH2 0x3AAC JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x3B89 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C10 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x3BF2 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C29 DUP4 DUP4 PUSH2 0x3BFF JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3C43 DUP4 DUP4 PUSH2 0x3A8C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C5C JUMPI PUSH2 0x3C5B PUSH2 0x2CE7 JUMP JUMPDEST JUMPDEST PUSH2 0x3C66 DUP3 SLOAD PUSH2 0x38C3 JUMP JUMPDEST PUSH2 0x3C71 DUP3 DUP3 DUP6 PUSH2 0x3BAC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3CA0 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x3C8E JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x3C98 DUP6 DUP3 PUSH2 0x3C1D JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x3D00 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x3CAE DUP7 PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3CD6 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3CB1 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x3CF3 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x3CEF PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x3BFF JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D15 DUP4 DUP6 PUSH2 0x2EE1 JUMP JUMPDEST SWAP4 POP PUSH2 0x3D22 DUP4 DUP6 DUP5 PUSH2 0x380A JUMP JUMPDEST PUSH2 0x3D2B DUP4 PUSH2 0x2CD6 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D51 DUP2 DUP5 DUP7 PUSH2 0x3D09 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DB6 PUSH1 0x26 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3DC1 DUP3 PUSH2 0x3D5A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DE5 DUP2 PUSH2 0x3DA9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3E01 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x31F1 JUMP JUMPDEST PUSH2 0x3E0E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x31F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E20 DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH2 0x3E2B DUP4 PUSH2 0x2B00 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3E43 JUMPI PUSH2 0x3E42 PUSH2 0x3500 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E54 DUP3 PUSH2 0x2B00 JUMP JUMPDEST SWAP2 POP PUSH2 0x3E5F DUP4 PUSH2 0x2B00 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3E77 JUMPI PUSH2 0x3E76 PUSH2 0x3500 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x546F6B656E4E6F74537570706F72746564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EB3 PUSH1 0x11 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3EBE DUP3 PUSH2 0x3E7D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3EE2 DUP2 PUSH2 0x3EA6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E7449735A65726F0000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F1F PUSH1 0xC DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3F2A DUP3 PUSH2 0x3EE9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3F4E DUP2 PUSH2 0x3F12 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5468726F775A65726F4164647265737300000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8B PUSH1 0x10 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x3F96 DUP3 PUSH2 0x3F55 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3FBA DUP2 PUSH2 0x3F7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C6964496E737469747574696F6E436F646500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FF7 PUSH1 0x16 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x4002 DUP3 PUSH2 0x3FC1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4026 DUP2 PUSH2 0x3FEA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4063 PUSH1 0x20 DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x406E DUP3 PUSH2 0x402D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4092 DUP2 PUSH2 0x4056 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40F5 PUSH1 0x2B DUP4 PUSH2 0x3417 JUMP JUMPDEST SWAP2 POP PUSH2 0x4100 DUP3 PUSH2 0x4099 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4124 DUP2 PUSH2 0x40E8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 RETURNDATASIZE MSTORE DUP8 RETURNDATACOPY ADDMOD AND JUMP 0xE3 0xE1 0xC7 0xF7 0xDB SWAP6 ADD DUP6 ADDRESS 0x5C 0xC5 SIGNEXTEND 0x26 GASLIMIT SWAP15 0xD5 PUSH15 0x4B7D69AA27310664736F6C63430008 SLT STOP CALLER ","sourceMap":"367:10379:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9282:487;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3907:1725;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1487:1608;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1833:500:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10399:96:12;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2064:101:0;;;:::i;:::-;;8933:119:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8762:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2630:263:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9119:157:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1441:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1483:344:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9822:179:12;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;875:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2899:161:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10226:120:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10592:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6535:546;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10061:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2314:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2339:285:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9282:487:12;9357:20;9389:33;9425:21;:31;9447:8;9425:31;;;;;;;;;;;9389:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9466:14;9483:12;:19;9466:36;;9512:27;9560:6;9542:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;9512:55;;9591:9;9586:145;9610:6;9606:1;:10;9586:145;;;9646:12;9659:1;9646:15;;;;;;;;:::i;:::-;;;;;;;;9634:6;9641:1;9634:9;;;;;;;;:::i;:::-;;;;;;;:27;;;;9703:3;;;;;;;9586:145;;;;9756:6;9749:13;;;;;9282:487;;;:::o;3907:1725::-;4184:7;4193;1186:18;;;;;;;;;;;1172:32;;:10;:32;;;1164:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4278:5:::1;:15;4284:8;4278:15;;;;;;;;;;;:27;;;;;;;;;;;;4277:28;4269:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4372:13;4388:5;:15;4394:8;4388:15;;;;;;;;;;;:21;;;;;;;;;;;;4372:37;;4518:14;4488:44;;:5;:15;4494:8;4488:15;;;;;;;;;;;:26;;;:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4674:21;4701:52;4716:8;4726:14;4701:52;;4742:10;4701:14;:52::i;:::-;4672:81;;4796:1;4766:5;:15;4772:8;4766:15;;;;;;;;;;;:26;;;;;;;;;;;;:31;;::::0;4763:296:::1;;4897:4;4867:5;:15;4873:8;4867:15;;;;;;;;;;;:27;;;:34;;;;;;;;;;;;;;;;;;4947:1;4919:5;:15;4925:8;4919:15;;;;;;;;;;;:25;;;:29;4915:134;;;5007:27;5025:8;5007:17;:27::i;:::-;4915:134;4763:296;5106:1;5081:10;:22;;;:26;5077:154;;;5167:5;5160:22;;;5183:12;;;;;;;;;;;5197:10;:22;;;5160:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5077:154;5293:5;5286:22;;;5309:18;5329:10;:34;;;5286:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5411:65;5428:11;;5441:5;5448:10;:27;;;5411:16;:65::i;:::-;5556:18;5514:77;;5537:8;5514:77;5522:13;5547:6;5576:14;5514:77;;;;;;;;:::i;:::-;;;;;;;;5609:8;5619:5;5601:24;;;;;;3907:1725:::0;;;;;;;;;;;:::o;1487:1608::-;1799:15;1862:80;1871:6;1879:7;1888:14;1904:19;1925:16;1862:8;:80::i;:::-;2068:7;;2046:18;;;;;;;;;;;2036:28;;:7;:28;;;;:::i;:::-;2035:40;;;;:::i;:::-;2021:10;:54;;2013:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;2161:6;2154:27;;;2182:10;2202:4;2209:7;2154:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2283:6;:18;2290:10;2283:18;;;;;;;;;;;;;;;;:21;;;;;;;;;:::i;:::-;;;;;;2541:10;2553:6;:18;2560:10;2553:18;;;;;;;;;;;;;;;;2530:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2520:53;;;;;;2510:63;;2630:334;;;;;;;;2658:10;2630:334;;;;;;2689:6;2630:334;;;;;;2729:19;2630:334;;;;;;2773:10;2630:334;;;;2803:5;2630:334;;;;;;2835:5;2630:334;;;;;;2869:14;2630:334;;;;;;2916:7;;2630:334;;;;;;;;2946:7;2630:334;;;2613:5;:14;2619:7;2613:14;;;;;;;;;;;:351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3034:7;3025;3017:6;3009:79;;;3043:5;3050:16;3068:6;3076:11;;3009:79;;;;;;;;;;:::i;:::-;;;;;;;;1487:1608;;;;;;;;;;;;:::o;1833:500:13:-;1334:13:0;:11;:13::i;:::-;1950:14:13::1;1967:12;:19;1950:36;;2001:6;1996:331;2017:6;2013:1;:10;1996:331;;;2041:21;:31;2063:8;2041:31;;;;;;;;;;;2078:12;2091:1;2078:15;;;;;;;;:::i;:::-;;;;;;;;2041:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2160:97;;;;;;;;2202:12;2215:1;2202:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2160:97;;;;2234:8;2160:97;;::::0;2108:27:::1;:49;2136:12;2149:1;2136:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2108:49;;;;;;;;;;;:149;;;;;;;;;;;;;;;;;;;2299:3;;;;;;;1996:331;;;;1939:394;1833:500:::0;;:::o;10399:96:12:-;10446:12;10477:11;10470:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10399:96;:::o;2064:101:0:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;8933:119:12:-;8997:4;9020:17;:25;9038:6;9020:25;;;;;;;;;;;;;;;;;;;;;;;;;9013:32;;8933:119;;;:::o;8762:115::-;8824:12;;:::i;:::-;8855:5;:15;8861:8;8855:15;;;;;;;;;;;8848:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8762:115;;;:::o;2630:263:13:-;1334:13:0;:11;:13::i;:::-;2746:1:13::1;2729:19;;:5;:19;;::::0;2721:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2789:13;:4;:13:::0;2785:39:::1;;2819:5;2804:12;;:20;;;;;;;;;;;;;;;;;;2785:39;2838:20;:4;:20:::0;2834:52:::1;;2881:5;2860:18;;:26;;;;;;;;;;;;;;;;;;2834:52;2630:263:::0;;:::o;9119:157:12:-;9193:24;;:::i;:::-;9236:27;:33;9264:4;9236:33;;;;;;;;;;;9229:40;;;;;;;;;;;;;;;;;;;;;;;;;;;9119:157;;;:::o;1441:85:0:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;1483:344:13:-;1334:13:0;:11;:13::i;:::-;1607:1:13::1;1590:19;;:5;:19;;::::0;1582:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1650:15;:4;:15:::0;1646:54:::1;;1694:6;1667:17;:24;1685:5;1667:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1646:54;1714:19;:4;:19:::0;1710:55:::1;;1759:6;1735:14;:21;1750:5;1735:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1710:55;1781:39;1800:4;1806:5;1813:6;1781:39;;;;;;;;:::i;:::-;;;;;;;;1483:344:::0;;;:::o;9822:179:12:-;9878:7;9896;9914;9945:18;;;;;;;;;;;9965:19;;;;;;;;;;;9986:7;;9938:56;;;;;;9822:179;;;:::o;875:249::-;3279:19:1;3302:13;;;;;;;;;;;3301:14;3279:36;;3347:14;:34;;;;;3380:1;3365:12;;;;;;;;;;:16;;;3347:34;3346:108;;;;3388:44;3426:4;3388:29;:44::i;:::-;3387:45;:66;;;;;3452:1;3436:12;;;;;;;;;;:17;;;3387:66;3346:108;3325:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;3551:1;3536:12;;:16;;;;;;;;;;;;;;;;;;3566:14;3562:65;;;3612:4;3596:13;;:20;;;;;;;;;;;;;;;;;;3562:65;972:4:12::1;945:17;:24;963:5;945:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;999:7;989;:17;;;;1038:4;1017:18;;:25;;;;;;;;;;;;;;;;;;1080:3;1058:19;;:25;;;;;;;;;;;;;;;;;;1101:16;:14;:16::i;:::-;3651:14:1::0;3647:99;;;3697:5;3681:13;;:21;;;;;;;;;;;;;;;;;;3721:14;3733:1;3721:14;;;;;;:::i;:::-;;;;;;;;3647:99;3269:483;875:249:12;:::o;2899:161:13:-;1334:13:0;:11;:13::i;:::-;3003:10:13::1;;2989:11;:24;;;;;;;:::i;:::-;;3028:25;3042:10;;3028:25;;;;;;;:::i;:::-;;;;;;;;2899:161:::0;;:::o;10226:120:12:-;10294:4;10317:14;:22;10332:6;10317:22;;;;;;;;;;;;;;;;;;;;;;;;;10310:29;;10226:120;;;:::o;10592:151::-;1334:13:0;:11;:13::i;:::-;10699:6:12::1;10692:23;;;10716:10;10728:7;10692:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10592:151:::0;;;:::o;6535:546::-;6620:4;1186:18;;;;;;;;;;;1172:32;;:10;:32;;;1164:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;6702:5:::1;:15;6708:8;6702:15;;;;;;;;;;;:27;;;;;;;;;;;;6701:28;6693:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6818:4;6788:5;:15;6794:8;6788:15;;;;;;;;;;;:27;;;:34;;;;;;;;;;;;;;;;;;6861:1;6832:5;:15;6838:8;6832:15;;;;;;;;;;;:26;;;:30;;;;;;;;;;;;;;;;;;6910:5;:15;6916:8;6910:15;;;;;;;;;;;:21;;;;;;;;;;;;6903:38;;;6942:5;:15;6948:8;6942:15;;;;;;;;;;;:29;;;;;;;;;;;;6973:5;:15;6979:8;6973:15;;;;;;;;;;;:22;;;6903:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7036:8;7027:26;7046:6;7027:26;;;;;;:::i;:::-;;;;;;;;7070:4;7063:11;;6535:546:::0;;;;:::o;10061:105::-;10115:7;10141:18;;;;;;;;;;;10134:25;;10061:105;:::o;2314:198:0:-;1334:13;:11;:13::i;:::-;2422:1:::1;2402:22;;:8;:22;;::::0;2394:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:28;2496:8;2477:18;:28::i;:::-;2314:198:::0;:::o;2339:285:13:-;1334:13:0;:11;:13::i;:::-;2476:19:13::1;2455:18;;:40;;;;;;;;;;;;;;;;;;2527:20;2505:19;;:42;;;;;;;;;;;;;;;;;;2562:55;2575:19;2596:20;2562:55;;;;;;;:::i;:::-;;;;;;;;2339:285:::0;;:::o;7087:1428:12:-;7190:21;;:::i;:::-;7284:14;7301:5;:15;7307:8;7301:15;;;;;;;;;;;:22;;;7284:39;;7389:5;:15;7395:8;7389:15;;;;;;;;;;;:25;;;7380:6;:34;;;;:::i;:::-;7371:43;;7558:7;;7540:14;7531:23;;:6;:23;;;;:::i;:::-;7530:35;;;;:::i;:::-;7493:10;:34;;:72;;;;;7718:7;;7696:18;;;;;;;;;;;7659:55;;:10;:34;;;:55;;;;:::i;:::-;7658:67;;;;:::i;:::-;7633:10;:22;;:92;;;;;7898:10;:22;;;7861:10;:34;;;:59;;;;:::i;:::-;7823:10;:34;;:98;;;;;8073:7;;8050:19;;;;;;;;;;;8025:44;;:10;:22;;;:44;;;;:::i;:::-;8024:56;;;;:::i;:::-;7994:10;:27;;:86;;;;;8208:25;8262:10;:27;;;8237:10;:22;;;:52;;;;:::i;:::-;8208:82;;8304:10;8300:209;;;8368:17;8330:10;:34;;:55;;;;;;;:::i;:::-;;;;;;;;8424:1;8399:10;:22;;:26;;;;;8300:209;;;8481:17;8456:10;:22;;:42;;;;;8300:209;7214:1301;;7087:1428;;;;;:::o;6146:343::-;6210:17;6230:5;:15;6236:8;6230:15;;;;;;;;;;;:34;;;;;;;;;;;;6210:54;;6274:12;6289:5;:15;6295:8;6289:15;;;;;;;;;;;:25;;;6274:40;;6362:5;:15;6368:8;6362:15;;;;;;;;;;;:21;;;;;;;;;;;;6355:38;;;6394:9;6405:4;6355:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6477:4;6466:9;6448:34;;;;;;;;;;;;6200:289;;6146:343;:::o;5638:502::-;5758:14;5775:11;;:18;;5758:35;;5803:24;5851:6;5830:18;:27;;;;:::i;:::-;5803:54;;5871:9;5867:267;5890:6;5886:1;:10;5867:267;;;5921:5;5914:22;;;5937:11;;5949:1;5937:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5953:16;5914:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6047:16;6031:11;;6043:1;6031:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6015:49;;;;;;;;;;;;6106:3;;;;;;;5867:267;;;;5748:392;;5638:502;;;;:::o;3101:559::-;3312:17;:25;3330:6;3312:25;;;;;;;;;;;;;;;;;;;;;;;;;3304:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;3387:1;3377:7;:11;3369:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;3449:1;3423:28;;:14;:28;;;3415:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3521:1;3490:33;;:19;:33;;;3482:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;3624:1;3616:10;;3562:27;:45;3590:16;3562:45;;;;;;;;;;;:50;;;:64;3554:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;3101:559;;;;;:::o;1599:130:0:-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;2666:187::-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;1423:320:5:-;1483:4;1735:1;1713:7;:19;;;:23;1706:30;;1423:320;;;:::o;1003:95:0:-;5374:13:1;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1065:26:0::1;:24;:26::i;:::-;1003:95::o:0;850:96:6:-;903:7;929:10;922:17;;850:96;:::o;1104:111:0:-;5374:13:1;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:32:0::1;1195:12;:10;:12::i;:::-;1176:18;:32::i;:::-;1104:111::o:0;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:143::-;1121:6;1155:5;1149:12;1139:22;;1025:143;;;:::o;1174:213::-;1302:11;1336:6;1331:3;1324:19;1376:4;1371:3;1367:14;1352:29;;1174:213;;;;:::o;1393:161::-;1489:4;1512:3;1504:11;;1542:4;1537:3;1533:14;1525:22;;1393:161;;;:::o;1560:108::-;1637:24;1655:5;1637:24;:::i;:::-;1632:3;1625:37;1560:108;;:::o;1768:505::-;1913:4;1908:3;1904:14;2000:4;1993:5;1989:16;1983:23;2019:63;2076:4;2071:3;2067:14;2053:12;2019:63;:::i;:::-;1928:164;2174:4;2167:5;2163:16;2157:23;2193:63;2250:4;2245:3;2241:14;2227:12;2193:63;:::i;:::-;2102:164;1882:391;1768:505;;:::o;2279:295::-;2406:10;2427:104;2527:3;2519:6;2427:104;:::i;:::-;2563:4;2558:3;2554:14;2540:28;;2279:295;;;;:::o;2580:142::-;2679:4;2711;2706:3;2702:14;2694:22;;2580:142;;;:::o;2826:964::-;3003:3;3032:83;3109:5;3032:83;:::i;:::-;3131:115;3239:6;3234:3;3131:115;:::i;:::-;3124:122;;3270:85;3349:5;3270:85;:::i;:::-;3378:7;3409:1;3394:371;3419:6;3416:1;3413:13;3394:371;;;3495:6;3489:13;3522:121;3639:3;3624:13;3522:121;:::i;:::-;3515:128;;3666:89;3748:6;3666:89;:::i;:::-;3656:99;;3454:311;3441:1;3438;3434:9;3429:14;;3394:371;;;3398:14;3781:3;3774:10;;3008:782;;;2826:964;;;;:::o;3796:489::-;3997:4;4035:2;4024:9;4020:18;4012:26;;4084:9;4078:4;4074:20;4070:1;4059:9;4055:17;4048:47;4112:166;4273:4;4264:6;4112:166;:::i;:::-;4104:174;;3796:489;;;;:::o;4291:117::-;4400:1;4397;4390:12;4414:117;4523:1;4520;4513:12;4537:117;4646:1;4643;4636:12;4677:568;4750:8;4760:6;4810:3;4803:4;4795:6;4791:17;4787:27;4777:122;;4818:79;;:::i;:::-;4777:122;4931:6;4918:20;4908:30;;4961:18;4953:6;4950:30;4947:117;;;4983:79;;:::i;:::-;4947:117;5097:4;5089:6;5085:17;5073:29;;5151:3;5143:4;5135:6;5131:17;5121:8;5117:32;5114:41;5111:128;;;5158:79;;:::i;:::-;5111:128;4677:568;;;;;:::o;5251:126::-;5288:7;5328:42;5321:5;5317:54;5306:65;;5251:126;;;:::o;5383:96::-;5420:7;5449:24;5467:5;5449:24;:::i;:::-;5438:35;;5383:96;;;:::o;5485:122::-;5558:24;5576:5;5558:24;:::i;:::-;5551:5;5548:35;5538:63;;5597:1;5594;5587:12;5538:63;5485:122;:::o;5613:139::-;5659:5;5697:6;5684:20;5675:29;;5713:33;5740:5;5713:33;:::i;:::-;5613:139;;;;:::o;5758:101::-;5794:7;5834:18;5827:5;5823:30;5812:41;;5758:101;;;:::o;5865:120::-;5937:23;5954:5;5937:23;:::i;:::-;5930:5;5927:34;5917:62;;5975:1;5972;5965:12;5917:62;5865:120;:::o;5991:137::-;6036:5;6074:6;6061:20;6052:29;;6090:32;6116:5;6090:32;:::i;:::-;5991:137;;;;:::o;6134:90::-;6168:7;6211:5;6204:13;6197:21;6186:32;;6134:90;;;:::o;6230:116::-;6300:21;6315:5;6300:21;:::i;:::-;6293:5;6290:32;6280:60;;6336:1;6333;6326:12;6280:60;6230:116;:::o;6352:133::-;6395:5;6433:6;6420:20;6411:29;;6449:30;6473:5;6449:30;:::i;:::-;6352:133;;;;:::o;6491:1425::-;6627:6;6635;6643;6651;6659;6667;6675;6683;6732:3;6720:9;6711:7;6707:23;6703:33;6700:120;;;6739:79;;:::i;:::-;6700:120;6859:1;6884:53;6929:7;6920:6;6909:9;6905:22;6884:53;:::i;:::-;6874:63;;6830:117;6986:2;7012:53;7057:7;7048:6;7037:9;7033:22;7012:53;:::i;:::-;7002:63;;6957:118;7114:2;7140:53;7185:7;7176:6;7165:9;7161:22;7140:53;:::i;:::-;7130:63;;7085:118;7270:2;7259:9;7255:18;7242:32;7301:18;7293:6;7290:30;7287:117;;;7323:79;;:::i;:::-;7287:117;7436:80;7508:7;7499:6;7488:9;7484:22;7436:80;:::i;:::-;7418:98;;;;7213:313;7565:3;7592:53;7637:7;7628:6;7617:9;7613:22;7592:53;:::i;:::-;7582:63;;7536:119;7694:3;7721:52;7765:7;7756:6;7745:9;7741:22;7721:52;:::i;:::-;7711:62;;7665:118;7822:3;7849:50;7891:7;7882:6;7871:9;7867:22;7849:50;:::i;:::-;7839:60;;7793:116;6491:1425;;;;;;;;;;;:::o;7922:118::-;8009:24;8027:5;8009:24;:::i;:::-;8004:3;7997:37;7922:118;;:::o;8046:::-;8133:24;8151:5;8133:24;:::i;:::-;8128:3;8121:37;8046:118;;:::o;8170:332::-;8291:4;8329:2;8318:9;8314:18;8306:26;;8342:71;8410:1;8399:9;8395:17;8386:6;8342:71;:::i;:::-;8423:72;8491:2;8480:9;8476:18;8467:6;8423:72;:::i;:::-;8170:332;;;;;:::o;8508:77::-;8545:7;8574:5;8563:16;;8508:77;;;:::o;8591:122::-;8664:24;8682:5;8664:24;:::i;:::-;8657:5;8654:35;8644:63;;8703:1;8700;8693:12;8644:63;8591:122;:::o;8719:139::-;8765:5;8803:6;8790:20;8781:29;;8819:33;8846:5;8819:33;:::i;:::-;8719:139;;;;:::o;8864:109::-;8900:7;8940:26;8933:5;8929:38;8918:49;;8864:109;;;:::o;8979:120::-;9051:23;9068:5;9051:23;:::i;:::-;9044:5;9041:34;9031:62;;9089:1;9086;9079:12;9031:62;8979:120;:::o;9105:137::-;9150:5;9188:6;9175:20;9166:29;;9204:32;9230:5;9204:32;:::i;:::-;9105:137;;;;:::o;9262:553::-;9320:8;9330:6;9380:3;9373:4;9365:6;9361:17;9357:27;9347:122;;9388:79;;:::i;:::-;9347:122;9501:6;9488:20;9478:30;;9531:18;9523:6;9520:30;9517:117;;;9553:79;;:::i;:::-;9517:117;9667:4;9659:6;9655:17;9643:29;;9721:3;9713:4;9705:6;9701:17;9691:8;9687:32;9684:41;9681:128;;;9728:79;;:::i;:::-;9681:128;9262:553;;;;;:::o;9821:1693::-;9963:6;9971;9979;9987;9995;10003;10011;10019;10027;10035;10084:3;10072:9;10063:7;10059:23;10055:33;10052:120;;;10091:79;;:::i;:::-;10052:120;10211:1;10236:53;10281:7;10272:6;10261:9;10257:22;10236:53;:::i;:::-;10226:63;;10182:117;10338:2;10364:53;10409:7;10400:6;10389:9;10385:22;10364:53;:::i;:::-;10354:63;;10309:118;10466:2;10492:53;10537:7;10528:6;10517:9;10513:22;10492:53;:::i;:::-;10482:63;;10437:118;10594:2;10620:53;10665:7;10656:6;10645:9;10641:22;10620:53;:::i;:::-;10610:63;;10565:118;10722:3;10749:52;10793:7;10784:6;10773:9;10769:22;10749:52;:::i;:::-;10739:62;;10693:118;10850:3;10877:53;10922:7;10913:6;10902:9;10898:22;10877:53;:::i;:::-;10867:63;;10821:119;10979:3;11006:53;11051:7;11042:6;11031:9;11027:22;11006:53;:::i;:::-;10996:63;;10950:119;11108:3;11135:53;11180:7;11171:6;11160:9;11156:22;11135:53;:::i;:::-;11125:63;;11079:119;11265:3;11254:9;11250:19;11237:33;11297:18;11289:6;11286:30;11283:117;;;11319:79;;:::i;:::-;11283:117;11432:65;11489:7;11480:6;11469:9;11465:22;11432:65;:::i;:::-;11414:83;;;;11208:299;9821:1693;;;;;;;;;;;;;:::o;11520:222::-;11613:4;11651:2;11640:9;11636:18;11628:26;;11664:71;11732:1;11721:9;11717:17;11708:6;11664:71;:::i;:::-;11520:222;;;;:::o;11748:102::-;11789:6;11840:2;11836:7;11831:2;11824:5;11820:14;11816:28;11806:38;;11748:102;;;:::o;11856:180::-;11904:77;11901:1;11894:88;12001:4;11998:1;11991:15;12025:4;12022:1;12015:15;12042:281;12125:27;12147:4;12125:27;:::i;:::-;12117:6;12113:40;12255:6;12243:10;12240:22;12219:18;12207:10;12204:34;12201:62;12198:88;;;12266:18;;:::i;:::-;12198:88;12306:10;12302:2;12295:22;12085:238;12042:281;;:::o;12329:129::-;12363:6;12390:20;;:::i;:::-;12380:30;;12419:33;12447:4;12439:6;12419:33;:::i;:::-;12329:129;;;:::o;12464:340::-;12570:4;12660:18;12652:6;12649:30;12646:56;;;12682:18;;:::i;:::-;12646:56;12732:4;12724:6;12720:17;12712:25;;12792:4;12786;12782:15;12774:23;;12464:340;;;:::o;12810:117::-;12919:1;12916;12909:12;13105:578;13183:5;13227:4;13215:9;13210:3;13206:19;13202:30;13199:117;;;13235:79;;:::i;:::-;13199:117;13334:21;13350:4;13334:21;:::i;:::-;13325:30;;13414:1;13454:49;13499:3;13490:6;13479:9;13475:22;13454:49;:::i;:::-;13447:4;13440:5;13436:16;13429:75;13365:150;13574:2;13615:49;13660:3;13651:6;13640:9;13636:22;13615:49;:::i;:::-;13608:4;13601:5;13597:16;13590:75;13525:151;13105:578;;;;:::o;13740:797::-;13865:5;13890:110;13906:93;13992:6;13906:93;:::i;:::-;13890:110;:::i;:::-;13881:119;;14020:5;14049:6;14042:5;14035:21;14083:4;14076:5;14072:16;14065:23;;14136:4;14128:6;14124:17;14116:6;14112:30;14165:3;14157:6;14154:15;14151:122;;;14184:79;;:::i;:::-;14151:122;14299:6;14282:249;14316:6;14311:3;14308:15;14282:249;;;14391:3;14420:66;14482:3;14470:10;14420:66;:::i;:::-;14415:3;14408:79;14516:4;14511:3;14507:14;14500:21;;14358:173;14342:4;14337:3;14333:14;14326:21;;14282:249;;;14286:21;13871:666;;13740:797;;;;;:::o;14594:428::-;14694:5;14743:3;14736:4;14728:6;14724:17;14720:27;14710:122;;14751:79;;:::i;:::-;14710:122;14868:6;14855:20;14893:123;15012:3;15004:6;14997:4;14989:6;14985:17;14893:123;:::i;:::-;14884:132;;14700:322;14594:428;;;;:::o;15028:742::-;15150:6;15158;15207:2;15195:9;15186:7;15182:23;15178:32;15175:119;;;15213:79;;:::i;:::-;15175:119;15333:1;15358:53;15403:7;15394:6;15383:9;15379:22;15358:53;:::i;:::-;15348:63;;15304:117;15488:2;15477:9;15473:18;15460:32;15519:18;15511:6;15508:30;15505:117;;;15541:79;;:::i;:::-;15505:117;15646:107;15745:7;15736:6;15725:9;15721:22;15646:107;:::i;:::-;15636:117;;15431:332;15028:742;;;;;:::o;15776:98::-;15827:6;15861:5;15855:12;15845:22;;15776:98;;;:::o;15880:168::-;15963:11;15997:6;15992:3;15985:19;16037:4;16032:3;16028:14;16013:29;;15880:168;;;;:::o;16054:246::-;16135:1;16145:113;16159:6;16156:1;16153:13;16145:113;;;16244:1;16239:3;16235:11;16229:18;16225:1;16220:3;16216:11;16209:39;16181:2;16178:1;16174:10;16169:15;;16145:113;;;16292:1;16283:6;16278:3;16274:16;16267:27;16116:184;16054:246;;;:::o;16306:373::-;16392:3;16420:38;16452:5;16420:38;:::i;:::-;16474:70;16537:6;16532:3;16474:70;:::i;:::-;16467:77;;16553:65;16611:6;16606:3;16599:4;16592:5;16588:16;16553:65;:::i;:::-;16643:29;16665:6;16643:29;:::i;:::-;16638:3;16634:39;16627:46;;16396:283;16306:373;;;;:::o;16685:309::-;16796:4;16834:2;16823:9;16819:18;16811:26;;16883:9;16877:4;16873:20;16869:1;16858:9;16854:17;16847:47;16911:76;16982:4;16973:6;16911:76;:::i;:::-;16903:84;;16685:309;;;;:::o;17000:329::-;17059:6;17108:2;17096:9;17087:7;17083:23;17079:32;17076:119;;;17114:79;;:::i;:::-;17076:119;17234:1;17259:53;17304:7;17295:6;17284:9;17280:22;17259:53;:::i;:::-;17249:63;;17205:117;17000:329;;;;:::o;17335:109::-;17416:21;17431:5;17416:21;:::i;:::-;17411:3;17404:34;17335:109;;:::o;17450:210::-;17537:4;17575:2;17564:9;17560:18;17552:26;;17588:65;17650:1;17639:9;17635:17;17626:6;17588:65;:::i;:::-;17450:210;;;;:::o;17666:108::-;17743:24;17761:5;17743:24;:::i;:::-;17738:3;17731:37;17666:108;;:::o;17780:::-;17857:24;17875:5;17857:24;:::i;:::-;17852:3;17845:37;17780:108;;:::o;17894:105::-;17969:23;17986:5;17969:23;:::i;:::-;17964:3;17957:36;17894:105;;:::o;18005:99::-;18076:21;18091:5;18076:21;:::i;:::-;18071:3;18064:34;18005:99;;:::o;18166:1763::-;18309:6;18304:3;18300:16;18400:4;18393:5;18389:16;18383:23;18419:63;18476:4;18471:3;18467:14;18453:12;18419:63;:::i;:::-;18326:166;18575:4;18568:5;18564:16;18558:23;18594:63;18651:4;18646:3;18642:14;18628:12;18594:63;:::i;:::-;18502:165;18763:4;18756:5;18752:16;18746:23;18782:63;18839:4;18834:3;18830:14;18816:12;18782:63;:::i;:::-;18677:178;18942:4;18935:5;18931:16;18925:23;18961:63;19018:4;19013:3;19009:14;18995:12;18961:63;:::i;:::-;18865:169;19116:4;19109:5;19105:16;19099:23;19135:61;19190:4;19185:3;19181:14;19167:12;19135:61;:::i;:::-;19044:162;19295:4;19288:5;19284:16;19278:23;19314:57;19365:4;19360:3;19356:14;19342:12;19314:57;:::i;:::-;19216:165;19472:4;19465:5;19461:16;19455:23;19491:63;19548:4;19543:3;19539:14;19525:12;19491:63;:::i;:::-;19391:173;19652:4;19645:5;19641:16;19635:23;19671:61;19726:4;19721:3;19717:14;19703:12;19671:61;:::i;:::-;19574:168;19826:6;19819:5;19815:18;19809:25;19847:65;19904:6;19899:3;19895:16;19881:12;19847:65;:::i;:::-;19752:170;18278:1651;18166:1763;;:::o;19935:315::-;20074:4;20112:3;20101:9;20097:19;20089:27;;20126:117;20240:1;20229:9;20225:17;20216:6;20126:117;:::i;:::-;19935:315;;;;:::o;20256:474::-;20324:6;20332;20381:2;20369:9;20360:7;20356:23;20352:32;20349:119;;;20387:79;;:::i;:::-;20349:119;20507:1;20532:53;20577:7;20568:6;20557:9;20553:22;20532:53;:::i;:::-;20522:63;;20478:117;20634:2;20660:53;20705:7;20696:6;20685:9;20681:22;20660:53;:::i;:::-;20650:63;;20605:118;20256:474;;;;;:::o;20842:531::-;21009:4;21004:3;21000:14;21096:4;21089:5;21085:16;21079:23;21115:63;21172:4;21167:3;21163:14;21149:12;21115:63;:::i;:::-;21024:164;21274:4;21267:5;21263:16;21257:23;21293:63;21350:4;21345:3;21341:14;21327:12;21293:63;:::i;:::-;21198:168;20978:395;20842:531;;:::o;21379:362::-;21542:4;21580:2;21569:9;21565:18;21557:26;;21593:141;21731:1;21720:9;21716:17;21707:6;21593:141;:::i;:::-;21379:362;;;;:::o;21747:222::-;21840:4;21878:2;21867:9;21863:18;21855:26;;21891:71;21959:1;21948:9;21944:17;21935:6;21891:71;:::i;:::-;21747:222;;;;:::o;21975:613::-;22049:6;22057;22065;22114:2;22102:9;22093:7;22089:23;22085:32;22082:119;;;22120:79;;:::i;:::-;22082:119;22240:1;22265:53;22310:7;22301:6;22290:9;22286:22;22265:53;:::i;:::-;22255:63;;22211:117;22367:2;22393:53;22438:7;22429:6;22418:9;22414:22;22393:53;:::i;:::-;22383:63;;22338:118;22495:2;22521:50;22563:7;22554:6;22543:9;22539:22;22521:50;:::i;:::-;22511:60;;22466:115;21975:613;;;;;:::o;22594:118::-;22631:7;22671:34;22664:5;22660:46;22649:57;;22594:118;;;:::o;22718:::-;22805:24;22823:5;22805:24;:::i;:::-;22800:3;22793:37;22718:118;;:::o;22842:::-;22929:24;22947:5;22929:24;:::i;:::-;22924:3;22917:37;22842:118;;:::o;22966:442::-;23115:4;23153:2;23142:9;23138:18;23130:26;;23166:71;23234:1;23223:9;23219:17;23210:6;23166:71;:::i;:::-;23247:72;23315:2;23304:9;23300:18;23291:6;23247:72;:::i;:::-;23329;23397:2;23386:9;23382:18;23373:6;23329:72;:::i;:::-;22966:442;;;;;;:::o;23427:552::-;23484:8;23494:6;23544:3;23537:4;23529:6;23525:17;23521:27;23511:122;;23552:79;;:::i;:::-;23511:122;23665:6;23652:20;23642:30;;23695:18;23687:6;23684:30;23681:117;;;23717:79;;:::i;:::-;23681:117;23831:4;23823:6;23819:17;23807:29;;23885:3;23877:4;23869:6;23865:17;23855:8;23851:32;23848:41;23845:128;;;23892:79;;:::i;:::-;23845:128;23427:552;;;;;:::o;23985:527::-;24055:6;24063;24112:2;24100:9;24091:7;24087:23;24083:32;24080:119;;;24118:79;;:::i;:::-;24080:119;24266:1;24255:9;24251:17;24238:31;24296:18;24288:6;24285:30;24282:117;;;24318:79;;:::i;:::-;24282:117;24431:64;24487:7;24478:6;24467:9;24463:22;24431:64;:::i;:::-;24413:82;;;;24209:296;23985:527;;;;;:::o;24518:619::-;24595:6;24603;24611;24660:2;24648:9;24639:7;24635:23;24631:32;24628:119;;;24666:79;;:::i;:::-;24628:119;24786:1;24811:53;24856:7;24847:6;24836:9;24832:22;24811:53;:::i;:::-;24801:63;;24757:117;24913:2;24939:53;24984:7;24975:6;24964:9;24960:22;24939:53;:::i;:::-;24929:63;;24884:118;25041:2;25067:53;25112:7;25103:6;25092:9;25088:22;25067:53;:::i;:::-;25057:63;;25012:118;24518:619;;;;;:::o;25143:474::-;25211:6;25219;25268:2;25256:9;25247:7;25243:23;25239:32;25236:119;;;25274:79;;:::i;:::-;25236:119;25394:1;25419:53;25464:7;25455:6;25444:9;25440:22;25419:53;:::i;:::-;25409:63;;25365:117;25521:2;25547:53;25592:7;25583:6;25572:9;25568:22;25547:53;:::i;:::-;25537:63;;25492:118;25143:474;;;;;:::o;25623:122::-;25696:24;25714:5;25696:24;:::i;:::-;25689:5;25686:35;25676:63;;25735:1;25732;25725:12;25676:63;25623:122;:::o;25751:139::-;25797:5;25835:6;25822:20;25813:29;;25851:33;25878:5;25851:33;:::i;:::-;25751:139;;;;:::o;25896:474::-;25964:6;25972;26021:2;26009:9;26000:7;25996:23;25992:32;25989:119;;;26027:79;;:::i;:::-;25989:119;26147:1;26172:53;26217:7;26208:6;26197:9;26193:22;26172:53;:::i;:::-;26162:63;;26118:117;26274:2;26300:53;26345:7;26336:6;26325:9;26321:22;26300:53;:::i;:::-;26290:63;;26245:118;25896:474;;;;;:::o;26376:180::-;26424:77;26421:1;26414:88;26521:4;26518:1;26511:15;26545:4;26542:1;26535:15;26562:169;26646:11;26680:6;26675:3;26668:19;26720:4;26715:3;26711:14;26696:29;;26562:169;;;;:::o;26737:164::-;26877:16;26873:1;26865:6;26861:14;26854:40;26737:164;:::o;26907:366::-;27049:3;27070:67;27134:2;27129:3;27070:67;:::i;:::-;27063:74;;27146:93;27235:3;27146:93;:::i;:::-;27264:2;27259:3;27255:12;27248:19;;26907:366;;;:::o;27279:419::-;27445:4;27483:2;27472:9;27468:18;27460:26;;27532:9;27526:4;27522:20;27518:1;27507:9;27503:17;27496:47;27560:131;27686:4;27560:131;:::i;:::-;27552:139;;27279:419;;;:::o;27704:164::-;27844:16;27840:1;27832:6;27828:14;27821:40;27704:164;:::o;27874:366::-;28016:3;28037:67;28101:2;28096:3;28037:67;:::i;:::-;28030:74;;28113:93;28202:3;28113:93;:::i;:::-;28231:2;28226:3;28222:12;28215:19;;27874:366;;;:::o;28246:419::-;28412:4;28450:2;28439:9;28435:18;28427:26;;28499:9;28493:4;28489:20;28485:1;28474:9;28470:17;28463:47;28527:131;28653:4;28527:131;:::i;:::-;28519:139;;28246:419;;;:::o;28671:180::-;28719:77;28716:1;28709:88;28816:4;28813:1;28806:15;28840:4;28837:1;28830:15;28857:216;28896:4;28916:19;28933:1;28916:19;:::i;:::-;28911:24;;28949:19;28966:1;28949:19;:::i;:::-;28944:24;;28992:1;28989;28985:9;28977:17;;29016:26;29010:4;29007:36;29004:62;;;29046:18;;:::i;:::-;29004:62;28857:216;;;;:::o;29079:332::-;29200:4;29238:2;29227:9;29223:18;29215:26;;29251:71;29319:1;29308:9;29304:17;29295:6;29251:71;:::i;:::-;29332:72;29400:2;29389:9;29385:18;29376:6;29332:72;:::i;:::-;29079:332;;;;;:::o;29417:137::-;29471:5;29502:6;29496:13;29487:22;;29518:30;29542:5;29518:30;:::i;:::-;29417:137;;;;:::o;29560:345::-;29627:6;29676:2;29664:9;29655:7;29651:23;29647:32;29644:119;;;29682:79;;:::i;:::-;29644:119;29802:1;29827:61;29880:7;29871:6;29860:9;29856:22;29827:61;:::i;:::-;29817:71;;29773:125;29560:345;;;;:::o;29911:60::-;29939:3;29960:5;29953:12;;29911:60;;;:::o;29977:138::-;30025:9;30058:51;30075:33;30084:23;30101:5;30084:23;:::i;:::-;30075:33;:::i;:::-;30058:51;:::i;:::-;30045:64;;29977:138;;;:::o;30121:127::-;30206:35;30235:5;30206:35;:::i;:::-;30201:3;30194:48;30121:127;;:::o;30254:438::-;30401:4;30439:2;30428:9;30424:18;30416:26;;30452:71;30520:1;30509:9;30505:17;30496:6;30452:71;:::i;:::-;30533:72;30601:2;30590:9;30586:18;30577:6;30533:72;:::i;:::-;30615:70;30681:2;30670:9;30666:18;30657:6;30615:70;:::i;:::-;30254:438;;;;;;:::o;30698:410::-;30738:7;30761:20;30779:1;30761:20;:::i;:::-;30756:25;;30795:20;30813:1;30795:20;:::i;:::-;30790:25;;30850:1;30847;30843:9;30872:30;30890:11;30872:30;:::i;:::-;30861:41;;31051:1;31042:7;31038:15;31035:1;31032:22;31012:1;31005:9;30985:83;30962:139;;31081:18;;:::i;:::-;30962:139;30746:362;30698:410;;;;:::o;31114:180::-;31162:77;31159:1;31152:88;31259:4;31256:1;31249:15;31283:4;31280:1;31273:15;31300:185;31340:1;31357:20;31375:1;31357:20;:::i;:::-;31352:25;;31391:20;31409:1;31391:20;:::i;:::-;31386:25;;31430:1;31420:35;;31435:18;;:::i;:::-;31420:35;31477:1;31474;31470:9;31465:14;;31300:185;;;;:::o;31491:166::-;31631:18;31627:1;31619:6;31615:14;31608:42;31491:166;:::o;31663:366::-;31805:3;31826:67;31890:2;31885:3;31826:67;:::i;:::-;31819:74;;31902:93;31991:3;31902:93;:::i;:::-;32020:2;32015:3;32011:12;32004:19;;31663:366;;;:::o;32035:419::-;32201:4;32239:2;32228:9;32224:18;32216:26;;32288:9;32282:4;32278:20;32274:1;32263:9;32259:17;32252:47;32316:131;32442:4;32316:131;:::i;:::-;32308:139;;32035:419;;;:::o;32460:442::-;32609:4;32647:2;32636:9;32632:18;32624:26;;32660:71;32728:1;32717:9;32713:17;32704:6;32660:71;:::i;:::-;32741:72;32809:2;32798:9;32794:18;32785:6;32741:72;:::i;:::-;32823;32891:2;32880:9;32876:18;32867:6;32823:72;:::i;:::-;32460:442;;;;;;:::o;32908:233::-;32947:3;32970:24;32988:5;32970:24;:::i;:::-;32961:33;;33016:66;33009:5;33006:77;33003:103;;33086:18;;:::i;:::-;33003:103;33133:1;33126:5;33122:13;33115:20;;32908:233;;;:::o;33147:140::-;33196:9;33229:52;33247:33;33256:23;33273:5;33256:23;:::i;:::-;33247:33;:::i;:::-;33229:52;:::i;:::-;33216:65;;33147:140;;;:::o;33293:129::-;33379:36;33409:5;33379:36;:::i;:::-;33374:3;33367:49;33293:129;;:::o;33428:146::-;33525:6;33520:3;33515;33502:30;33566:1;33557:6;33552:3;33548:16;33541:27;33428:146;;;:::o;33604:317::-;33702:3;33723:71;33787:6;33782:3;33723:71;:::i;:::-;33716:78;;33804:56;33853:6;33848:3;33841:5;33804:56;:::i;:::-;33885:29;33907:6;33885:29;:::i;:::-;33880:3;33876:39;33869:46;;33604:317;;;;;:::o;33927:662::-;34133:4;34171:3;34160:9;34156:19;34148:27;;34185:70;34252:1;34241:9;34237:17;34228:6;34185:70;:::i;:::-;34265:72;34333:2;34322:9;34318:18;34309:6;34265:72;:::i;:::-;34347;34415:2;34404:9;34400:18;34391:6;34347:72;:::i;:::-;34466:9;34460:4;34456:20;34451:2;34440:9;34436:18;34429:48;34494:88;34577:4;34568:6;34560;34494:88;:::i;:::-;34486:96;;33927:662;;;;;;;;:::o;34595:180::-;34643:77;34640:1;34633:88;34740:4;34737:1;34730:15;34764:4;34761:1;34754:15;34781:320;34825:6;34862:1;34856:4;34852:12;34842:22;;34909:1;34903:4;34899:12;34930:18;34920:81;;34986:4;34978:6;34974:17;34964:27;;34920:81;35048:2;35040:6;35037:14;35017:18;35014:38;35011:84;;35067:18;;:::i;:::-;35011:84;34832:269;34781:320;;;:::o;35107:172::-;35247:24;35243:1;35235:6;35231:14;35224:48;35107:172;:::o;35285:366::-;35427:3;35448:67;35512:2;35507:3;35448:67;:::i;:::-;35441:74;;35524:93;35613:3;35524:93;:::i;:::-;35642:2;35637:3;35633:12;35626:19;;35285:366;;;:::o;35657:419::-;35823:4;35861:2;35850:9;35846:18;35838:26;;35910:9;35904:4;35900:20;35896:1;35885:9;35881:17;35874:47;35938:131;36064:4;35938:131;:::i;:::-;35930:139;;35657:419;;;:::o;36082:430::-;36225:4;36263:2;36252:9;36248:18;36240:26;;36276:71;36344:1;36333:9;36329:17;36320:6;36276:71;:::i;:::-;36357:72;36425:2;36414:9;36410:18;36401:6;36357:72;:::i;:::-;36439:66;36501:2;36490:9;36486:18;36477:6;36439:66;:::i;:::-;36082:430;;;;;;:::o;36518:233::-;36658:34;36654:1;36646:6;36642:14;36635:58;36727:16;36722:2;36714:6;36710:15;36703:41;36518:233;:::o;36757:366::-;36899:3;36920:67;36984:2;36979:3;36920:67;:::i;:::-;36913:74;;36996:93;37085:3;36996:93;:::i;:::-;37114:2;37109:3;37105:12;37098:19;;36757:366;;;:::o;37129:419::-;37295:4;37333:2;37322:9;37318:18;37310:26;;37382:9;37376:4;37372:20;37368:1;37357:9;37353:17;37346:47;37410:131;37536:4;37410:131;:::i;:::-;37402:139;;37129:419;;;:::o;37554:85::-;37599:7;37628:5;37617:16;;37554:85;;;:::o;37645:86::-;37680:7;37720:4;37713:5;37709:16;37698:27;;37645:86;;;:::o;37737:154::-;37793:9;37826:59;37842:42;37851:32;37877:5;37851:32;:::i;:::-;37842:42;:::i;:::-;37826:59;:::i;:::-;37813:72;;37737:154;;;:::o;37897:143::-;37990:43;38027:5;37990:43;:::i;:::-;37985:3;37978:56;37897:143;;:::o;38046:234::-;38145:4;38183:2;38172:9;38168:18;38160:26;;38196:77;38270:1;38259:9;38255:17;38246:6;38196:77;:::i;:::-;38046:234;;;;:::o;38286:96::-;38344:6;38372:3;38362:13;;38286:96;;;;:::o;38388:140::-;38436:4;38459:3;38451:11;;38482:3;38479:1;38472:14;38516:4;38513:1;38503:18;38495:26;;38388:140;;;:::o;38534:93::-;38571:6;38618:2;38613;38606:5;38602:14;38598:23;38588:33;;38534:93;;;:::o;38633:107::-;38677:8;38727:5;38721:4;38717:16;38696:37;;38633:107;;;;:::o;38746:393::-;38815:6;38865:1;38853:10;38849:18;38888:97;38918:66;38907:9;38888:97;:::i;:::-;39006:39;39036:8;39025:9;39006:39;:::i;:::-;38994:51;;39078:4;39074:9;39067:5;39063:21;39054:30;;39127:4;39117:8;39113:19;39106:5;39103:30;39093:40;;38822:317;;38746:393;;;;;:::o;39145:142::-;39195:9;39228:53;39246:34;39255:24;39273:5;39255:24;:::i;:::-;39246:34;:::i;:::-;39228:53;:::i;:::-;39215:66;;39145:142;;;:::o;39293:75::-;39336:3;39357:5;39350:12;;39293:75;;;:::o;39374:269::-;39484:39;39515:7;39484:39;:::i;:::-;39545:91;39594:41;39618:16;39594:41;:::i;:::-;39586:6;39579:4;39573:11;39545:91;:::i;:::-;39539:4;39532:105;39450:193;39374:269;;;:::o;39649:73::-;39694:3;39649:73;:::o;39728:189::-;39805:32;;:::i;:::-;39846:65;39904:6;39896;39890:4;39846:65;:::i;:::-;39781:136;39728:189;;:::o;39923:186::-;39983:120;40000:3;39993:5;39990:14;39983:120;;;40054:39;40091:1;40084:5;40054:39;:::i;:::-;40027:1;40020:5;40016:13;40007:22;;39983:120;;;39923:186;;:::o;40115:541::-;40215:2;40210:3;40207:11;40204:445;;;40249:37;40280:5;40249:37;:::i;:::-;40332:29;40350:10;40332:29;:::i;:::-;40322:8;40318:44;40515:2;40503:10;40500:18;40497:49;;;40536:8;40521:23;;40497:49;40559:80;40615:22;40633:3;40615:22;:::i;:::-;40605:8;40601:37;40588:11;40559:80;:::i;:::-;40219:430;;40204:445;40115:541;;;:::o;40662:117::-;40716:8;40766:5;40760:4;40756:16;40735:37;;40662:117;;;;:::o;40785:169::-;40829:6;40862:51;40910:1;40906:6;40898:5;40895:1;40891:13;40862:51;:::i;:::-;40858:56;40943:4;40937;40933:15;40923:25;;40836:118;40785:169;;;;:::o;40959:295::-;41035:4;41181:29;41206:3;41200:4;41181:29;:::i;:::-;41173:37;;41243:3;41240:1;41236:11;41230:4;41227:21;41219:29;;40959:295;;;;:::o;41259:1398::-;41381:43;41420:3;41415;41381:43;:::i;:::-;41489:18;41481:6;41478:30;41475:56;;;41511:18;;:::i;:::-;41475:56;41555:38;41587:4;41581:11;41555:38;:::i;:::-;41640:66;41699:6;41691;41685:4;41640:66;:::i;:::-;41733:1;41762:2;41754:6;41751:14;41779:1;41774:631;;;;42449:1;42466:6;42463:84;;;42522:9;42517:3;42513:19;42500:33;42491:42;;42463:84;42573:67;42633:6;42626:5;42573:67;:::i;:::-;42567:4;42560:81;42422:229;41744:907;;41774:631;41826:4;41822:9;41814:6;41810:22;41860:36;41891:4;41860:36;:::i;:::-;41918:1;41932:215;41946:7;41943:1;41940:14;41932:215;;;42032:9;42027:3;42023:19;42010:33;42002:6;41995:49;42083:1;42075:6;42071:14;42061:24;;42130:2;42119:9;42115:18;42102:31;;41969:4;41966:1;41962:12;41957:17;;41932:215;;;42175:6;42166:7;42163:19;42160:186;;;42240:9;42235:3;42231:19;42218:33;42283:48;42325:4;42317:6;42313:17;42302:9;42283:48;:::i;:::-;42275:6;42268:64;42183:163;42160:186;42392:1;42388;42380:6;42376:14;42372:22;42366:4;42359:36;41781:624;;;41744:907;;41356:1301;;;41259:1398;;;:::o;42685:314::-;42781:3;42802:70;42865:6;42860:3;42802:70;:::i;:::-;42795:77;;42882:56;42931:6;42926:3;42919:5;42882:56;:::i;:::-;42963:29;42985:6;42963:29;:::i;:::-;42958:3;42954:39;42947:46;;42685:314;;;;;:::o;43005:329::-;43126:4;43164:2;43153:9;43149:18;43141:26;;43213:9;43207:4;43203:20;43199:1;43188:9;43184:17;43177:47;43241:86;43322:4;43313:6;43305;43241:86;:::i;:::-;43233:94;;43005:329;;;;;:::o;43340:225::-;43480:34;43476:1;43468:6;43464:14;43457:58;43549:8;43544:2;43536:6;43532:15;43525:33;43340:225;:::o;43571:366::-;43713:3;43734:67;43798:2;43793:3;43734:67;:::i;:::-;43727:74;;43810:93;43899:3;43810:93;:::i;:::-;43928:2;43923:3;43919:12;43912:19;;43571:366;;;:::o;43943:419::-;44109:4;44147:2;44136:9;44132:18;44124:26;;44196:9;44190:4;44186:20;44182:1;44171:9;44167:17;44160:47;44224:131;44350:4;44224:131;:::i;:::-;44216:139;;43943:419;;;:::o;44368:332::-;44489:4;44527:2;44516:9;44512:18;44504:26;;44540:71;44608:1;44597:9;44593:17;44584:6;44540:71;:::i;:::-;44621:72;44689:2;44678:9;44674:18;44665:6;44621:72;:::i;:::-;44368:332;;;;;:::o;44706:194::-;44746:4;44766:20;44784:1;44766:20;:::i;:::-;44761:25;;44800:20;44818:1;44800:20;:::i;:::-;44795:25;;44844:1;44841;44837:9;44829:17;;44868:1;44862:4;44859:11;44856:37;;;44873:18;;:::i;:::-;44856:37;44706:194;;;;:::o;44906:191::-;44946:3;44965:20;44983:1;44965:20;:::i;:::-;44960:25;;44999:20;45017:1;44999:20;:::i;:::-;44994:25;;45042:1;45039;45035:9;45028:16;;45063:3;45060:1;45057:10;45054:36;;;45070:18;;:::i;:::-;45054:36;44906:191;;;;:::o;45103:167::-;45243:19;45239:1;45231:6;45227:14;45220:43;45103:167;:::o;45276:366::-;45418:3;45439:67;45503:2;45498:3;45439:67;:::i;:::-;45432:74;;45515:93;45604:3;45515:93;:::i;:::-;45633:2;45628:3;45624:12;45617:19;;45276:366;;;:::o;45648:419::-;45814:4;45852:2;45841:9;45837:18;45829:26;;45901:9;45895:4;45891:20;45887:1;45876:9;45872:17;45865:47;45929:131;46055:4;45929:131;:::i;:::-;45921:139;;45648:419;;;:::o;46073:162::-;46213:14;46209:1;46201:6;46197:14;46190:38;46073:162;:::o;46241:366::-;46383:3;46404:67;46468:2;46463:3;46404:67;:::i;:::-;46397:74;;46480:93;46569:3;46480:93;:::i;:::-;46598:2;46593:3;46589:12;46582:19;;46241:366;;;:::o;46613:419::-;46779:4;46817:2;46806:9;46802:18;46794:26;;46866:9;46860:4;46856:20;46852:1;46841:9;46837:17;46830:47;46894:131;47020:4;46894:131;:::i;:::-;46886:139;;46613:419;;;:::o;47038:166::-;47178:18;47174:1;47166:6;47162:14;47155:42;47038:166;:::o;47210:366::-;47352:3;47373:67;47437:2;47432:3;47373:67;:::i;:::-;47366:74;;47449:93;47538:3;47449:93;:::i;:::-;47567:2;47562:3;47558:12;47551:19;;47210:366;;;:::o;47582:419::-;47748:4;47786:2;47775:9;47771:18;47763:26;;47835:9;47829:4;47825:20;47821:1;47810:9;47806:17;47799:47;47863:131;47989:4;47863:131;:::i;:::-;47855:139;;47582:419;;;:::o;48007:172::-;48147:24;48143:1;48135:6;48131:14;48124:48;48007:172;:::o;48185:366::-;48327:3;48348:67;48412:2;48407:3;48348:67;:::i;:::-;48341:74;;48424:93;48513:3;48424:93;:::i;:::-;48542:2;48537:3;48533:12;48526:19;;48185:366;;;:::o;48557:419::-;48723:4;48761:2;48750:9;48746:18;48738:26;;48810:9;48804:4;48800:20;48796:1;48785:9;48781:17;48774:47;48838:131;48964:4;48838:131;:::i;:::-;48830:139;;48557:419;;;:::o;48982:182::-;49122:34;49118:1;49110:6;49106:14;49099:58;48982:182;:::o;49170:366::-;49312:3;49333:67;49397:2;49392:3;49333:67;:::i;:::-;49326:74;;49409:93;49498:3;49409:93;:::i;:::-;49527:2;49522:3;49518:12;49511:19;;49170:366;;;:::o;49542:419::-;49708:4;49746:2;49735:9;49731:18;49723:26;;49795:9;49789:4;49785:20;49781:1;49770:9;49766:17;49759:47;49823:131;49949:4;49823:131;:::i;:::-;49815:139;;49542:419;;;:::o;49967:230::-;50107:34;50103:1;50095:6;50091:14;50084:58;50176:13;50171:2;50163:6;50159:15;50152:38;49967:230;:::o;50203:366::-;50345:3;50366:67;50430:2;50425:3;50366:67;:::i;:::-;50359:74;;50442:93;50531:3;50442:93;:::i;:::-;50560:2;50555:3;50551:12;50544:19;;50203:366;;;:::o;50575:419::-;50741:4;50779:2;50768:9;50764:18;50756:26;;50828:9;50822:4;50818:20;50814:1;50803:9;50799:17;50792:47;50856:131;50982:4;50856:131;:::i;:::-;50848:139;;50575:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"3347400","executionCost":"infinite","totalCost":"infinite"},"external":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"infinite","getAggregator()":"infinite","getAggregatorAddress()":"2610","getFeeDetails()":"infinite","getOrderInfo(bytes32)":"infinite","getSupportedInstitutionName(bytes32)":"infinite","getSupportedInstitutions(bytes32)":"infinite","getWhitelistedStatus(address)":"2905","initialize(address)":"211582","isTokenSupported(address)":"2928","owner()":"2545","refund(bytes32,bytes32)":"infinite","renounceOwnership()":"30421","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"infinite","settingManagerBool(bytes32,address,bool)":"infinite","settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":"infinite","transferOwnership(address)":"30854","updateProtocolAddresses(bytes32,address)":"51596","updateProtocolAggregator(bytes)":"infinite","updateProtocolFees(uint128,uint128)":"infinite","withdraw(address,address,uint256)":"infinite"},"internal":{"_calculateFees(bytes32,uint96,bool)":"infinite","_handler(address,uint256,address,address,bytes32)":"infinite","rewardValidators(address[] calldata,address,uint256)":"infinite","transferSenderFee(bytes32)":"infinite"}},"methodIdentifiers":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"2654ec7e","getAggregator()":"3ad59dbc","getAggregatorAddress()":"e8d6e0de","getFeeDetails()":"b810c636","getOrderInfo(bytes32)":"768c6ec0","getSupportedInstitutionName(bytes32)":"87490d86","getSupportedInstitutions(bytes32)":"02621338","getWhitelistedStatus(address)":"d8e8de34","initialize(address)":"c4d66de8","isTokenSupported(address)":"75151b63","owner()":"8da5cb5b","refund(bytes32,bytes32)":"e4683a79","renounceOwnership()":"715018a6","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"32200882","settingManagerBool(bytes32,address,bool)":"99e3c0b4","settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":"137764fb","transferOwnership(address)":"f2fde38b","updateProtocolAddresses(bytes32,address)":"79a0effb","updateProtocolAggregator(bytes)":"cb79455b","updateProtocolFees(uint128,uint128)":"f5326b19","withdraw(address,address,uint256)":"d9caed12"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"institutionCode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"protocolFee\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"validatorFeePercent\",\"type\":\"uint128\"}],\"name\":\"PaycrestFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"Refunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"SetAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"SetFeeRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SettingManagerBool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"settlePercent\",\"type\":\"uint96\"}],\"name\":\"Settled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSenderFee\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_institutionCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"_rate\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"_senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_senderFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"createOrder\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"name\":\"getOrderInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"rate\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"isFulfilled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"currentBPS\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaycrest.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"getSupportedInstitutionName\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.InstitutionByCode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"}],\"name\":\"getSupportedInstitutions\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getWhitelistedStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_usdc\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"}],\"name\":\"refund\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"institutions\",\"type\":\"tuple[]\"}],\"name\":\"setSupportedInstitutions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"settingManagerBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_liquidityProvider\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_settlePercent\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isPartner\",\"type\":\"bool\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"updateProtocolAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"updateProtocolAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_protocolFeePercent\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_validatorFeePercent\",\"type\":\"uint128\"}],\"name\":\"updateProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)\":{\"details\":\"Emitted when deposit is made.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Refunded(bytes32,bytes32)\":{\"details\":\"Emitted when aggregator refund transaction.\"},\"RewardValidator(address,uint256)\":{\"details\":\"Emitted when primary validator get therir rewards.\"},\"Settled(bytes32,bytes32,bytes32,address,uint96)\":{\"details\":\"Emitted when aggregator settle transaction.\"},\"TransferSenderFee(address,uint256)\":{\"details\":\"Emitted when sender get therir rewards.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"details\":\"See {createOrder-IPaycrest}. \"},\"getAggregator()\":{\"details\":\"See {getAggregator-IPaycrest}. \"},\"getAggregatorAddress()\":{\"details\":\"See {getAggregatorAddress-IPaycrest}. \"},\"getFeeDetails()\":{\"details\":\"See {getFeeDetails-IPaycrest}. \"},\"getOrderInfo(bytes32)\":{\"details\":\"See {getOrderInfo-IPaycrest}. \"},\"getSupportedInstitutionName(bytes32)\":{\"details\":\"See {getSupportedInstitutionName-IPaycrest}. \"},\"getWhitelistedStatus(address)\":{\"details\":\"See {getWhitelistedStatus-IPaycrest}. \"},\"isTokenSupported(address)\":{\"details\":\"See {isTokenSupported-IPaycrest}. \"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"refund(bytes32,bytes32)\":{\"details\":\"See {refund-IPaycrest}. \"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)\":{\"details\":\"See {settle-IPaycrest}. \"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Paycrest.sol\":\"Paycrest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n /**\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n /**\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n */\\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n /**\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n }\\n\\n /**\\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n }\\n }\\n\\n /**\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\n */\\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n _callOptionalReturn(token, approvalCall);\\n }\\n }\\n\\n /**\\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n * Revert on invalid signature.\\n */\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n *\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n */\\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n // and not revert is the subcall reverts.\\n\\n (bool success, bytes memory returndata) = address(token).call(data);\\n return\\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n mstore(0x1c, hash)\\n message := keccak256(0x00, 0x3c)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n mstore(add(ptr, 0x02), domainSeparator)\\n mstore(add(ptr, 0x22), structHash)\\n data := keccak256(ptr, 0x42)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n * `validator` and `data` according to the version 0 of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n }\\n}\\n\",\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/Paycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport {PaycrestSettingManager} from \\\"./PaycrestSettingManager.sol\\\";\\nimport {IPaycrest, IERC20} from \\\"./interface/IPaycrest.sol\\\";\\ncontract Paycrest is IPaycrest, PaycrestSettingManager { \\n using SafeERC20Upgradeable for IERC20;\\n using ECDSAUpgradeable for bytes32;\\n struct fee {\\n uint256 protocolFee;\\n uint256 liquidityProviderAmount;\\n uint256 validatorsReward;\\n }\\n mapping(bytes32 => Order) private order;\\n mapping(address => uint256) private _nonce;\\n uint256[50] private __gap;\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n function initialize(address _usdc) external initializer { \\n _isTokenSupported[_usdc] = true; \\n MAX_BPS = 100_000; \\n protocolFeePercent = 5000; // 5%\\n validatorFeePercent = 500; // 0.5%\\n __Ownable_init();\\n }\\n\\n modifier onlyAggregator {\\n require(msg.sender == _aggregatorAddress, \\\"OnlyAggregator\\\");\\n _;\\n }\\n \\n /* ##################################################################\\n USER CALLS\\n ################################################################## */\\n /** @dev See {createOrder-IPaycrest}. */\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash\\n ) external returns(bytes32 orderId) {\\n // checks that are required\\n _handler(_token, _amount, _refundAddress, _senderFeeRecipient, _institutionCode);\\n // require that sender fee is less than protocol fee\\n require(_senderFee <= (_amount * protocolFeePercent) / MAX_BPS, \\\"SenderFeeTooHigh\\\");\\n // first transfer token from msg.sender\\n IERC20(_token).transferFrom(msg.sender, address(this), _amount);\\n // increase users nonce to avoid replay attacks\\n _nonce[msg.sender] ++;\\n // @chibie @5ran6\\n // @todo sender fee should have limit, let say the maximum amount of sender fee should be 1% of the amount\\n // generate transaction id for the transaction\\n orderId = keccak256(abi.encode(msg.sender, _nonce[msg.sender]));\\n // update transaction\\n order[orderId] = Order({\\n seller: msg.sender,\\n token: _token,\\n senderFeeRecipient: _senderFeeRecipient,\\n senderFee: _senderFee,\\n rate: _rate,\\n isFulfilled: false,\\n refundAddress: _refundAddress,\\n currentBPS: uint64(MAX_BPS),\\n amount: _amount\\n });\\n // emit deposit event\\n emit Deposit(_token, _amount, orderId, _rate, _institutionCode, _label, messageHash);\\n }\\n\\n function _handler(address _token, uint256 _amount, address _refundAddress, address _senderFeeRecipient, bytes32 _institutionCode) internal view {\\n // use require for all the custom errors\\n require(_isTokenSupported[_token], \\\"TokenNotSupported\\\");\\n require(_amount > 0, \\\"AmountIsZero\\\");\\n require(_refundAddress != address(0), \\\"ThrowZeroAddress\\\");\\n require(_senderFeeRecipient != address(0), \\\"ThrowZeroAddress\\\");\\n require(supportedInstitutionsByCode[_institutionCode].name != bytes32(0), \\\"InvalidInstitutionCode\\\");\\n }\\n\\n /* ##################################################################\\n AGGREGATOR FUNCTIONS\\n ################################################################## */\\n /** @dev See {settle-IPaycrest}. */\\n function settle(\\n bytes32 _splitOrderId,\\n bytes32 _orderId, \\n bytes32 _label,\\n address[] calldata _validators, \\n address _liquidityProvider, \\n uint64 _settlePercent,\\n bool _isPartner\\n ) external onlyAggregator() returns(bytes32, address) {\\n // ensure the transaction has not been fulfilled\\n require(!order[_orderId].isFulfilled, \\\"OrderFulfilled\\\");\\n // load the token into memory\\n address token = order[_orderId].token;\\n // substract sum of amount based on the input _settlePercent\\n order[_orderId].currentBPS -= _settlePercent;\\n // if transaction amount is zero\\n // load the fees and transfer associated protocol fees to protocol fee recipient\\n ( fee memory _feeParams ) = _calculateFees(_orderId, _settlePercent, _isPartner);\\n if(order[_orderId].currentBPS == 0) {\\n // update the transaction to be fulfilled\\n order[_orderId].isFulfilled = true;\\n if (order[_orderId].senderFee > 0) {\\n // transfer sender fee\\n transferSenderFee(_orderId);\\n }\\n }\\n \\n if (_feeParams.protocolFee > 0) {\\n // transfer protocol fee\\n IERC20(token).transfer(feeRecipient, _feeParams.protocolFee);\\n }\\n // // transfer to liquidity provider \\n IERC20(token).transfer(_liquidityProvider, _feeParams.liquidityProviderAmount);\\n // // transfer to validators\\n rewardValidators(_validators, token, _feeParams.validatorsReward);\\n\\n // emit event\\n emit Settled(_splitOrderId, _orderId, _label, _liquidityProvider, _settlePercent);\\n return (_orderId, token);\\n }\\n\\n function rewardValidators(address[] calldata _validators, address token, uint256 _validatorsRewards) internal {\\n uint256 length = _validators.length;\\n uint256 _validatorReward = _validatorsRewards / length;\\n for(uint256 i = 0; i < length; ) {\\n IERC20(token).transfer(_validators[i], _validatorReward);\\n // emit event\\n emit RewardValidator(_validators[i], _validatorReward);\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function transferSenderFee(bytes32 _orderId) internal {\\n address recipient = order[_orderId].senderFeeRecipient;\\n uint256 _fee = order[_orderId].senderFee;\\n // transfer sender fee\\n IERC20(order[_orderId].token).transfer(recipient, _fee);\\n // emmit event\\n emit TransferSenderFee(recipient, _fee);\\n }\\n\\n /** @dev See {refund-IPaycrest}. */\\n function refund(bytes32 _orderId, bytes32 _label) external onlyAggregator() returns(bool) {\\n // ensure the transaction has not been fulfilled\\n require(!order[_orderId].isFulfilled, \\\"OrderFulfilled\\\");\\n // reser state values\\n order[_orderId].isFulfilled = true;\\n order[_orderId].currentBPS = 0;\\n // transfer to seller \\n IERC20(order[_orderId].token).transfer(order[_orderId].refundAddress, order[_orderId].amount);\\n // emit\\n emit Refunded(_orderId, _label);\\n return true;\\n }\\n\\n function _calculateFees(bytes32 _orderId, uint96 _settlePercent, bool _isPartner) private view returns(fee memory _feeParams ) {\\n // get the total amount associated with the orderId\\n uint256 amount = order[_orderId].amount;\\n // get sender fee from amount\\n amount = amount - order[_orderId].senderFee;\\n // get the settled percent that is scheduled for this amount\\n _feeParams.liquidityProviderAmount = (amount * _settlePercent) / MAX_BPS;\\n // deduct protocol fees from the new total amount\\n _feeParams.protocolFee = (_feeParams.liquidityProviderAmount * protocolFeePercent) / MAX_BPS; \\n // substract total fees from the new amount after getting the scheduled amount\\n _feeParams.liquidityProviderAmount = (_feeParams.liquidityProviderAmount - _feeParams.protocolFee);\\n // get primary validators fees primaryValidatorsReward\\n _feeParams.validatorsReward = (_feeParams.protocolFee * validatorFeePercent) / MAX_BPS;\\n // if (_isPartner) protocol fee should be 0, and the whole protocol fee should be added to liquidity provider\\n uint256 protocolFeeAmount = (_feeParams.protocolFee - _feeParams.validatorsReward);\\n if (_isPartner) {\\n _feeParams.liquidityProviderAmount += protocolFeeAmount;\\n _feeParams.protocolFee = 0;\\n } else {\\n _feeParams.protocolFee = protocolFeeAmount;\\n }\\n }\\n \\n /* ##################################################################\\n VIEW CALLS\\n ################################################################## */\\n /** @dev See {getOrderInfo-IPaycrest}. */\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory) {\\n return order[_orderId];\\n }\\n\\n /** @dev See {isTokenSupported-IPaycrest}. */\\n function isTokenSupported(address _token) external view returns(bool) {\\n return _isTokenSupported[_token];\\n }\\n\\n /** @dev See {getSupportedInstitutionName-IPaycrest}. */\\n function getSupportedInstitutionName(bytes32 code) external view returns (InstitutionByCode memory) {\\n return supportedInstitutionsByCode[code];\\n }\\n\\n function getSupportedInstitutions(bytes32 currency) external view returns (Institution[] memory) {\\n Institution[] memory institutions = supportedInstitutions[currency];\\n uint256 length = institutions.length;\\n Institution[] memory result = new Institution[](length);\\n \\n for (uint256 i = 0; i < length; ) {\\n result[i] = institutions[i];\\n unchecked {\\n i++;\\n }\\n }\\n \\n return result;\\n }\\n\\n /** @dev See {getFeeDetails-IPaycrest}. */\\n function getFeeDetails() external view returns(\\n uint128, \\n uint128, \\n uint256\\n ) {\\n return(protocolFeePercent, validatorFeePercent, MAX_BPS);\\n }\\n\\n /** @dev See {getAggregatorAddress-IPaycrest}. */\\n function getAggregatorAddress() external view returns(address) {\\n return _aggregatorAddress;\\n }\\n\\n /** @dev See {getWhitelistedStatus-IPaycrest}. */\\n function getWhitelistedStatus(address sender) external view returns(bool) {\\n return _isWhitelisted[sender];\\n }\\n\\n /** @dev See {getAggregator-IPaycrest}. */\\n function getAggregator() external view returns(bytes memory) {\\n return _aggregator;\\n }\\n\\n\\n // DECLARE A FUNCTION TO WITHDRAW ANY TOKEN FROM CONTRACT CAN ONLY NE CALLED BY OWNER\\n function withdraw(address _token, address _recipient, uint256 _amount) external onlyOwner {\\n IERC20(_token).transfer(_recipient, _amount);\\n }\\n\\n}\\n\",\"keccak256\":\"0xdd89854e9b755b2e838fbb8a6e8f7ae1d4307e1520d37a07846521d4857e887b\",\"license\":\"UNLICENSED\"},\"contracts/PaycrestSettingManager.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\n\\ncontract PaycrestSettingManager is OwnableUpgradeable { \\n struct Institution {\\n bytes32 code; // usually not more than 8 letters\\n bytes32 name; // \\n }\\n struct InstitutionByCode {\\n bytes32 name;\\n bytes32 currency;\\n }\\n uint256 internal MAX_BPS;\\n uint128 internal protocolFeePercent; // 5%\\n uint128 internal validatorFeePercent; // 0.5%\\n address internal feeRecipient;\\n address internal _aggregatorAddress;\\n bytes internal _aggregator;\\n \\n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\\n uint256[50] private __gap;\\n\\n mapping(address => bool) internal _isTokenSupported;\\n mapping(address => bool) internal _isWhitelisted;\\n\\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\\n\\n event SettingManagerBool(bytes32 what, address value, bool status);\\n event PaycrestFees(uint128 protocolFee, uint128 validatorFeePercent);\\n event SetAggregator(bytes aggregator);\\n event SetFeeRecipient(address feeRecipient);\\n\\n \\n /* ##################################################################\\n OWNER FUNCTIONS\\n ################################################################## */\\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"token\\\") _isTokenSupported[value] = status;\\n if (what == \\\"whitelist\\\") _isWhitelisted[value] = status;\\n\\n emit SettingManagerBool(what, value, status);\\n }\\n\\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \\n uint256 length = institutions.length;\\n for (uint i = 0; i < length; ) {\\n supportedInstitutions[currency].push(institutions[i]);\\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\\n name: institutions[i].name, currency: currency\\n });\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function updateProtocolFees(uint128 _protocolFeePercent, uint128 _validatorFeePercent) external onlyOwner {\\n protocolFeePercent = _protocolFeePercent;\\n validatorFeePercent = _validatorFeePercent;\\n emit PaycrestFees(_protocolFeePercent, _validatorFeePercent);\\n }\\n\\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"fee\\\") feeRecipient = value;\\n if (what == \\\"aggregator\\\") _aggregatorAddress = value;\\n }\\n\\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\\n _aggregator = aggregator;\\n emit SetAggregator(aggregator);\\n }\\n\\n}\\n\",\"keccak256\":\"0x6524d2af2d5e14c160ce5f57f202d38f3112e87d427bbc9ddf06dd5ada4c7497\",\"license\":\"UNLICENSED\"},\"contracts/interface/IPaycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n/**\\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\\n * Factory and global config params\\n */\\ninterface IPaycrest {\\n \\n /* ##################################################################\\n EVENTS\\n ################################################################## */\\n /// @dev Emitted when deposit is made.\\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\\n /// @dev Emitted when aggregator settle transaction.\\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\\n /// @dev Emitted when aggregator refund transaction.\\n event Refunded(bytes32 indexed orderId, bytes32 label);\\n /// @dev Emitted when sender get therir rewards.\\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\\n /// @dev Emitted when primary validator get therir rewards.\\n event RewardValidator(address indexed validator, uint256 indexed amount);\\n\\n /* ##################################################################\\n STRUCTS\\n ################################################################## */\\n struct TransactionMetadata {\\n bytes8 identifier; // slot 0\\n bytes8 institution; // slot 0\\n bytes8 name; // slot 0\\n bytes8 currency; // slot 0\\n uint256 liquidityProviderID; // slot 1\\n }\\n\\n struct Order {\\n address seller; // slot 0\\n address token; // slot 1\\n address senderFeeRecipient;\\n uint256 senderFee;\\n uint96 rate; // slot 1\\n bool isFulfilled; // slot 2 {11 bytes available}\\n address refundAddress; // slot 2 {12 bytes available}\\n uint96 currentBPS; // slot 2 {}\\n uint256 amount; // slot 3\\n }\\n\\n\\n /* ##################################################################\\n EXTERNAL CALLS\\n ################################################################## */\\n /// @notice lock sender `_amount` of `token` into Paycrest.\\n /// Requirements:\\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _token address of the token.\\n /// @param _amount amount in the decimal of `_token` above.\\n /// @param _institutionCode institution code of the sender.\\n /// @param _label reference of the sender.\\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\\n /// @return _orderId the bytes20 which is the orderId\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash) external returns(bytes32 _orderId);\\n\\n /// @notice settle transaction and distribute rewards accordingly.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @param _validators arrays of secondary validators.\\n /// @param _liquidityProvider address of the liquidity provider.\\n /// @param _settlePercent rate at which the transaction is settled.\\n /// @param _isPartner is the liquidity provider a partner.\\n /// @return return the status of transaction {bool}\\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\\n\\n /// @notice refund to the specified refundable address.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `isFulfilled` must be false.\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @return return the status of transaction {bool}\\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\\n\\n /// @notice get supported token from Paycrest.\\n /// @param _token address of the token to check.\\n /// @return return the status of `_token` {bool}\\n function isTokenSupported(address _token) external view returns(bool);\\n\\n /// @notice get order details.\\n /// @param _orderId transaction Id.\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\\n\\n /// @notice get every rewards and address on Paycrest.\\n /// @return protocolReward amount that will be taken in percentage on all trade.\\n /// @return validatorFeePercent amount that will be given to primary validator in percentage from `protocolReward`\\n /// @return max_bps maximum amount in bps \\\"100% == 100_000\\\".\\n function getFeeDetails() external view returns(\\n uint128 protocolReward, \\n uint128 validatorFeePercent, \\n uint256 max_bps\\n );\\n\\n /// @notice get address of liquidity aggregator.\\n /// @return address of `Aggregator`.\\n function getAggregatorAddress() external view returns(address);\\n\\n /// @notice get aggregator public key.\\n /// @return aggregator public key.\\n function getAggregator() external view returns(bytes memory);\\n \\n /// @notice get address of sender whitelisting status.\\n /// @param sender address of the sender.\\n /// @return address of `status`.\\n function getWhitelistedStatus(address sender) external view returns(bool);\\n\\n}\\n\",\"keccak256\":\"0x7c0459f29e4b1c266f59dcf90bb14443345d43da8579b4cc189bdfdd7237dd58\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"contracts/Paycrest.sol:Paycrest","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"contracts/Paycrest.sol:Paycrest","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"contracts/Paycrest.sol:Paycrest","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":3631,"contract":"contracts/Paycrest.sol:Paycrest","label":"MAX_BPS","offset":0,"slot":"101","type":"t_uint256"},{"astId":3633,"contract":"contracts/Paycrest.sol:Paycrest","label":"protocolFeePercent","offset":0,"slot":"102","type":"t_uint128"},{"astId":3635,"contract":"contracts/Paycrest.sol:Paycrest","label":"validatorFeePercent","offset":16,"slot":"102","type":"t_uint128"},{"astId":3637,"contract":"contracts/Paycrest.sol:Paycrest","label":"feeRecipient","offset":0,"slot":"103","type":"t_address"},{"astId":3639,"contract":"contracts/Paycrest.sol:Paycrest","label":"_aggregatorAddress","offset":0,"slot":"104","type":"t_address"},{"astId":3641,"contract":"contracts/Paycrest.sol:Paycrest","label":"_aggregator","offset":0,"slot":"105","type":"t_bytes_storage"},{"astId":3645,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"106","type":"t_array(t_uint256)50_storage"},{"astId":3649,"contract":"contracts/Paycrest.sol:Paycrest","label":"_isTokenSupported","offset":0,"slot":"156","type":"t_mapping(t_address,t_bool)"},{"astId":3653,"contract":"contracts/Paycrest.sol:Paycrest","label":"_isWhitelisted","offset":0,"slot":"157","type":"t_mapping(t_address,t_bool)"},{"astId":3659,"contract":"contracts/Paycrest.sol:Paycrest","label":"supportedInstitutions","offset":0,"slot":"158","type":"t_mapping(t_bytes32,t_array(t_struct(Institution)3624_storage)dyn_storage)"},{"astId":3664,"contract":"contracts/Paycrest.sol:Paycrest","label":"supportedInstitutionsByCode","offset":0,"slot":"159","type":"t_mapping(t_bytes32,t_struct(InstitutionByCode)3629_storage)"},{"astId":2838,"contract":"contracts/Paycrest.sol:Paycrest","label":"order","offset":0,"slot":"160","type":"t_mapping(t_bytes32,t_struct(Order)3950_storage)"},{"astId":2842,"contract":"contracts/Paycrest.sol:Paycrest","label":"_nonce","offset":0,"slot":"161","type":"t_mapping(t_address,t_uint256)"},{"astId":2846,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"162","type":"t_array(t_uint256)50_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Institution)3624_storage)dyn_storage":{"base":"t_struct(Institution)3624_storage","encoding":"dynamic_array","label":"struct PaycrestSettingManager.Institution[]","numberOfBytes":"32"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_array(t_struct(Institution)3624_storage)dyn_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])","numberOfBytes":"32","value":"t_array(t_struct(Institution)3624_storage)dyn_storage"},"t_mapping(t_bytes32,t_struct(InstitutionByCode)3629_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)","numberOfBytes":"32","value":"t_struct(InstitutionByCode)3629_storage"},"t_mapping(t_bytes32,t_struct(Order)3950_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct IPaycrest.Order)","numberOfBytes":"32","value":"t_struct(Order)3950_storage"},"t_struct(Institution)3624_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.Institution","members":[{"astId":3621,"contract":"contracts/Paycrest.sol:Paycrest","label":"code","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3623,"contract":"contracts/Paycrest.sol:Paycrest","label":"name","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(InstitutionByCode)3629_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.InstitutionByCode","members":[{"astId":3626,"contract":"contracts/Paycrest.sol:Paycrest","label":"name","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3628,"contract":"contracts/Paycrest.sol:Paycrest","label":"currency","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(Order)3950_storage":{"encoding":"inplace","label":"struct IPaycrest.Order","members":[{"astId":3933,"contract":"contracts/Paycrest.sol:Paycrest","label":"seller","offset":0,"slot":"0","type":"t_address"},{"astId":3935,"contract":"contracts/Paycrest.sol:Paycrest","label":"token","offset":0,"slot":"1","type":"t_address"},{"astId":3937,"contract":"contracts/Paycrest.sol:Paycrest","label":"senderFeeRecipient","offset":0,"slot":"2","type":"t_address"},{"astId":3939,"contract":"contracts/Paycrest.sol:Paycrest","label":"senderFee","offset":0,"slot":"3","type":"t_uint256"},{"astId":3941,"contract":"contracts/Paycrest.sol:Paycrest","label":"rate","offset":0,"slot":"4","type":"t_uint96"},{"astId":3943,"contract":"contracts/Paycrest.sol:Paycrest","label":"isFulfilled","offset":12,"slot":"4","type":"t_bool"},{"astId":3945,"contract":"contracts/Paycrest.sol:Paycrest","label":"refundAddress","offset":0,"slot":"5","type":"t_address"},{"astId":3947,"contract":"contracts/Paycrest.sol:Paycrest","label":"currentBPS","offset":20,"slot":"5","type":"t_uint96"},{"astId":3949,"contract":"contracts/Paycrest.sol:Paycrest","label":"amount","offset":0,"slot":"6","type":"t_uint256"}],"numberOfBytes":"224"},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/PaycrestSettingManager.sol":{"PaycrestSettingManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"protocolFee","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"validatorFeePercent","type":"uint128"}],"name":"PaycrestFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"SetAggregator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SettingManagerBool","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"institutions","type":"tuple[]"}],"name":"setSupportedInstitutions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"settingManagerBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"updateProtocolAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"updateProtocolAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"_protocolFeePercent","type":"uint128"},{"internalType":"uint128","name":"_validatorFeePercent","type":"uint128"}],"name":"updateProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50611361806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806399e3c0b41161005b57806399e3c0b4146100ed578063cb79455b14610109578063f2fde38b14610125578063f5326b191461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b35780638da5cb5b146100cf575b600080fd5b6100a760048036038101906100a29190610a86565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610b40565b610285565b005b6100d76103d2565b6040516100e49190610b8f565b60405180910390f35b61010760048036038101906101029190610be2565b6103fc565b005b610123600480360381019061011e9190610c90565b6105b1565b005b61013f600480360381019061013a9190610cdd565b610608565b005b61015b60048036038101906101569190610d52565b61068b565b005b610165610742565b60008151905060005b8181101561026b57609e600085815260200190815260200160002083828151811061019c5761019b610d92565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d92565b5b602002602001015160200151815260200185815250609f600085848151811061022d5761022c610d92565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b610279610742565b61028360006107c0565b565b61028d610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610e1e565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610404610742565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a90610e1e565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036104f25780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105715780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516105a493929190610e5c565b60405180910390a1505050565b6105b9610742565b8181606991826105ca9291906110b4565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516105fc9291906111d1565b60405180910390a15050565b610610610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361067f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067690611267565b60405180910390fd5b610688816107c0565b50565b610693610742565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051610736929190611296565b60405180910390a15050565b61074a610886565b73ffffffffffffffffffffffffffffffffffffffff166107686103d2565b73ffffffffffffffffffffffffffffffffffffffff16146107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b59061130b565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6108b5816108a2565b81146108c057600080fd5b50565b6000813590506108d2816108ac565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610926826108dd565b810181811067ffffffffffffffff82111715610945576109446108ee565b5b80604052505050565b600061095861088e565b9050610964828261091d565b919050565b600067ffffffffffffffff821115610984576109836108ee565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109b5576109b461099a565b5b6109bf604061094e565b905060006109cf848285016108c3565b60008301525060206109e3848285016108c3565b60208301525092915050565b6000610a026109fd84610969565b61094e565b90508083825260208201905060408402830185811115610a2557610a24610995565b5b835b81811015610a4e5780610a3a888261099f565b845260208401935050604081019050610a27565b5050509392505050565b600082601f830112610a6d57610a6c6108d8565b5b8135610a7d8482602086016109ef565b91505092915050565b60008060408385031215610a9d57610a9c610898565b5b6000610aab858286016108c3565b925050602083013567ffffffffffffffff811115610acc57610acb61089d565b5b610ad885828601610a58565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b0d82610ae2565b9050919050565b610b1d81610b02565b8114610b2857600080fd5b50565b600081359050610b3a81610b14565b92915050565b60008060408385031215610b5757610b56610898565b5b6000610b65858286016108c3565b9250506020610b7685828601610b2b565b9150509250929050565b610b8981610b02565b82525050565b6000602082019050610ba46000830184610b80565b92915050565b60008115159050919050565b610bbf81610baa565b8114610bca57600080fd5b50565b600081359050610bdc81610bb6565b92915050565b600080600060608486031215610bfb57610bfa610898565b5b6000610c09868287016108c3565b9350506020610c1a86828701610b2b565b9250506040610c2b86828701610bcd565b9150509250925092565b600080fd5b60008083601f840112610c5057610c4f6108d8565b5b8235905067ffffffffffffffff811115610c6d57610c6c610c35565b5b602083019150836001820283011115610c8957610c88610995565b5b9250929050565b60008060208385031215610ca757610ca6610898565b5b600083013567ffffffffffffffff811115610cc557610cc461089d565b5b610cd185828601610c3a565b92509250509250929050565b600060208284031215610cf357610cf2610898565b5b6000610d0184828501610b2b565b91505092915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b610d2f81610d0a565b8114610d3a57600080fd5b50565b600081359050610d4c81610d26565b92915050565b60008060408385031215610d6957610d68610898565b5b6000610d7785828601610d3d565b9250506020610d8885828601610d3d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610e08601683610dc1565b9150610e1382610dd2565b602082019050919050565b60006020820190508181036000830152610e3781610dfb565b9050919050565b610e47816108a2565b82525050565b610e5681610baa565b82525050565b6000606082019050610e716000830186610e3e565b610e7e6020830185610b80565b610e8b6040830184610e4d565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ee557607f821691505b602082108103610ef857610ef7610e9e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610f23565b610f6a8683610f23565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610fb1610fac610fa784610f82565b610f8c565b610f82565b9050919050565b6000819050919050565b610fcb83610f96565b610fdf610fd782610fb8565b848454610f30565b825550505050565b600090565b610ff4610fe7565b610fff818484610fc2565b505050565b5b8181101561102357611018600082610fec565b600181019050611005565b5050565b601f8211156110685761103981610efe565b61104284610f13565b81016020851015611051578190505b61106561105d85610f13565b830182611004565b50505b505050565b600082821c905092915050565b600061108b6000198460080261106d565b1980831691505092915050565b60006110a4838361107a565b9150826002028217905092915050565b6110be8383610e93565b67ffffffffffffffff8111156110d7576110d66108ee565b5b6110e18254610ecd565b6110ec828285611027565b6000601f83116001811461111b5760008415611109578287013590505b6111138582611098565b86555061117b565b601f19841661112986610efe565b60005b828110156111515784890135825560018201915060208501945060208101905061112c565b8683101561116e578489013561116a601f89168261107a565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111b08385611184565b93506111bd838584611195565b6111c6836108dd565b840190509392505050565b600060208201905081810360008301526111ec8184866111a4565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611251602683610dc1565b915061125c826111f5565b604082019050919050565b6000602082019050818103600083015261128081611244565b9050919050565b61129081610d0a565b82525050565b60006040820190506112ab6000830185611287565b6112b86020830184611287565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112f5602083610dc1565b9150611300826112bf565b602082019050919050565b60006020820190508181036000830152611324816112e8565b905091905056fea2646970667358221220cbcf63be5aea212b07add232a2fd1fea21e0a28d565c16921b2afe6d54e9534f64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1361 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x99E3C0B4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xF5326B19 EQ PUSH2 0x141 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x32200882 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA86 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xB40 JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD7 PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x102 SWAP2 SWAP1 PUSH2 0xBE2 JUMP JUMPDEST PUSH2 0x3FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x11E SWAP2 SWAP1 PUSH2 0xC90 JUMP JUMPDEST PUSH2 0x5B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13A SWAP2 SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0xD52 JUMP JUMPDEST PUSH2 0x68B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x165 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x9E PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19C JUMPI PUSH2 0x19B PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x201 JUMPI PUSH2 0x200 PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x22D JUMPI PUSH2 0x22C PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x16E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x279 PUSH2 0x742 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x0 PUSH2 0x7C0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x365 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x3CE JUMPI DUP1 PUSH1 0x68 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x404 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x473 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46A SWAP1 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x4F2 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x571 JUMPI DUP1 PUSH1 0x9D PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x5A4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x5B9 PUSH2 0x742 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x69 SWAP2 DUP3 PUSH2 0x5CA SWAP3 SWAP2 SWAP1 PUSH2 0x10B4 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x5FC SWAP3 SWAP2 SWAP1 PUSH2 0x11D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x610 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x676 SWAP1 PUSH2 0x1267 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x688 DUP2 PUSH2 0x7C0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x693 PUSH2 0x742 JUMP JUMPDEST DUP2 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xE38926C5806B98A6FD00C5D791A36FBD196537FE48D11C45C9F1D0ACD1EA74DF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x736 SWAP3 SWAP2 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x74A PUSH2 0x886 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x768 PUSH2 0x3D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7B5 SWAP1 PUSH2 0x130B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8B5 DUP2 PUSH2 0x8A2 JUMP JUMPDEST DUP2 EQ PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8D2 DUP2 PUSH2 0x8AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x926 DUP3 PUSH2 0x8DD JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x945 JUMPI PUSH2 0x944 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x958 PUSH2 0x88E JUMP JUMPDEST SWAP1 POP PUSH2 0x964 DUP3 DUP3 PUSH2 0x91D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x984 JUMPI PUSH2 0x983 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9B5 JUMPI PUSH2 0x9B4 PUSH2 0x99A JUMP JUMPDEST JUMPDEST PUSH2 0x9BF PUSH1 0x40 PUSH2 0x94E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9CF DUP5 DUP3 DUP6 ADD PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x9E3 DUP5 DUP3 DUP6 ADD PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA02 PUSH2 0x9FD DUP5 PUSH2 0x969 JUMP JUMPDEST PUSH2 0x94E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA25 JUMPI PUSH2 0xA24 PUSH2 0x995 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA4E JUMPI DUP1 PUSH2 0xA3A DUP9 DUP3 PUSH2 0x99F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0xA27 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA6D JUMPI PUSH2 0xA6C PUSH2 0x8D8 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA7D DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9EF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA9D JUMPI PUSH2 0xA9C PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAAB DUP6 DUP3 DUP7 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xACC JUMPI PUSH2 0xACB PUSH2 0x89D JUMP JUMPDEST JUMPDEST PUSH2 0xAD8 DUP6 DUP3 DUP7 ADD PUSH2 0xA58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB0D DUP3 PUSH2 0xAE2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB1D DUP2 PUSH2 0xB02 JUMP JUMPDEST DUP2 EQ PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB3A DUP2 PUSH2 0xB14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB57 JUMPI PUSH2 0xB56 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB65 DUP6 DUP3 DUP7 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB76 DUP6 DUP3 DUP7 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB89 DUP2 PUSH2 0xB02 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB80 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBBF DUP2 PUSH2 0xBAA JUMP JUMPDEST DUP2 EQ PUSH2 0xBCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBDC DUP2 PUSH2 0xBB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBFB JUMPI PUSH2 0xBFA PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC09 DUP7 DUP3 DUP8 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC1A DUP7 DUP3 DUP8 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xC2B DUP7 DUP3 DUP8 ADD PUSH2 0xBCD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC50 JUMPI PUSH2 0xC4F PUSH2 0x8D8 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC6D JUMPI PUSH2 0xC6C PUSH2 0xC35 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xC89 JUMPI PUSH2 0xC88 PUSH2 0x995 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCA7 JUMPI PUSH2 0xCA6 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCC5 JUMPI PUSH2 0xCC4 PUSH2 0x89D JUMP JUMPDEST JUMPDEST PUSH2 0xCD1 DUP6 DUP3 DUP7 ADD PUSH2 0xC3A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCF3 JUMPI PUSH2 0xCF2 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD01 DUP5 DUP3 DUP6 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD2F DUP2 PUSH2 0xD0A JUMP JUMPDEST DUP2 EQ PUSH2 0xD3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD4C DUP2 PUSH2 0xD26 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD69 JUMPI PUSH2 0xD68 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD77 DUP6 DUP3 DUP7 ADD PUSH2 0xD3D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xD88 DUP6 DUP3 DUP7 ADD PUSH2 0xD3D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE08 PUSH1 0x16 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0xE13 DUP3 PUSH2 0xDD2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE37 DUP2 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE47 DUP2 PUSH2 0x8A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE56 DUP2 PUSH2 0xBAA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xE71 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xE3E JUMP JUMPDEST PUSH2 0xE7E PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0xE8B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE4D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEE5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEF8 JUMPI PUSH2 0xEF7 PUSH2 0xE9E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0xF6A DUP7 DUP4 PUSH2 0xF23 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB1 PUSH2 0xFAC PUSH2 0xFA7 DUP5 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0xF8C JUMP JUMPDEST PUSH2 0xF82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFCB DUP4 PUSH2 0xF96 JUMP JUMPDEST PUSH2 0xFDF PUSH2 0xFD7 DUP3 PUSH2 0xFB8 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xF30 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFF4 PUSH2 0xFE7 JUMP JUMPDEST PUSH2 0xFFF DUP2 DUP5 DUP5 PUSH2 0xFC2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1023 JUMPI PUSH2 0x1018 PUSH1 0x0 DUP3 PUSH2 0xFEC JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1005 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1068 JUMPI PUSH2 0x1039 DUP2 PUSH2 0xEFE JUMP JUMPDEST PUSH2 0x1042 DUP5 PUSH2 0xF13 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1051 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1065 PUSH2 0x105D DUP6 PUSH2 0xF13 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x1004 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x106D JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10A4 DUP4 DUP4 PUSH2 0x107A JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10BE DUP4 DUP4 PUSH2 0xE93 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10D7 JUMPI PUSH2 0x10D6 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST PUSH2 0x10E1 DUP3 SLOAD PUSH2 0xECD JUMP JUMPDEST PUSH2 0x10EC DUP3 DUP3 DUP6 PUSH2 0x1027 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x111B JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x1109 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x1113 DUP6 DUP3 PUSH2 0x1098 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x117B JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x1129 DUP7 PUSH2 0xEFE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1151 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x112C JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x116E JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x116A PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x107A JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B0 DUP4 DUP6 PUSH2 0x1184 JUMP JUMPDEST SWAP4 POP PUSH2 0x11BD DUP4 DUP6 DUP5 PUSH2 0x1195 JUMP JUMPDEST PUSH2 0x11C6 DUP4 PUSH2 0x8DD JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11EC DUP2 DUP5 DUP7 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1251 PUSH1 0x26 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0x125C DUP3 PUSH2 0x11F5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1280 DUP2 PUSH2 0x1244 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1290 DUP2 PUSH2 0xD0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x12AB PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x12B8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1287 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12F5 PUSH1 0x20 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0x1300 DUP3 PUSH2 0x12BF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1324 DUP2 PUSH2 0x12E8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xCF PUSH4 0xBE5AEA21 0x2B SMOD 0xAD 0xD2 ORIGIN LOG2 REVERT 0x1F 0xEA 0x21 0xE0 LOG2 DUP14 JUMP 0x5C AND SWAP3 SHL 0x2A INVALID PUSH14 0x54E9534F64736F6C634300081200 CALLER ","sourceMap":"139:2924:13:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkOwner_68":{"entryPoint":1858,"id":68,"parameterSlots":0,"returnSlots":0},"@_msgSender_1147":{"entryPoint":2182,"id":1147,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_125":{"entryPoint":1984,"id":125,"parameterSlots":1,"returnSlots":0},"@owner_54":{"entryPoint":978,"id":54,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_82":{"entryPoint":625,"id":82,"parameterSlots":0,"returnSlots":0},"@setSupportedInstitutions_3788":{"entryPoint":349,"id":3788,"parameterSlots":2,"returnSlots":0},"@settingManagerBool_3734":{"entryPoint":1020,"id":3734,"parameterSlots":3,"returnSlots":0},"@transferOwnership_105":{"entryPoint":1544,"id":105,"parameterSlots":1,"returnSlots":0},"@updateProtocolAddresses_3847":{"entryPoint":645,"id":3847,"parameterSlots":2,"returnSlots":0},"@updateProtocolAggregator_3863":{"entryPoint":1457,"id":3863,"parameterSlots":2,"returnSlots":0},"@updateProtocolFees_3811":{"entryPoint":1675,"id":3811,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":2543,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2859,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":2648,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":3021,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":2243,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":3130,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_struct$_Institution_$3624_memory_ptr":{"entryPoint":2463,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint128":{"entryPoint":3389,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3293,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":2880,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_addresst_bool":{"entryPoint":3042,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":2694,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":3216,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint128t_uint128":{"entryPoint":3410,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":2944,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":3661,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":3646,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":4516,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":4676,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack":{"entryPoint":3579,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":4840,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint128_to_t_uint128_fromStack":{"entryPoint":4743,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":2959,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed":{"entryPoint":3676,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4561,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4711,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3614,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4875,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed":{"entryPoint":4758,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":2382,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":2190,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr":{"entryPoint":2409,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_bytes_storage":{"entryPoint":3838,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_calldata_ptr":{"entryPoint":3731,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":4484,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":3521,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_bytes_storage":{"entryPoint":4135,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":2818,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":2986,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":2210,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint128":{"entryPoint":3338,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2786,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":3970,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":4100,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_uint256_to_t_uint256":{"entryPoint":3990,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage":{"entryPoint":4276,"id":null,"parameterSlots":3,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":4501,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":3859,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":3789,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":4248,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":2333,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":3980,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":4218,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x22":{"entryPoint":3742,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3474,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2286,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":4024,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":3125,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2264,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":2458,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2453,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":2205,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2200,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2269,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":3875,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":4205,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":4076,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":4597,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4":{"entryPoint":3538,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":4799,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":3888,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":4034,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2836,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":2998,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":2220,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint128":{"entryPoint":3366,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":4071,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:20242:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"379:32:15","statements":[{"nodeType":"YulAssignment","src":"389:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:15"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:15","type":""}],"src":"334:77:15"},{"body":{"nodeType":"YulBlock","src":"460:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:15"},"nodeType":"YulFunctionCall","src":"519:12:15"},"nodeType":"YulExpressionStatement","src":"519:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"490:17:15"},"nodeType":"YulFunctionCall","src":"490:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:15"},"nodeType":"YulFunctionCall","src":"480:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:15"},"nodeType":"YulFunctionCall","src":"473:43:15"},"nodeType":"YulIf","src":"470:63:15"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:15","type":""}],"src":"417:122:15"},{"body":{"nodeType":"YulBlock","src":"597:87:15","statements":[{"nodeType":"YulAssignment","src":"607:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:15"},"nodeType":"YulFunctionCall","src":"616:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:15"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"645:26:15"},"nodeType":"YulFunctionCall","src":"645:33:15"},"nodeType":"YulExpressionStatement","src":"645:33:15"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:15","type":""}],"src":"545:139:15"},{"body":{"nodeType":"YulBlock","src":"779:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"796:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"799:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"789:6:15"},"nodeType":"YulFunctionCall","src":"789:12:15"},"nodeType":"YulExpressionStatement","src":"789:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"690:117:15"},{"body":{"nodeType":"YulBlock","src":"861:54:15","statements":[{"nodeType":"YulAssignment","src":"871:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"889:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"896:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"885:3:15"},"nodeType":"YulFunctionCall","src":"885:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"905:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"901:3:15"},"nodeType":"YulFunctionCall","src":"901:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"881:3:15"},"nodeType":"YulFunctionCall","src":"881:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"871:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"844:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"854:6:15","type":""}],"src":"813:102:15"},{"body":{"nodeType":"YulBlock","src":"949:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"966:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"969:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"959:6:15"},"nodeType":"YulFunctionCall","src":"959:88:15"},"nodeType":"YulExpressionStatement","src":"959:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1063:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1066:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1056:6:15"},"nodeType":"YulFunctionCall","src":"1056:15:15"},"nodeType":"YulExpressionStatement","src":"1056:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1087:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1090:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1080:6:15"},"nodeType":"YulFunctionCall","src":"1080:15:15"},"nodeType":"YulExpressionStatement","src":"1080:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"921:180:15"},{"body":{"nodeType":"YulBlock","src":"1150:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1160:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1182:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1212:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1190:21:15"},"nodeType":"YulFunctionCall","src":"1190:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1178:3:15"},"nodeType":"YulFunctionCall","src":"1178:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1164:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1329:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1331:16:15"},"nodeType":"YulFunctionCall","src":"1331:18:15"},"nodeType":"YulExpressionStatement","src":"1331:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1272:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"1284:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1269:2:15"},"nodeType":"YulFunctionCall","src":"1269:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1308:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1320:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1305:2:15"},"nodeType":"YulFunctionCall","src":"1305:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1266:2:15"},"nodeType":"YulFunctionCall","src":"1266:62:15"},"nodeType":"YulIf","src":"1263:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1367:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1371:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1360:6:15"},"nodeType":"YulFunctionCall","src":"1360:22:15"},"nodeType":"YulExpressionStatement","src":"1360:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1136:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"1144:4:15","type":""}],"src":"1107:281:15"},{"body":{"nodeType":"YulBlock","src":"1435:88:15","statements":[{"nodeType":"YulAssignment","src":"1445:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1455:18:15"},"nodeType":"YulFunctionCall","src":"1455:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1445:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1504:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"1512:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1484:19:15"},"nodeType":"YulFunctionCall","src":"1484:33:15"},"nodeType":"YulExpressionStatement","src":"1484:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1419:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1428:6:15","type":""}],"src":"1394:129:15"},{"body":{"nodeType":"YulBlock","src":"1640:229:15","statements":[{"body":{"nodeType":"YulBlock","src":"1745:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1747:16:15"},"nodeType":"YulFunctionCall","src":"1747:18:15"},"nodeType":"YulExpressionStatement","src":"1747:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1717:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1725:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1714:2:15"},"nodeType":"YulFunctionCall","src":"1714:30:15"},"nodeType":"YulIf","src":"1711:56:15"},{"nodeType":"YulAssignment","src":"1777:25:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1789:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1797:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1785:3:15"},"nodeType":"YulFunctionCall","src":"1785:17:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1777:4:15"}]},{"nodeType":"YulAssignment","src":"1839:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1851:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"1857:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1847:3:15"},"nodeType":"YulFunctionCall","src":"1847:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1839:4:15"}]}]},"name":"array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1624:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1635:4:15","type":""}],"src":"1529:340:15"},{"body":{"nodeType":"YulBlock","src":"1964:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1981:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1984:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1974:6:15"},"nodeType":"YulFunctionCall","src":"1974:12:15"},"nodeType":"YulExpressionStatement","src":"1974:12:15"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"1875:117:15"},{"body":{"nodeType":"YulBlock","src":"2087:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2104:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2107:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2097:6:15"},"nodeType":"YulFunctionCall","src":"2097:12:15"},"nodeType":"YulExpressionStatement","src":"2097:12:15"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"1998:117:15"},{"body":{"nodeType":"YulBlock","src":"2210:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2227:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2230:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2220:6:15"},"nodeType":"YulFunctionCall","src":"2220:12:15"},"nodeType":"YulExpressionStatement","src":"2220:12:15"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"2121:117:15"},{"body":{"nodeType":"YulBlock","src":"2377:494:15","statements":[{"body":{"nodeType":"YulBlock","src":"2421:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"2423:77:15"},"nodeType":"YulFunctionCall","src":"2423:79:15"},"nodeType":"YulExpressionStatement","src":"2423:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"2398:3:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"2403:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2394:3:15"},"nodeType":"YulFunctionCall","src":"2394:19:15"},{"kind":"number","nodeType":"YulLiteral","src":"2415:4:15","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2390:3:15"},"nodeType":"YulFunctionCall","src":"2390:30:15"},"nodeType":"YulIf","src":"2387:117:15"},{"nodeType":"YulAssignment","src":"2513:30:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2538:4:15","type":"","value":"0x40"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2522:15:15"},"nodeType":"YulFunctionCall","src":"2522:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2513:5:15"}]},{"nodeType":"YulBlock","src":"2553:150:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2588:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"2602:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2592:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2628:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2635:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2624:3:15"},"nodeType":"YulFunctionCall","src":"2624:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2667:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"2678:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2663:3:15"},"nodeType":"YulFunctionCall","src":"2663:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"2687:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2642:20:15"},"nodeType":"YulFunctionCall","src":"2642:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2617:6:15"},"nodeType":"YulFunctionCall","src":"2617:75:15"},"nodeType":"YulExpressionStatement","src":"2617:75:15"}]},{"nodeType":"YulBlock","src":"2713:151:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2748:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"2762:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2752:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2789:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2796:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2785:3:15"},"nodeType":"YulFunctionCall","src":"2785:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2828:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"2839:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2824:3:15"},"nodeType":"YulFunctionCall","src":"2824:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"2848:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2803:20:15"},"nodeType":"YulFunctionCall","src":"2803:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2778:6:15"},"nodeType":"YulFunctionCall","src":"2778:75:15"},"nodeType":"YulExpressionStatement","src":"2778:75:15"}]}]},"name":"abi_decode_t_struct$_Institution_$3624_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2352:9:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"2363:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2371:5:15","type":""}],"src":"2293:578:15"},{"body":{"nodeType":"YulBlock","src":"3059:666:15","statements":[{"nodeType":"YulAssignment","src":"3069:119:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3180:6:15"}],"functionName":{"name":"array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3094:85:15"},"nodeType":"YulFunctionCall","src":"3094:93:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3078:15:15"},"nodeType":"YulFunctionCall","src":"3078:110:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3069:5:15"}]},{"nodeType":"YulVariableDeclaration","src":"3197:16:15","value":{"name":"array","nodeType":"YulIdentifier","src":"3208:5:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"3201:3:15","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3230:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"3237:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3223:6:15"},"nodeType":"YulFunctionCall","src":"3223:21:15"},"nodeType":"YulExpressionStatement","src":"3223:21:15"},{"nodeType":"YulAssignment","src":"3253:23:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3264:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"3271:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3260:3:15"},"nodeType":"YulFunctionCall","src":"3260:16:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3253:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"3286:44:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3304:6:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3316:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3324:4:15","type":"","value":"0x40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3312:3:15"},"nodeType":"YulFunctionCall","src":"3312:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3300:3:15"},"nodeType":"YulFunctionCall","src":"3300:30:15"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"3290:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3358:103:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"3372:77:15"},"nodeType":"YulFunctionCall","src":"3372:79:15"},"nodeType":"YulExpressionStatement","src":"3372:79:15"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"3345:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"3353:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3342:2:15"},"nodeType":"YulFunctionCall","src":"3342:15:15"},"nodeType":"YulIf","src":"3339:122:15"},{"body":{"nodeType":"YulBlock","src":"3546:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3561:21:15","value":{"name":"src","nodeType":"YulIdentifier","src":"3579:3:15"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"3565:10:15","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3603:3:15"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"3658:10:15"},{"name":"end","nodeType":"YulIdentifier","src":"3670:3:15"}],"functionName":{"name":"abi_decode_t_struct$_Institution_$3624_memory_ptr","nodeType":"YulIdentifier","src":"3608:49:15"},"nodeType":"YulFunctionCall","src":"3608:66:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3596:6:15"},"nodeType":"YulFunctionCall","src":"3596:79:15"},"nodeType":"YulExpressionStatement","src":"3596:79:15"},{"nodeType":"YulAssignment","src":"3688:21:15","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3699:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3704:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3695:3:15"},"nodeType":"YulFunctionCall","src":"3695:14:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3688:3:15"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3499:3:15"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3504:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3496:2:15"},"nodeType":"YulFunctionCall","src":"3496:15:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3512:25:15","statements":[{"nodeType":"YulAssignment","src":"3514:21:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3525:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3530:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:15"},"nodeType":"YulFunctionCall","src":"3521:14:15"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3514:3:15"}]}]},"pre":{"nodeType":"YulBlock","src":"3474:21:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3476:17:15","value":{"name":"offset","nodeType":"YulIdentifier","src":"3487:6:15"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3480:3:15","type":""}]}]},"src":"3470:249:15"}]},"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3029:6:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"3037:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3045:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3053:5:15","type":""}],"src":"2928:797:15"},{"body":{"nodeType":"YulBlock","src":"3888:322:15","statements":[{"body":{"nodeType":"YulBlock","src":"3937:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"3939:77:15"},"nodeType":"YulFunctionCall","src":"3939:79:15"},"nodeType":"YulExpressionStatement","src":"3939:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3916:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3924:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3912:3:15"},"nodeType":"YulFunctionCall","src":"3912:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"3931:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3908:3:15"},"nodeType":"YulFunctionCall","src":"3908:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3901:6:15"},"nodeType":"YulFunctionCall","src":"3901:35:15"},"nodeType":"YulIf","src":"3898:122:15"},{"nodeType":"YulVariableDeclaration","src":"4029:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4056:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4043:12:15"},"nodeType":"YulFunctionCall","src":"4043:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4033:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4072:132:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4177:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4185:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:15"},"nodeType":"YulFunctionCall","src":"4173:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"4192:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"4200:3:15"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4081:91:15"},"nodeType":"YulFunctionCall","src":"4081:123:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"4072:5:15"}]}]},"name":"abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3866:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3874:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3882:5:15","type":""}],"src":"3782:428:15"},{"body":{"nodeType":"YulBlock","src":"4353:605:15","statements":[{"body":{"nodeType":"YulBlock","src":"4399:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4401:77:15"},"nodeType":"YulFunctionCall","src":"4401:79:15"},"nodeType":"YulExpressionStatement","src":"4401:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4374:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4383:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4370:3:15"},"nodeType":"YulFunctionCall","src":"4370:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"4395:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4366:3:15"},"nodeType":"YulFunctionCall","src":"4366:32:15"},"nodeType":"YulIf","src":"4363:119:15"},{"nodeType":"YulBlock","src":"4492:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4507:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4521:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4511:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4536:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4582:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4567:3:15"},"nodeType":"YulFunctionCall","src":"4567:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4591:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"4546:20:15"},"nodeType":"YulFunctionCall","src":"4546:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4536:6:15"}]}]},{"nodeType":"YulBlock","src":"4619:332:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4634:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4665:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4676:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4661:3:15"},"nodeType":"YulFunctionCall","src":"4661:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4648:12:15"},"nodeType":"YulFunctionCall","src":"4648:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4638:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"4727:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4729:77:15"},"nodeType":"YulFunctionCall","src":"4729:79:15"},"nodeType":"YulExpressionStatement","src":"4729:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4699:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4707:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4696:2:15"},"nodeType":"YulFunctionCall","src":"4696:30:15"},"nodeType":"YulIf","src":"4693:117:15"},{"nodeType":"YulAssignment","src":"4824:117:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4913:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4924:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4909:3:15"},"nodeType":"YulFunctionCall","src":"4909:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4933:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4834:74:15"},"nodeType":"YulFunctionCall","src":"4834:107:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4824:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4315:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4326:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4338:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4346:6:15","type":""}],"src":"4216:742:15"},{"body":{"nodeType":"YulBlock","src":"5009:81:15","statements":[{"nodeType":"YulAssignment","src":"5019:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5034:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5041:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5030:3:15"},"nodeType":"YulFunctionCall","src":"5030:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5019:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4991:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5001:7:15","type":""}],"src":"4964:126:15"},{"body":{"nodeType":"YulBlock","src":"5141:51:15","statements":[{"nodeType":"YulAssignment","src":"5151:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5180:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5162:17:15"},"nodeType":"YulFunctionCall","src":"5162:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5151:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5123:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5133:7:15","type":""}],"src":"5096:96:15"},{"body":{"nodeType":"YulBlock","src":"5241:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"5298:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5307:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5310:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5300:6:15"},"nodeType":"YulFunctionCall","src":"5300:12:15"},"nodeType":"YulExpressionStatement","src":"5300:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5264:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5289:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5271:17:15"},"nodeType":"YulFunctionCall","src":"5271:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5261:2:15"},"nodeType":"YulFunctionCall","src":"5261:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5254:6:15"},"nodeType":"YulFunctionCall","src":"5254:43:15"},"nodeType":"YulIf","src":"5251:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5234:5:15","type":""}],"src":"5198:122:15"},{"body":{"nodeType":"YulBlock","src":"5378:87:15","statements":[{"nodeType":"YulAssignment","src":"5388:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5410:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5397:12:15"},"nodeType":"YulFunctionCall","src":"5397:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5388:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5453:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5426:26:15"},"nodeType":"YulFunctionCall","src":"5426:33:15"},"nodeType":"YulExpressionStatement","src":"5426:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5356:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5364:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5372:5:15","type":""}],"src":"5326:139:15"},{"body":{"nodeType":"YulBlock","src":"5554:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"5600:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5602:77:15"},"nodeType":"YulFunctionCall","src":"5602:79:15"},"nodeType":"YulExpressionStatement","src":"5602:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5575:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"5584:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5571:3:15"},"nodeType":"YulFunctionCall","src":"5571:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"5596:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5567:3:15"},"nodeType":"YulFunctionCall","src":"5567:32:15"},"nodeType":"YulIf","src":"5564:119:15"},{"nodeType":"YulBlock","src":"5693:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5708:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5722:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5712:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5737:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5772:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5783:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5768:3:15"},"nodeType":"YulFunctionCall","src":"5768:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5792:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"5747:20:15"},"nodeType":"YulFunctionCall","src":"5747:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5737:6:15"}]}]},{"nodeType":"YulBlock","src":"5820:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5835:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5849:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5839:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5865:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5900:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5911:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5896:3:15"},"nodeType":"YulFunctionCall","src":"5896:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5920:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5875:20:15"},"nodeType":"YulFunctionCall","src":"5875:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5865:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5516:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5527:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5539:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5547:6:15","type":""}],"src":"5471:474:15"},{"body":{"nodeType":"YulBlock","src":"6016:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6033:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6056:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6038:17:15"},"nodeType":"YulFunctionCall","src":"6038:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6026:6:15"},"nodeType":"YulFunctionCall","src":"6026:37:15"},"nodeType":"YulExpressionStatement","src":"6026:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6004:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6011:3:15","type":""}],"src":"5951:118:15"},{"body":{"nodeType":"YulBlock","src":"6173:124:15","statements":[{"nodeType":"YulAssignment","src":"6183:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6195:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6206:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6191:3:15"},"nodeType":"YulFunctionCall","src":"6191:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6183:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6263:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6276:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6287:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6272:3:15"},"nodeType":"YulFunctionCall","src":"6272:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"6219:43:15"},"nodeType":"YulFunctionCall","src":"6219:71:15"},"nodeType":"YulExpressionStatement","src":"6219:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6145:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:15","type":""}],"src":"6075:222:15"},{"body":{"nodeType":"YulBlock","src":"6345:48:15","statements":[{"nodeType":"YulAssignment","src":"6355:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6380:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6373:6:15"},"nodeType":"YulFunctionCall","src":"6373:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6366:6:15"},"nodeType":"YulFunctionCall","src":"6366:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6355:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6327:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6337:7:15","type":""}],"src":"6303:90:15"},{"body":{"nodeType":"YulBlock","src":"6439:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"6493:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6502:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6505:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6495:6:15"},"nodeType":"YulFunctionCall","src":"6495:12:15"},"nodeType":"YulExpressionStatement","src":"6495:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6462:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6484:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6469:14:15"},"nodeType":"YulFunctionCall","src":"6469:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6459:2:15"},"nodeType":"YulFunctionCall","src":"6459:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6452:6:15"},"nodeType":"YulFunctionCall","src":"6452:40:15"},"nodeType":"YulIf","src":"6449:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6432:5:15","type":""}],"src":"6399:116:15"},{"body":{"nodeType":"YulBlock","src":"6570:84:15","statements":[{"nodeType":"YulAssignment","src":"6580:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6602:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6589:12:15"},"nodeType":"YulFunctionCall","src":"6589:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6580:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6642:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6618:23:15"},"nodeType":"YulFunctionCall","src":"6618:30:15"},"nodeType":"YulExpressionStatement","src":"6618:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6548:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6556:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6564:5:15","type":""}],"src":"6521:133:15"},{"body":{"nodeType":"YulBlock","src":"6757:516:15","statements":[{"body":{"nodeType":"YulBlock","src":"6803:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6805:77:15"},"nodeType":"YulFunctionCall","src":"6805:79:15"},"nodeType":"YulExpressionStatement","src":"6805:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6778:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6787:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6774:3:15"},"nodeType":"YulFunctionCall","src":"6774:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6799:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6770:3:15"},"nodeType":"YulFunctionCall","src":"6770:32:15"},"nodeType":"YulIf","src":"6767:119:15"},{"nodeType":"YulBlock","src":"6896:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6911:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6925:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6915:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6940:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6975:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6986:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6971:3:15"},"nodeType":"YulFunctionCall","src":"6971:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6995:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"6950:20:15"},"nodeType":"YulFunctionCall","src":"6950:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6940:6:15"}]}]},{"nodeType":"YulBlock","src":"7023:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7038:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7052:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7042:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7068:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7103:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7114:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7099:3:15"},"nodeType":"YulFunctionCall","src":"7099:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7123:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7078:20:15"},"nodeType":"YulFunctionCall","src":"7078:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7068:6:15"}]}]},{"nodeType":"YulBlock","src":"7151:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7166:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7180:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7170:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7196:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7228:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7239:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7224:3:15"},"nodeType":"YulFunctionCall","src":"7224:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7248:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"7206:17:15"},"nodeType":"YulFunctionCall","src":"7206:50:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7196:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6711:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6722:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6734:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6742:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6750:6:15","type":""}],"src":"6660:613:15"},{"body":{"nodeType":"YulBlock","src":"7368:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7385:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7388:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7378:6:15"},"nodeType":"YulFunctionCall","src":"7378:12:15"},"nodeType":"YulExpressionStatement","src":"7378:12:15"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"7279:117:15"},{"body":{"nodeType":"YulBlock","src":"7489:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"7538:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"7540:77:15"},"nodeType":"YulFunctionCall","src":"7540:79:15"},"nodeType":"YulExpressionStatement","src":"7540:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7517:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7525:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7513:3:15"},"nodeType":"YulFunctionCall","src":"7513:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"7532:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7509:3:15"},"nodeType":"YulFunctionCall","src":"7509:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7502:6:15"},"nodeType":"YulFunctionCall","src":"7502:35:15"},"nodeType":"YulIf","src":"7499:122:15"},{"nodeType":"YulAssignment","src":"7630:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7653:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7640:12:15"},"nodeType":"YulFunctionCall","src":"7640:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"7630:6:15"}]},{"body":{"nodeType":"YulBlock","src":"7703:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"7705:77:15"},"nodeType":"YulFunctionCall","src":"7705:79:15"},"nodeType":"YulExpressionStatement","src":"7705:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7675:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7683:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7672:2:15"},"nodeType":"YulFunctionCall","src":"7672:30:15"},"nodeType":"YulIf","src":"7669:117:15"},{"nodeType":"YulAssignment","src":"7795:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7811:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7819:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7807:3:15"},"nodeType":"YulFunctionCall","src":"7807:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"7795:8:15"}]},{"body":{"nodeType":"YulBlock","src":"7878:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"7880:77:15"},"nodeType":"YulFunctionCall","src":"7880:79:15"},"nodeType":"YulExpressionStatement","src":"7880:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"7843:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7857:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7865:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7853:3:15"},"nodeType":"YulFunctionCall","src":"7853:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7839:3:15"},"nodeType":"YulFunctionCall","src":"7839:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"7873:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7836:2:15"},"nodeType":"YulFunctionCall","src":"7836:41:15"},"nodeType":"YulIf","src":"7833:128:15"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7456:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"7464:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"7472:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"7482:6:15","type":""}],"src":"7415:552:15"},{"body":{"nodeType":"YulBlock","src":"8058:442:15","statements":[{"body":{"nodeType":"YulBlock","src":"8104:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8106:77:15"},"nodeType":"YulFunctionCall","src":"8106:79:15"},"nodeType":"YulExpressionStatement","src":"8106:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8079:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"8088:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8075:3:15"},"nodeType":"YulFunctionCall","src":"8075:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"8100:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8071:3:15"},"nodeType":"YulFunctionCall","src":"8071:32:15"},"nodeType":"YulIf","src":"8068:119:15"},{"nodeType":"YulBlock","src":"8197:296:15","statements":[{"nodeType":"YulVariableDeclaration","src":"8212:45:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8243:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8254:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8239:3:15"},"nodeType":"YulFunctionCall","src":"8239:17:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8226:12:15"},"nodeType":"YulFunctionCall","src":"8226:31:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8216:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"8304:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"8306:77:15"},"nodeType":"YulFunctionCall","src":"8306:79:15"},"nodeType":"YulExpressionStatement","src":"8306:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8276:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8284:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8273:2:15"},"nodeType":"YulFunctionCall","src":"8273:30:15"},"nodeType":"YulIf","src":"8270:117:15"},{"nodeType":"YulAssignment","src":"8401:82:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8455:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"8466:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8451:3:15"},"nodeType":"YulFunctionCall","src":"8451:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8475:7:15"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"8419:31:15"},"nodeType":"YulFunctionCall","src":"8419:64:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8401:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"8409:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8020:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8031:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8043:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8051:6:15","type":""}],"src":"7973:527:15"},{"body":{"nodeType":"YulBlock","src":"8572:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"8618:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8620:77:15"},"nodeType":"YulFunctionCall","src":"8620:79:15"},"nodeType":"YulExpressionStatement","src":"8620:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8593:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"8602:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8589:3:15"},"nodeType":"YulFunctionCall","src":"8589:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"8614:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8585:3:15"},"nodeType":"YulFunctionCall","src":"8585:32:15"},"nodeType":"YulIf","src":"8582:119:15"},{"nodeType":"YulBlock","src":"8711:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"8726:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"8740:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8730:6:15","type":""}]},{"nodeType":"YulAssignment","src":"8755:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8790:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"8801:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8786:3:15"},"nodeType":"YulFunctionCall","src":"8786:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8810:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"8765:20:15"},"nodeType":"YulFunctionCall","src":"8765:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8755:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8542:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8553:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8565:6:15","type":""}],"src":"8506:329:15"},{"body":{"nodeType":"YulBlock","src":"8886:73:15","statements":[{"nodeType":"YulAssignment","src":"8896:57:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8911:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"8918:34:15","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8907:3:15"},"nodeType":"YulFunctionCall","src":"8907:46:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8896:7:15"}]}]},"name":"cleanup_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8868:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8878:7:15","type":""}],"src":"8841:118:15"},{"body":{"nodeType":"YulBlock","src":"9008:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"9065:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9074:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9077:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9067:6:15"},"nodeType":"YulFunctionCall","src":"9067:12:15"},"nodeType":"YulExpressionStatement","src":"9067:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9031:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9056:5:15"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"9038:17:15"},"nodeType":"YulFunctionCall","src":"9038:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9028:2:15"},"nodeType":"YulFunctionCall","src":"9028:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9021:6:15"},"nodeType":"YulFunctionCall","src":"9021:43:15"},"nodeType":"YulIf","src":"9018:63:15"}]},"name":"validator_revert_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9001:5:15","type":""}],"src":"8965:122:15"},{"body":{"nodeType":"YulBlock","src":"9145:87:15","statements":[{"nodeType":"YulAssignment","src":"9155:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9177:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9164:12:15"},"nodeType":"YulFunctionCall","src":"9164:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"9155:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9220:5:15"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"9193:26:15"},"nodeType":"YulFunctionCall","src":"9193:33:15"},"nodeType":"YulExpressionStatement","src":"9193:33:15"}]},"name":"abi_decode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9123:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"9131:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"9139:5:15","type":""}],"src":"9093:139:15"},{"body":{"nodeType":"YulBlock","src":"9321:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"9367:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9369:77:15"},"nodeType":"YulFunctionCall","src":"9369:79:15"},"nodeType":"YulExpressionStatement","src":"9369:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9342:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"9351:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9338:3:15"},"nodeType":"YulFunctionCall","src":"9338:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"9363:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9334:3:15"},"nodeType":"YulFunctionCall","src":"9334:32:15"},"nodeType":"YulIf","src":"9331:119:15"},{"nodeType":"YulBlock","src":"9460:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9475:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9489:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9479:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9504:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9539:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9550:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9535:3:15"},"nodeType":"YulFunctionCall","src":"9535:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9559:7:15"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"9514:20:15"},"nodeType":"YulFunctionCall","src":"9514:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9504:6:15"}]}]},{"nodeType":"YulBlock","src":"9587:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9602:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9616:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9606:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9632:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9667:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9678:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9663:3:15"},"nodeType":"YulFunctionCall","src":"9663:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9687:7:15"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"9642:20:15"},"nodeType":"YulFunctionCall","src":"9642:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9632:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint128t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9283:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9294:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9306:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9314:6:15","type":""}],"src":"9238:474:15"},{"body":{"nodeType":"YulBlock","src":"9746:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9763:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9766:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9756:6:15"},"nodeType":"YulFunctionCall","src":"9756:88:15"},"nodeType":"YulExpressionStatement","src":"9756:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9860:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9863:4:15","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9853:6:15"},"nodeType":"YulFunctionCall","src":"9853:15:15"},"nodeType":"YulExpressionStatement","src":"9853:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9884:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9887:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9877:6:15"},"nodeType":"YulFunctionCall","src":"9877:15:15"},"nodeType":"YulExpressionStatement","src":"9877:15:15"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9718:180:15"},{"body":{"nodeType":"YulBlock","src":"10000:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10017:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"10022:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10010:6:15"},"nodeType":"YulFunctionCall","src":"10010:19:15"},"nodeType":"YulExpressionStatement","src":"10010:19:15"},{"nodeType":"YulAssignment","src":"10038:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10057:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10062:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10053:3:15"},"nodeType":"YulFunctionCall","src":"10053:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"10038:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9972:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"9977:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"9988:11:15","type":""}],"src":"9904:169:15"},{"body":{"nodeType":"YulBlock","src":"10185:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10207:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"10215:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10203:3:15"},"nodeType":"YulFunctionCall","src":"10203:14:15"},{"hexValue":"50617963726573743a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"10219:24:15","type":"","value":"Paycrest: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10196:6:15"},"nodeType":"YulFunctionCall","src":"10196:48:15"},"nodeType":"YulExpressionStatement","src":"10196:48:15"}]},"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"10177:6:15","type":""}],"src":"10079:172:15"},{"body":{"nodeType":"YulBlock","src":"10403:220:15","statements":[{"nodeType":"YulAssignment","src":"10413:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10479:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10484:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10420:58:15"},"nodeType":"YulFunctionCall","src":"10420:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10413:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10585:3:15"}],"functionName":{"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulIdentifier","src":"10496:88:15"},"nodeType":"YulFunctionCall","src":"10496:93:15"},"nodeType":"YulExpressionStatement","src":"10496:93:15"},{"nodeType":"YulAssignment","src":"10598:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10609:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10614:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10605:3:15"},"nodeType":"YulFunctionCall","src":"10605:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10598:3:15"}]}]},"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10391:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10399:3:15","type":""}],"src":"10257:366:15"},{"body":{"nodeType":"YulBlock","src":"10800:248:15","statements":[{"nodeType":"YulAssignment","src":"10810:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10822:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"10833:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10818:3:15"},"nodeType":"YulFunctionCall","src":"10818:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10810:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10857:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"10868:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10853:3:15"},"nodeType":"YulFunctionCall","src":"10853:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10876:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"10882:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10872:3:15"},"nodeType":"YulFunctionCall","src":"10872:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10846:6:15"},"nodeType":"YulFunctionCall","src":"10846:47:15"},"nodeType":"YulExpressionStatement","src":"10846:47:15"},{"nodeType":"YulAssignment","src":"10902:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11036:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10910:124:15"},"nodeType":"YulFunctionCall","src":"10910:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10902:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10780:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10795:4:15","type":""}],"src":"10629:419:15"},{"body":{"nodeType":"YulBlock","src":"11119:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11136:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11159:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"11141:17:15"},"nodeType":"YulFunctionCall","src":"11141:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11129:6:15"},"nodeType":"YulFunctionCall","src":"11129:37:15"},"nodeType":"YulExpressionStatement","src":"11129:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11107:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11114:3:15","type":""}],"src":"11054:118:15"},{"body":{"nodeType":"YulBlock","src":"11237:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11254:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11274:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"11259:14:15"},"nodeType":"YulFunctionCall","src":"11259:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11247:6:15"},"nodeType":"YulFunctionCall","src":"11247:34:15"},"nodeType":"YulExpressionStatement","src":"11247:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11225:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11232:3:15","type":""}],"src":"11178:109:15"},{"body":{"nodeType":"YulBlock","src":"11441:282:15","statements":[{"nodeType":"YulAssignment","src":"11451:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11463:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11474:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11459:3:15"},"nodeType":"YulFunctionCall","src":"11459:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11451:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11531:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11544:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11555:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11540:3:15"},"nodeType":"YulFunctionCall","src":"11540:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"11487:43:15"},"nodeType":"YulFunctionCall","src":"11487:71:15"},"nodeType":"YulExpressionStatement","src":"11487:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11612:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11625:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11636:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11621:3:15"},"nodeType":"YulFunctionCall","src":"11621:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"11568:43:15"},"nodeType":"YulFunctionCall","src":"11568:72:15"},"nodeType":"YulExpressionStatement","src":"11568:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11688:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11701:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11712:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11697:3:15"},"nodeType":"YulFunctionCall","src":"11697:18:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"11650:37:15"},"nodeType":"YulFunctionCall","src":"11650:66:15"},"nodeType":"YulExpressionStatement","src":"11650:66:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11397:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11409:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11417:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11425:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11436:4:15","type":""}],"src":"11293:430:15"},{"body":{"nodeType":"YulBlock","src":"11794:31:15","statements":[{"nodeType":"YulAssignment","src":"11805:13:15","value":{"name":"len","nodeType":"YulIdentifier","src":"11815:3:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"11805:6:15"}]}]},"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11772:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"11779:3:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"11787:6:15","type":""}],"src":"11729:96:15"},{"body":{"nodeType":"YulBlock","src":"11859:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11876:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11879:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11869:6:15"},"nodeType":"YulFunctionCall","src":"11869:88:15"},"nodeType":"YulExpressionStatement","src":"11869:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11973:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11976:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11966:6:15"},"nodeType":"YulFunctionCall","src":"11966:15:15"},"nodeType":"YulExpressionStatement","src":"11966:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11997:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12000:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11990:6:15"},"nodeType":"YulFunctionCall","src":"11990:15:15"},"nodeType":"YulExpressionStatement","src":"11990:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"11831:180:15"},{"body":{"nodeType":"YulBlock","src":"12068:269:15","statements":[{"nodeType":"YulAssignment","src":"12078:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"12092:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12098:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12088:3:15"},"nodeType":"YulFunctionCall","src":"12088:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12078:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"12109:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"12139:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12145:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12135:3:15"},"nodeType":"YulFunctionCall","src":"12135:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"12113:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"12186:51:15","statements":[{"nodeType":"YulAssignment","src":"12200:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12214:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12222:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12210:3:15"},"nodeType":"YulFunctionCall","src":"12210:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12200:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"12166:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12159:6:15"},"nodeType":"YulFunctionCall","src":"12159:26:15"},"nodeType":"YulIf","src":"12156:81:15"},{"body":{"nodeType":"YulBlock","src":"12289:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"12303:16:15"},"nodeType":"YulFunctionCall","src":"12303:18:15"},"nodeType":"YulExpressionStatement","src":"12303:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"12253:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12276:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12284:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12273:2:15"},"nodeType":"YulFunctionCall","src":"12273:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12250:2:15"},"nodeType":"YulFunctionCall","src":"12250:38:15"},"nodeType":"YulIf","src":"12247:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"12052:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"12061:6:15","type":""}],"src":"12017:320:15"},{"body":{"nodeType":"YulBlock","src":"12396:87:15","statements":[{"nodeType":"YulAssignment","src":"12406:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"12414:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12406:4:15"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12434:1:15","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"12437:3:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12427:6:15"},"nodeType":"YulFunctionCall","src":"12427:14:15"},"nodeType":"YulExpressionStatement","src":"12427:14:15"},{"nodeType":"YulAssignment","src":"12450:26:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12468:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12471:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"12458:9:15"},"nodeType":"YulFunctionCall","src":"12458:18:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12450:4:15"}]}]},"name":"array_dataslot_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"12383:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"12391:4:15","type":""}],"src":"12343:140:15"},{"body":{"nodeType":"YulBlock","src":"12533:49:15","statements":[{"nodeType":"YulAssignment","src":"12543:33:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12561:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"12568:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12557:3:15"},"nodeType":"YulFunctionCall","src":"12557:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"12573:2:15","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12553:3:15"},"nodeType":"YulFunctionCall","src":"12553:23:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"12543:6:15"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12516:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"12526:6:15","type":""}],"src":"12489:93:15"},{"body":{"nodeType":"YulBlock","src":"12641:54:15","statements":[{"nodeType":"YulAssignment","src":"12651:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"12676:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"12682:5:15"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12672:3:15"},"nodeType":"YulFunctionCall","src":"12672:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"12651:8:15"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"12616:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"12622:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"12632:8:15","type":""}],"src":"12588:107:15"},{"body":{"nodeType":"YulBlock","src":"12777:317:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12787:35:15","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"12808:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"12820:1:15","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12804:3:15"},"nodeType":"YulFunctionCall","src":"12804:18:15"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"12791:9:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12831:109:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"12862:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"12873:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"12843:18:15"},"nodeType":"YulFunctionCall","src":"12843:97:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"12835:4:15","type":""}]},{"nodeType":"YulAssignment","src":"12949:51:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"12980:9:15"},{"name":"toInsert","nodeType":"YulIdentifier","src":"12991:8:15"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"12961:18:15"},"nodeType":"YulFunctionCall","src":"12961:39:15"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"12949:8:15"}]},{"nodeType":"YulAssignment","src":"13009:30:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13022:5:15"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"13033:4:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"13029:3:15"},"nodeType":"YulFunctionCall","src":"13029:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13018:3:15"},"nodeType":"YulFunctionCall","src":"13018:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"13009:5:15"}]},{"nodeType":"YulAssignment","src":"13048:40:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13061:5:15"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"13072:8:15"},{"name":"mask","nodeType":"YulIdentifier","src":"13082:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13068:3:15"},"nodeType":"YulFunctionCall","src":"13068:19:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"13058:2:15"},"nodeType":"YulFunctionCall","src":"13058:30:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"13048:6:15"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12738:5:15","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"12745:10:15","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"12757:8:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"12770:6:15","type":""}],"src":"12701:393:15"},{"body":{"nodeType":"YulBlock","src":"13145:32:15","statements":[{"nodeType":"YulAssignment","src":"13155:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13166:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"13155:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13127:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"13137:7:15","type":""}],"src":"13100:77:15"},{"body":{"nodeType":"YulBlock","src":"13215:28:15","statements":[{"nodeType":"YulAssignment","src":"13225:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13232:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13225:3:15"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13201:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13211:3:15","type":""}],"src":"13183:60:15"},{"body":{"nodeType":"YulBlock","src":"13309:82:15","statements":[{"nodeType":"YulAssignment","src":"13319:66:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13377:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13359:17:15"},"nodeType":"YulFunctionCall","src":"13359:24:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"13350:8:15"},"nodeType":"YulFunctionCall","src":"13350:34:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13332:17:15"},"nodeType":"YulFunctionCall","src":"13332:53:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"13319:9:15"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13289:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"13299:9:15","type":""}],"src":"13249:142:15"},{"body":{"nodeType":"YulBlock","src":"13444:28:15","statements":[{"nodeType":"YulAssignment","src":"13454:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13461:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13454:3:15"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13430:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13440:3:15","type":""}],"src":"13397:75:15"},{"body":{"nodeType":"YulBlock","src":"13554:193:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13564:63:15","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"13619:7:15"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"13588:30:15"},"nodeType":"YulFunctionCall","src":"13588:39:15"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"13568:16:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13643:4:15"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13683:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"13677:5:15"},"nodeType":"YulFunctionCall","src":"13677:11:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13690:6:15"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"13722:16:15"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"13698:23:15"},"nodeType":"YulFunctionCall","src":"13698:41:15"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"13649:27:15"},"nodeType":"YulFunctionCall","src":"13649:91:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"13636:6:15"},"nodeType":"YulFunctionCall","src":"13636:105:15"},"nodeType":"YulExpressionStatement","src":"13636:105:15"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"13531:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"13537:6:15","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"13545:7:15","type":""}],"src":"13478:269:15"},{"body":{"nodeType":"YulBlock","src":"13802:24:15","statements":[{"nodeType":"YulAssignment","src":"13812:8:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13819:1:15","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13812:3:15"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13798:3:15","type":""}],"src":"13753:73:15"},{"body":{"nodeType":"YulBlock","src":"13885:136:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13895:46:15","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"13909:30:15"},"nodeType":"YulFunctionCall","src":"13909:32:15"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"13899:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13994:4:15"},{"name":"offset","nodeType":"YulIdentifier","src":"14000:6:15"},{"name":"zero_0","nodeType":"YulIdentifier","src":"14008:6:15"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"13950:43:15"},"nodeType":"YulFunctionCall","src":"13950:65:15"},"nodeType":"YulExpressionStatement","src":"13950:65:15"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"13871:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"13877:6:15","type":""}],"src":"13832:189:15"},{"body":{"nodeType":"YulBlock","src":"14077:136:15","statements":[{"body":{"nodeType":"YulBlock","src":"14144:63:15","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14188:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14195:1:15","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"14158:29:15"},"nodeType":"YulFunctionCall","src":"14158:39:15"},"nodeType":"YulExpressionStatement","src":"14158:39:15"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14097:5:15"},{"name":"end","nodeType":"YulIdentifier","src":"14104:3:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14094:2:15"},"nodeType":"YulFunctionCall","src":"14094:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"14109:26:15","statements":[{"nodeType":"YulAssignment","src":"14111:22:15","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14124:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14131:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14120:3:15"},"nodeType":"YulFunctionCall","src":"14120:13:15"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"14111:5:15"}]}]},"pre":{"nodeType":"YulBlock","src":"14091:2:15","statements":[]},"src":"14087:120:15"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"14065:5:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"14072:3:15","type":""}],"src":"14027:186:15"},{"body":{"nodeType":"YulBlock","src":"14297:463:15","statements":[{"body":{"nodeType":"YulBlock","src":"14323:430:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14337:53:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14384:5:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"14353:30:15"},"nodeType":"YulFunctionCall","src":"14353:37:15"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"14341:8:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14403:63:15","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"14426:8:15"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14454:10:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"14436:17:15"},"nodeType":"YulFunctionCall","src":"14436:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14422:3:15"},"nodeType":"YulFunctionCall","src":"14422:44:15"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"14407:11:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"14623:27:15","statements":[{"nodeType":"YulAssignment","src":"14625:23:15","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"14640:8:15"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"14625:11:15"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14607:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"14619:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14604:2:15"},"nodeType":"YulFunctionCall","src":"14604:18:15"},"nodeType":"YulIf","src":"14601:49:15"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"14692:11:15"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"14709:8:15"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14737:3:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"14719:17:15"},"nodeType":"YulFunctionCall","src":"14719:22:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14705:3:15"},"nodeType":"YulFunctionCall","src":"14705:37:15"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"14663:28:15"},"nodeType":"YulFunctionCall","src":"14663:80:15"},"nodeType":"YulExpressionStatement","src":"14663:80:15"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14314:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14319:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14311:2:15"},"nodeType":"YulFunctionCall","src":"14311:11:15"},"nodeType":"YulIf","src":"14308:445:15"}]},"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"14273:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"14280:3:15","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"14285:10:15","type":""}],"src":"14219:541:15"},{"body":{"nodeType":"YulBlock","src":"14829:54:15","statements":[{"nodeType":"YulAssignment","src":"14839:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"14864:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"14870:5:15"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"14860:3:15"},"nodeType":"YulFunctionCall","src":"14860:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"14839:8:15"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"14804:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"14810:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"14820:8:15","type":""}],"src":"14766:117:15"},{"body":{"nodeType":"YulBlock","src":"14940:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14950:68:15","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14999:1:15","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"15002:5:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"14995:3:15"},"nodeType":"YulFunctionCall","src":"14995:13:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15014:1:15","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15010:3:15"},"nodeType":"YulFunctionCall","src":"15010:6:15"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"14966:28:15"},"nodeType":"YulFunctionCall","src":"14966:51:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"14962:3:15"},"nodeType":"YulFunctionCall","src":"14962:56:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"14954:4:15","type":""}]},{"nodeType":"YulAssignment","src":"15027:25:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15041:4:15"},{"name":"mask","nodeType":"YulIdentifier","src":"15047:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15037:3:15"},"nodeType":"YulFunctionCall","src":"15037:15:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"15027:6:15"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"14917:4:15","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"14923:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"14933:6:15","type":""}],"src":"14889:169:15"},{"body":{"nodeType":"YulBlock","src":"15144:214:15","statements":[{"nodeType":"YulAssignment","src":"15277:37:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15304:4:15"},{"name":"len","nodeType":"YulIdentifier","src":"15310:3:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"15285:18:15"},"nodeType":"YulFunctionCall","src":"15285:29:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15277:4:15"}]},{"nodeType":"YulAssignment","src":"15323:29:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15334:4:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15344:1:15","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"15347:3:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15340:3:15"},"nodeType":"YulFunctionCall","src":"15340:11:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"15331:2:15"},"nodeType":"YulFunctionCall","src":"15331:21:15"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"15323:4:15"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"15125:4:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"15131:3:15","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"15139:4:15","type":""}],"src":"15063:295:15"},{"body":{"nodeType":"YulBlock","src":"15460:1301:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15471:57:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15519:3:15"},{"name":"len","nodeType":"YulIdentifier","src":"15524:3:15"}],"functionName":{"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"15485:33:15"},"nodeType":"YulFunctionCall","src":"15485:43:15"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"15475:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"15613:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"15615:16:15"},"nodeType":"YulFunctionCall","src":"15615:18:15"},"nodeType":"YulExpressionStatement","src":"15615:18:15"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"15585:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15593:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15582:2:15"},"nodeType":"YulFunctionCall","src":"15582:30:15"},"nodeType":"YulIf","src":"15579:56:15"},{"nodeType":"YulVariableDeclaration","src":"15645:52:15","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15691:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"15685:5:15"},"nodeType":"YulFunctionCall","src":"15685:11:15"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"15659:25:15"},"nodeType":"YulFunctionCall","src":"15659:38:15"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"15649:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15789:4:15"},{"name":"oldLen","nodeType":"YulIdentifier","src":"15795:6:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"15803:6:15"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulIdentifier","src":"15744:44:15"},"nodeType":"YulFunctionCall","src":"15744:66:15"},"nodeType":"YulExpressionStatement","src":"15744:66:15"},{"nodeType":"YulVariableDeclaration","src":"15820:18:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15837:1:15","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"15824:9:15","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"15885:624:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15899:37:15","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"15918:6:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15930:4:15","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15926:3:15"},"nodeType":"YulFunctionCall","src":"15926:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15914:3:15"},"nodeType":"YulFunctionCall","src":"15914:22:15"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"15903:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15950:50:15","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15995:4:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"15964:30:15"},"nodeType":"YulFunctionCall","src":"15964:36:15"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"15954:6:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16013:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16022:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16017:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16081:170:15","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16106:6:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16131:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16136:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16127:3:15"},"nodeType":"YulFunctionCall","src":"16127:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16114:12:15"},"nodeType":"YulFunctionCall","src":"16114:33:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16099:6:15"},"nodeType":"YulFunctionCall","src":"16099:49:15"},"nodeType":"YulExpressionStatement","src":"16099:49:15"},{"nodeType":"YulAssignment","src":"16165:24:15","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16179:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16187:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16175:3:15"},"nodeType":"YulFunctionCall","src":"16175:14:15"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16165:6:15"}]},{"nodeType":"YulAssignment","src":"16206:31:15","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16223:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16234:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16219:3:15"},"nodeType":"YulFunctionCall","src":"16219:18:15"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16206:9:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16047:1:15"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"16050:7:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16044:2:15"},"nodeType":"YulFunctionCall","src":"16044:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16059:21:15","statements":[{"nodeType":"YulAssignment","src":"16061:17:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16070:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"16073:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16066:3:15"},"nodeType":"YulFunctionCall","src":"16066:12:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16061:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"16040:3:15","statements":[]},"src":"16036:215:15"},{"body":{"nodeType":"YulBlock","src":"16287:163:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16305:50:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16339:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16344:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16335:3:15"},"nodeType":"YulFunctionCall","src":"16335:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16322:12:15"},"nodeType":"YulFunctionCall","src":"16322:33:15"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"16309:9:15","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16379:6:15"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"16406:9:15"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16421:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16429:4:15","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16417:3:15"},"nodeType":"YulFunctionCall","src":"16417:17:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"16387:18:15"},"nodeType":"YulFunctionCall","src":"16387:48:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16372:6:15"},"nodeType":"YulFunctionCall","src":"16372:64:15"},"nodeType":"YulExpressionStatement","src":"16372:64:15"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"16270:7:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"16279:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16267:2:15"},"nodeType":"YulFunctionCall","src":"16267:19:15"},"nodeType":"YulIf","src":"16264:186:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16470:4:15"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16484:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16492:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"16480:3:15"},"nodeType":"YulFunctionCall","src":"16480:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"16496:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16476:3:15"},"nodeType":"YulFunctionCall","src":"16476:22:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16463:6:15"},"nodeType":"YulFunctionCall","src":"16463:36:15"},"nodeType":"YulExpressionStatement","src":"16463:36:15"}]},"nodeType":"YulCase","src":"15878:631:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15883:1:15","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"16526:229:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16540:14:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16553:1:15","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"16544:5:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16577:74:15","statements":[{"nodeType":"YulAssignment","src":"16595:42:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16621:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16626:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16617:3:15"},"nodeType":"YulFunctionCall","src":"16617:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16604:12:15"},"nodeType":"YulFunctionCall","src":"16604:33:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"16595:5:15"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"16570:6:15"},"nodeType":"YulIf","src":"16567:84:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16671:4:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16730:5:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"16737:6:15"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"16677:52:15"},"nodeType":"YulFunctionCall","src":"16677:67:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16664:6:15"},"nodeType":"YulFunctionCall","src":"16664:81:15"},"nodeType":"YulExpressionStatement","src":"16664:81:15"}]},"nodeType":"YulCase","src":"16518:237:15","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"15858:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15866:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15855:2:15"},"nodeType":"YulFunctionCall","src":"15855:14:15"},"nodeType":"YulSwitch","src":"15848:907:15"}]},"name":"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"15444:4:15","type":""},{"name":"src","nodeType":"YulTypedName","src":"15450:3:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"15455:3:15","type":""}],"src":"15363:1398:15"},{"body":{"nodeType":"YulBlock","src":"16862:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16879:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16884:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16872:6:15"},"nodeType":"YulFunctionCall","src":"16872:19:15"},"nodeType":"YulExpressionStatement","src":"16872:19:15"},{"nodeType":"YulAssignment","src":"16900:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16919:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"16924:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16915:3:15"},"nodeType":"YulFunctionCall","src":"16915:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16900:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16834:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"16839:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16850:11:15","type":""}],"src":"16767:168:15"},{"body":{"nodeType":"YulBlock","src":"17005:82:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17028:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"17033:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17038:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"17015:12:15"},"nodeType":"YulFunctionCall","src":"17015:30:15"},"nodeType":"YulExpressionStatement","src":"17015:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17065:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17070:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17061:3:15"},"nodeType":"YulFunctionCall","src":"17061:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"17079:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17054:6:15"},"nodeType":"YulFunctionCall","src":"17054:27:15"},"nodeType":"YulExpressionStatement","src":"17054:27:15"}]},"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"16987:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"16992:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"16997:6:15","type":""}],"src":"16941:146:15"},{"body":{"nodeType":"YulBlock","src":"17215:214:15","statements":[{"nodeType":"YulAssignment","src":"17225:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17290:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17295:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17232:57:15"},"nodeType":"YulFunctionCall","src":"17232:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17225:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"17349:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"17356:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17361:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"17312:36:15"},"nodeType":"YulFunctionCall","src":"17312:56:15"},"nodeType":"YulExpressionStatement","src":"17312:56:15"},{"nodeType":"YulAssignment","src":"17377:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17388:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"17415:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"17393:21:15"},"nodeType":"YulFunctionCall","src":"17393:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17384:3:15"},"nodeType":"YulFunctionCall","src":"17384:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17377:3:15"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"17188:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"17195:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17203:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17211:3:15","type":""}],"src":"17115:314:15"},{"body":{"nodeType":"YulBlock","src":"17561:203:15","statements":[{"nodeType":"YulAssignment","src":"17571:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17583:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17594:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17579:3:15"},"nodeType":"YulFunctionCall","src":"17579:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17571:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17618:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17629:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17614:3:15"},"nodeType":"YulFunctionCall","src":"17614:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17637:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"17643:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17633:3:15"},"nodeType":"YulFunctionCall","src":"17633:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17607:6:15"},"nodeType":"YulFunctionCall","src":"17607:47:15"},"nodeType":"YulExpressionStatement","src":"17607:47:15"},{"nodeType":"YulAssignment","src":"17663:94:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17735:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"17743:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"17752:4:15"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17671:63:15"},"nodeType":"YulFunctionCall","src":"17671:86:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17663:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17525:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17537:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17545:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17556:4:15","type":""}],"src":"17435:329:15"},{"body":{"nodeType":"YulBlock","src":"17876:119:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17898:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"17906:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17894:3:15"},"nodeType":"YulFunctionCall","src":"17894:14:15"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"17910:34:15","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17887:6:15"},"nodeType":"YulFunctionCall","src":"17887:58:15"},"nodeType":"YulExpressionStatement","src":"17887:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17966:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"17974:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17962:3:15"},"nodeType":"YulFunctionCall","src":"17962:15:15"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"17979:8:15","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17955:6:15"},"nodeType":"YulFunctionCall","src":"17955:33:15"},"nodeType":"YulExpressionStatement","src":"17955:33:15"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17868:6:15","type":""}],"src":"17770:225:15"},{"body":{"nodeType":"YulBlock","src":"18147:220:15","statements":[{"nodeType":"YulAssignment","src":"18157:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18223:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18228:2:15","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18164:58:15"},"nodeType":"YulFunctionCall","src":"18164:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18157:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18329:3:15"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"18240:88:15"},"nodeType":"YulFunctionCall","src":"18240:93:15"},"nodeType":"YulExpressionStatement","src":"18240:93:15"},{"nodeType":"YulAssignment","src":"18342:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18353:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18358:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18349:3:15"},"nodeType":"YulFunctionCall","src":"18349:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18342:3:15"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18135:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18143:3:15","type":""}],"src":"18001:366:15"},{"body":{"nodeType":"YulBlock","src":"18544:248:15","statements":[{"nodeType":"YulAssignment","src":"18554:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18566:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18577:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18562:3:15"},"nodeType":"YulFunctionCall","src":"18562:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18554:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18601:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18612:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18597:3:15"},"nodeType":"YulFunctionCall","src":"18597:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18620:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"18626:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18616:3:15"},"nodeType":"YulFunctionCall","src":"18616:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18590:6:15"},"nodeType":"YulFunctionCall","src":"18590:47:15"},"nodeType":"YulExpressionStatement","src":"18590:47:15"},{"nodeType":"YulAssignment","src":"18646:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18780:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18654:124:15"},"nodeType":"YulFunctionCall","src":"18654:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18646:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18524:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18539:4:15","type":""}],"src":"18373:419:15"},{"body":{"nodeType":"YulBlock","src":"18863:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18880:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18903:5:15"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"18885:17:15"},"nodeType":"YulFunctionCall","src":"18885:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18873:6:15"},"nodeType":"YulFunctionCall","src":"18873:37:15"},"nodeType":"YulExpressionStatement","src":"18873:37:15"}]},"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18851:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18858:3:15","type":""}],"src":"18798:118:15"},{"body":{"nodeType":"YulBlock","src":"19048:206:15","statements":[{"nodeType":"YulAssignment","src":"19058:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19070:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19081:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19066:3:15"},"nodeType":"YulFunctionCall","src":"19066:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19058:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19138:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19151:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19162:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19147:3:15"},"nodeType":"YulFunctionCall","src":"19147:17:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"19094:43:15"},"nodeType":"YulFunctionCall","src":"19094:71:15"},"nodeType":"YulExpressionStatement","src":"19094:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"19219:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19232:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19243:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19228:3:15"},"nodeType":"YulFunctionCall","src":"19228:18:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"19175:43:15"},"nodeType":"YulFunctionCall","src":"19175:72:15"},"nodeType":"YulExpressionStatement","src":"19175:72:15"}]},"name":"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19012:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19024:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19032:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19043:4:15","type":""}],"src":"18922:332:15"},{"body":{"nodeType":"YulBlock","src":"19366:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19388:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"19396:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19384:3:15"},"nodeType":"YulFunctionCall","src":"19384:14:15"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"19400:34:15","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19377:6:15"},"nodeType":"YulFunctionCall","src":"19377:58:15"},"nodeType":"YulExpressionStatement","src":"19377:58:15"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19358:6:15","type":""}],"src":"19260:182:15"},{"body":{"nodeType":"YulBlock","src":"19594:220:15","statements":[{"nodeType":"YulAssignment","src":"19604:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19670:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19675:2:15","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19611:58:15"},"nodeType":"YulFunctionCall","src":"19611:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19604:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19776:3:15"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"19687:88:15"},"nodeType":"YulFunctionCall","src":"19687:93:15"},"nodeType":"YulExpressionStatement","src":"19687:93:15"},{"nodeType":"YulAssignment","src":"19789:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19800:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19805:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19796:3:15"},"nodeType":"YulFunctionCall","src":"19796:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19789:3:15"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"19582:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"19590:3:15","type":""}],"src":"19448:366:15"},{"body":{"nodeType":"YulBlock","src":"19991:248:15","statements":[{"nodeType":"YulAssignment","src":"20001:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20013:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20024:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20009:3:15"},"nodeType":"YulFunctionCall","src":"20009:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20001:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20048:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20059:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20044:3:15"},"nodeType":"YulFunctionCall","src":"20044:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20067:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"20073:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20063:3:15"},"nodeType":"YulFunctionCall","src":"20063:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20037:6:15"},"nodeType":"YulFunctionCall","src":"20037:47:15"},"nodeType":"YulExpressionStatement","src":"20037:47:15"},{"nodeType":"YulAssignment","src":"20093:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20227:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20101:124:15"},"nodeType":"YulFunctionCall","src":"20101:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20093:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19971:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19986:4:15","type":""}],"src":"19820:419:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n // struct PaycrestSettingManager.Institution\n function abi_decode_t_struct$_Institution_$3624_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x40) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x40)\n\n {\n // code\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n {\n // name\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x40))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x40) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_struct$_Institution_$3624_memory_ptr(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_struct$_Institution_$3624_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bytes32t_addresst_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint128(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint128(value) {\n if iszero(eq(value, cleanup_t_uint128(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint128(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint128(value)\n }\n\n function abi_decode_tuple_t_uint128t_uint128(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(memPtr) {\n\n mstore(add(memPtr, 0), \"Paycrest: zero address\")\n\n }\n\n function abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function array_length_t_bytes_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len) {\n\n let newLen := array_length_t_bytes_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_uint128_to_t_uint128_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint128(value))\n }\n\n function abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c806399e3c0b41161005b57806399e3c0b4146100ed578063cb79455b14610109578063f2fde38b14610125578063f5326b191461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b35780638da5cb5b146100cf575b600080fd5b6100a760048036038101906100a29190610a86565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610b40565b610285565b005b6100d76103d2565b6040516100e49190610b8f565b60405180910390f35b61010760048036038101906101029190610be2565b6103fc565b005b610123600480360381019061011e9190610c90565b6105b1565b005b61013f600480360381019061013a9190610cdd565b610608565b005b61015b60048036038101906101569190610d52565b61068b565b005b610165610742565b60008151905060005b8181101561026b57609e600085815260200190815260200160002083828151811061019c5761019b610d92565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d92565b5b602002602001015160200151815260200185815250609f600085848151811061022d5761022c610d92565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b610279610742565b61028360006107c0565b565b61028d610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610e1e565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610404610742565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a90610e1e565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036104f25780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105715780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516105a493929190610e5c565b60405180910390a1505050565b6105b9610742565b8181606991826105ca9291906110b4565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516105fc9291906111d1565b60405180910390a15050565b610610610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361067f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067690611267565b60405180910390fd5b610688816107c0565b50565b610693610742565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051610736929190611296565b60405180910390a15050565b61074a610886565b73ffffffffffffffffffffffffffffffffffffffff166107686103d2565b73ffffffffffffffffffffffffffffffffffffffff16146107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b59061130b565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6108b5816108a2565b81146108c057600080fd5b50565b6000813590506108d2816108ac565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610926826108dd565b810181811067ffffffffffffffff82111715610945576109446108ee565b5b80604052505050565b600061095861088e565b9050610964828261091d565b919050565b600067ffffffffffffffff821115610984576109836108ee565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109b5576109b461099a565b5b6109bf604061094e565b905060006109cf848285016108c3565b60008301525060206109e3848285016108c3565b60208301525092915050565b6000610a026109fd84610969565b61094e565b90508083825260208201905060408402830185811115610a2557610a24610995565b5b835b81811015610a4e5780610a3a888261099f565b845260208401935050604081019050610a27565b5050509392505050565b600082601f830112610a6d57610a6c6108d8565b5b8135610a7d8482602086016109ef565b91505092915050565b60008060408385031215610a9d57610a9c610898565b5b6000610aab858286016108c3565b925050602083013567ffffffffffffffff811115610acc57610acb61089d565b5b610ad885828601610a58565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b0d82610ae2565b9050919050565b610b1d81610b02565b8114610b2857600080fd5b50565b600081359050610b3a81610b14565b92915050565b60008060408385031215610b5757610b56610898565b5b6000610b65858286016108c3565b9250506020610b7685828601610b2b565b9150509250929050565b610b8981610b02565b82525050565b6000602082019050610ba46000830184610b80565b92915050565b60008115159050919050565b610bbf81610baa565b8114610bca57600080fd5b50565b600081359050610bdc81610bb6565b92915050565b600080600060608486031215610bfb57610bfa610898565b5b6000610c09868287016108c3565b9350506020610c1a86828701610b2b565b9250506040610c2b86828701610bcd565b9150509250925092565b600080fd5b60008083601f840112610c5057610c4f6108d8565b5b8235905067ffffffffffffffff811115610c6d57610c6c610c35565b5b602083019150836001820283011115610c8957610c88610995565b5b9250929050565b60008060208385031215610ca757610ca6610898565b5b600083013567ffffffffffffffff811115610cc557610cc461089d565b5b610cd185828601610c3a565b92509250509250929050565b600060208284031215610cf357610cf2610898565b5b6000610d0184828501610b2b565b91505092915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b610d2f81610d0a565b8114610d3a57600080fd5b50565b600081359050610d4c81610d26565b92915050565b60008060408385031215610d6957610d68610898565b5b6000610d7785828601610d3d565b9250506020610d8885828601610d3d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610e08601683610dc1565b9150610e1382610dd2565b602082019050919050565b60006020820190508181036000830152610e3781610dfb565b9050919050565b610e47816108a2565b82525050565b610e5681610baa565b82525050565b6000606082019050610e716000830186610e3e565b610e7e6020830185610b80565b610e8b6040830184610e4d565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ee557607f821691505b602082108103610ef857610ef7610e9e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610f23565b610f6a8683610f23565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610fb1610fac610fa784610f82565b610f8c565b610f82565b9050919050565b6000819050919050565b610fcb83610f96565b610fdf610fd782610fb8565b848454610f30565b825550505050565b600090565b610ff4610fe7565b610fff818484610fc2565b505050565b5b8181101561102357611018600082610fec565b600181019050611005565b5050565b601f8211156110685761103981610efe565b61104284610f13565b81016020851015611051578190505b61106561105d85610f13565b830182611004565b50505b505050565b600082821c905092915050565b600061108b6000198460080261106d565b1980831691505092915050565b60006110a4838361107a565b9150826002028217905092915050565b6110be8383610e93565b67ffffffffffffffff8111156110d7576110d66108ee565b5b6110e18254610ecd565b6110ec828285611027565b6000601f83116001811461111b5760008415611109578287013590505b6111138582611098565b86555061117b565b601f19841661112986610efe565b60005b828110156111515784890135825560018201915060208501945060208101905061112c565b8683101561116e578489013561116a601f89168261107a565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111b08385611184565b93506111bd838584611195565b6111c6836108dd565b840190509392505050565b600060208201905081810360008301526111ec8184866111a4565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611251602683610dc1565b915061125c826111f5565b604082019050919050565b6000602082019050818103600083015261128081611244565b9050919050565b61129081610d0a565b82525050565b60006040820190506112ab6000830185611287565b6112b86020830184611287565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112f5602083610dc1565b9150611300826112bf565b602082019050919050565b60006020820190508181036000830152611324816112e8565b905091905056fea2646970667358221220cbcf63be5aea212b07add232a2fd1fea21e0a28d565c16921b2afe6d54e9534f64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x99E3C0B4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xF5326B19 EQ PUSH2 0x141 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x32200882 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA86 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xB40 JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD7 PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x102 SWAP2 SWAP1 PUSH2 0xBE2 JUMP JUMPDEST PUSH2 0x3FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x11E SWAP2 SWAP1 PUSH2 0xC90 JUMP JUMPDEST PUSH2 0x5B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13A SWAP2 SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0xD52 JUMP JUMPDEST PUSH2 0x68B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x165 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x9E PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19C JUMPI PUSH2 0x19B PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x201 JUMPI PUSH2 0x200 PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x22D JUMPI PUSH2 0x22C PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x16E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x279 PUSH2 0x742 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x0 PUSH2 0x7C0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x365 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x3CE JUMPI DUP1 PUSH1 0x68 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x404 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x473 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46A SWAP1 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x4F2 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x571 JUMPI DUP1 PUSH1 0x9D PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x5A4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x5B9 PUSH2 0x742 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x69 SWAP2 DUP3 PUSH2 0x5CA SWAP3 SWAP2 SWAP1 PUSH2 0x10B4 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x5FC SWAP3 SWAP2 SWAP1 PUSH2 0x11D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x610 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x676 SWAP1 PUSH2 0x1267 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x688 DUP2 PUSH2 0x7C0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x693 PUSH2 0x742 JUMP JUMPDEST DUP2 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xE38926C5806B98A6FD00C5D791A36FBD196537FE48D11C45C9F1D0ACD1EA74DF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x736 SWAP3 SWAP2 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x74A PUSH2 0x886 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x768 PUSH2 0x3D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7B5 SWAP1 PUSH2 0x130B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8B5 DUP2 PUSH2 0x8A2 JUMP JUMPDEST DUP2 EQ PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8D2 DUP2 PUSH2 0x8AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x926 DUP3 PUSH2 0x8DD JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x945 JUMPI PUSH2 0x944 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x958 PUSH2 0x88E JUMP JUMPDEST SWAP1 POP PUSH2 0x964 DUP3 DUP3 PUSH2 0x91D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x984 JUMPI PUSH2 0x983 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9B5 JUMPI PUSH2 0x9B4 PUSH2 0x99A JUMP JUMPDEST JUMPDEST PUSH2 0x9BF PUSH1 0x40 PUSH2 0x94E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9CF DUP5 DUP3 DUP6 ADD PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x9E3 DUP5 DUP3 DUP6 ADD PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA02 PUSH2 0x9FD DUP5 PUSH2 0x969 JUMP JUMPDEST PUSH2 0x94E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA25 JUMPI PUSH2 0xA24 PUSH2 0x995 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA4E JUMPI DUP1 PUSH2 0xA3A DUP9 DUP3 PUSH2 0x99F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0xA27 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA6D JUMPI PUSH2 0xA6C PUSH2 0x8D8 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA7D DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9EF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA9D JUMPI PUSH2 0xA9C PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAAB DUP6 DUP3 DUP7 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xACC JUMPI PUSH2 0xACB PUSH2 0x89D JUMP JUMPDEST JUMPDEST PUSH2 0xAD8 DUP6 DUP3 DUP7 ADD PUSH2 0xA58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB0D DUP3 PUSH2 0xAE2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB1D DUP2 PUSH2 0xB02 JUMP JUMPDEST DUP2 EQ PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB3A DUP2 PUSH2 0xB14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB57 JUMPI PUSH2 0xB56 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB65 DUP6 DUP3 DUP7 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB76 DUP6 DUP3 DUP7 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB89 DUP2 PUSH2 0xB02 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB80 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBBF DUP2 PUSH2 0xBAA JUMP JUMPDEST DUP2 EQ PUSH2 0xBCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBDC DUP2 PUSH2 0xBB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBFB JUMPI PUSH2 0xBFA PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC09 DUP7 DUP3 DUP8 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC1A DUP7 DUP3 DUP8 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xC2B DUP7 DUP3 DUP8 ADD PUSH2 0xBCD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC50 JUMPI PUSH2 0xC4F PUSH2 0x8D8 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC6D JUMPI PUSH2 0xC6C PUSH2 0xC35 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xC89 JUMPI PUSH2 0xC88 PUSH2 0x995 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCA7 JUMPI PUSH2 0xCA6 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCC5 JUMPI PUSH2 0xCC4 PUSH2 0x89D JUMP JUMPDEST JUMPDEST PUSH2 0xCD1 DUP6 DUP3 DUP7 ADD PUSH2 0xC3A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCF3 JUMPI PUSH2 0xCF2 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD01 DUP5 DUP3 DUP6 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD2F DUP2 PUSH2 0xD0A JUMP JUMPDEST DUP2 EQ PUSH2 0xD3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD4C DUP2 PUSH2 0xD26 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD69 JUMPI PUSH2 0xD68 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD77 DUP6 DUP3 DUP7 ADD PUSH2 0xD3D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xD88 DUP6 DUP3 DUP7 ADD PUSH2 0xD3D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE08 PUSH1 0x16 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0xE13 DUP3 PUSH2 0xDD2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE37 DUP2 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE47 DUP2 PUSH2 0x8A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE56 DUP2 PUSH2 0xBAA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xE71 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xE3E JUMP JUMPDEST PUSH2 0xE7E PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0xE8B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE4D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEE5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEF8 JUMPI PUSH2 0xEF7 PUSH2 0xE9E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0xF6A DUP7 DUP4 PUSH2 0xF23 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB1 PUSH2 0xFAC PUSH2 0xFA7 DUP5 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0xF8C JUMP JUMPDEST PUSH2 0xF82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFCB DUP4 PUSH2 0xF96 JUMP JUMPDEST PUSH2 0xFDF PUSH2 0xFD7 DUP3 PUSH2 0xFB8 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xF30 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFF4 PUSH2 0xFE7 JUMP JUMPDEST PUSH2 0xFFF DUP2 DUP5 DUP5 PUSH2 0xFC2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1023 JUMPI PUSH2 0x1018 PUSH1 0x0 DUP3 PUSH2 0xFEC JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1005 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1068 JUMPI PUSH2 0x1039 DUP2 PUSH2 0xEFE JUMP JUMPDEST PUSH2 0x1042 DUP5 PUSH2 0xF13 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1051 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1065 PUSH2 0x105D DUP6 PUSH2 0xF13 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x1004 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x106D JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10A4 DUP4 DUP4 PUSH2 0x107A JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10BE DUP4 DUP4 PUSH2 0xE93 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10D7 JUMPI PUSH2 0x10D6 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST PUSH2 0x10E1 DUP3 SLOAD PUSH2 0xECD JUMP JUMPDEST PUSH2 0x10EC DUP3 DUP3 DUP6 PUSH2 0x1027 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x111B JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x1109 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x1113 DUP6 DUP3 PUSH2 0x1098 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x117B JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x1129 DUP7 PUSH2 0xEFE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1151 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x112C JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x116E JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x116A PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x107A JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B0 DUP4 DUP6 PUSH2 0x1184 JUMP JUMPDEST SWAP4 POP PUSH2 0x11BD DUP4 DUP6 DUP5 PUSH2 0x1195 JUMP JUMPDEST PUSH2 0x11C6 DUP4 PUSH2 0x8DD JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11EC DUP2 DUP5 DUP7 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1251 PUSH1 0x26 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0x125C DUP3 PUSH2 0x11F5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1280 DUP2 PUSH2 0x1244 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1290 DUP2 PUSH2 0xD0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x12AB PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x12B8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1287 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12F5 PUSH1 0x20 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0x1300 DUP3 PUSH2 0x12BF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1324 DUP2 PUSH2 0x12E8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xCF PUSH4 0xBE5AEA21 0x2B SMOD 0xAD 0xD2 ORIGIN LOG2 REVERT 0x1F 0xEA 0x21 0xE0 LOG2 DUP14 JUMP 0x5C AND SWAP3 SHL 0x2A INVALID PUSH14 0x54E9534F64736F6C634300081200 CALLER ","sourceMap":"139:2924:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1833:500;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2064:101:0;;;:::i;:::-;;2630:263:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1441:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1483:344:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2899:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2314:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2339:285:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1833:500;1334:13:0;:11;:13::i;:::-;1950:14:13::1;1967:12;:19;1950:36;;2001:6;1996:331;2017:6;2013:1;:10;1996:331;;;2041:21;:31;2063:8;2041:31;;;;;;;;;;;2078:12;2091:1;2078:15;;;;;;;;:::i;:::-;;;;;;;;2041:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2160:97;;;;;;;;2202:12;2215:1;2202:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2160:97;;;;2234:8;2160:97;;::::0;2108:27:::1;:49;2136:12;2149:1;2136:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2108:49;;;;;;;;;;;:149;;;;;;;;;;;;;;;;;;;2299:3;;;;;;;1996:331;;;;1939:394;1833:500:::0;;:::o;2064:101:0:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;2630:263:13:-;1334:13:0;:11;:13::i;:::-;2746:1:13::1;2729:19;;:5;:19;;::::0;2721:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2789:13;:4;:13:::0;2785:39:::1;;2819:5;2804:12;;:20;;;;;;;;;;;;;;;;;;2785:39;2838:20;:4;:20:::0;2834:52:::1;;2881:5;2860:18;;:26;;;;;;;;;;;;;;;;;;2834:52;2630:263:::0;;:::o;1441:85:0:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;1483:344:13:-;1334:13:0;:11;:13::i;:::-;1607:1:13::1;1590:19;;:5;:19;;::::0;1582:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1650:15;:4;:15:::0;1646:54:::1;;1694:6;1667:17;:24;1685:5;1667:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1646:54;1714:19;:4;:19:::0;1710:55:::1;;1759:6;1735:14;:21;1750:5;1735:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1710:55;1781:39;1800:4;1806:5;1813:6;1781:39;;;;;;;;:::i;:::-;;;;;;;;1483:344:::0;;;:::o;2899:161::-;1334:13:0;:11;:13::i;:::-;3003:10:13::1;;2989:11;:24;;;;;;;:::i;:::-;;3028:25;3042:10;;3028:25;;;;;;;:::i;:::-;;;;;;;;2899:161:::0;;:::o;2314:198:0:-;1334:13;:11;:13::i;:::-;2422:1:::1;2402:22;;:8;:22;;::::0;2394:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:28;2496:8;2477:18;:28::i;:::-;2314:198:::0;:::o;2339:285:13:-;1334:13:0;:11;:13::i;:::-;2476:19:13::1;2455:18;;:40;;;;;;;;;;;;;;;;;;2527:20;2505:19;;:42;;;;;;;;;;;;;;;;;;2562:55;2575:19;2596:20;2562:55;;;;;;;:::i;:::-;;;;;;;;2339:285:::0;;:::o;1599:130:0:-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;2666:187::-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;850:96:6:-;903:7;929:10;922:17;;850:96;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;813:102;854:6;905:2;901:7;896:2;889:5;885:14;881:28;871:38;;813:102;;;:::o;921:180::-;969:77;966:1;959:88;1066:4;1063:1;1056:15;1090:4;1087:1;1080:15;1107:281;1190:27;1212:4;1190:27;:::i;:::-;1182:6;1178:40;1320:6;1308:10;1305:22;1284:18;1272:10;1269:34;1266:62;1263:88;;;1331:18;;:::i;:::-;1263:88;1371:10;1367:2;1360:22;1150:238;1107:281;;:::o;1394:129::-;1428:6;1455:20;;:::i;:::-;1445:30;;1484:33;1512:4;1504:6;1484:33;:::i;:::-;1394:129;;;:::o;1529:340::-;1635:4;1725:18;1717:6;1714:30;1711:56;;;1747:18;;:::i;:::-;1711:56;1797:4;1789:6;1785:17;1777:25;;1857:4;1851;1847:15;1839:23;;1529:340;;;:::o;1875:117::-;1984:1;1981;1974:12;1998:117;2107:1;2104;2097:12;2293:578;2371:5;2415:4;2403:9;2398:3;2394:19;2390:30;2387:117;;;2423:79;;:::i;:::-;2387:117;2522:21;2538:4;2522:21;:::i;:::-;2513:30;;2602:1;2642:49;2687:3;2678:6;2667:9;2663:22;2642:49;:::i;:::-;2635:4;2628:5;2624:16;2617:75;2553:150;2762:2;2803:49;2848:3;2839:6;2828:9;2824:22;2803:49;:::i;:::-;2796:4;2789:5;2785:16;2778:75;2713:151;2293:578;;;;:::o;2928:797::-;3053:5;3078:110;3094:93;3180:6;3094:93;:::i;:::-;3078:110;:::i;:::-;3069:119;;3208:5;3237:6;3230:5;3223:21;3271:4;3264:5;3260:16;3253:23;;3324:4;3316:6;3312:17;3304:6;3300:30;3353:3;3345:6;3342:15;3339:122;;;3372:79;;:::i;:::-;3339:122;3487:6;3470:249;3504:6;3499:3;3496:15;3470:249;;;3579:3;3608:66;3670:3;3658:10;3608:66;:::i;:::-;3603:3;3596:79;3704:4;3699:3;3695:14;3688:21;;3546:173;3530:4;3525:3;3521:14;3514:21;;3470:249;;;3474:21;3059:666;;2928:797;;;;;:::o;3782:428::-;3882:5;3931:3;3924:4;3916:6;3912:17;3908:27;3898:122;;3939:79;;:::i;:::-;3898:122;4056:6;4043:20;4081:123;4200:3;4192:6;4185:4;4177:6;4173:17;4081:123;:::i;:::-;4072:132;;3888:322;3782:428;;;;:::o;4216:742::-;4338:6;4346;4395:2;4383:9;4374:7;4370:23;4366:32;4363:119;;;4401:79;;:::i;:::-;4363:119;4521:1;4546:53;4591:7;4582:6;4571:9;4567:22;4546:53;:::i;:::-;4536:63;;4492:117;4676:2;4665:9;4661:18;4648:32;4707:18;4699:6;4696:30;4693:117;;;4729:79;;:::i;:::-;4693:117;4834:107;4933:7;4924:6;4913:9;4909:22;4834:107;:::i;:::-;4824:117;;4619:332;4216:742;;;;;:::o;4964:126::-;5001:7;5041:42;5034:5;5030:54;5019:65;;4964:126;;;:::o;5096:96::-;5133:7;5162:24;5180:5;5162:24;:::i;:::-;5151:35;;5096:96;;;:::o;5198:122::-;5271:24;5289:5;5271:24;:::i;:::-;5264:5;5261:35;5251:63;;5310:1;5307;5300:12;5251:63;5198:122;:::o;5326:139::-;5372:5;5410:6;5397:20;5388:29;;5426:33;5453:5;5426:33;:::i;:::-;5326:139;;;;:::o;5471:474::-;5539:6;5547;5596:2;5584:9;5575:7;5571:23;5567:32;5564:119;;;5602:79;;:::i;:::-;5564:119;5722:1;5747:53;5792:7;5783:6;5772:9;5768:22;5747:53;:::i;:::-;5737:63;;5693:117;5849:2;5875:53;5920:7;5911:6;5900:9;5896:22;5875:53;:::i;:::-;5865:63;;5820:118;5471:474;;;;;:::o;5951:118::-;6038:24;6056:5;6038:24;:::i;:::-;6033:3;6026:37;5951:118;;:::o;6075:222::-;6168:4;6206:2;6195:9;6191:18;6183:26;;6219:71;6287:1;6276:9;6272:17;6263:6;6219:71;:::i;:::-;6075:222;;;;:::o;6303:90::-;6337:7;6380:5;6373:13;6366:21;6355:32;;6303:90;;;:::o;6399:116::-;6469:21;6484:5;6469:21;:::i;:::-;6462:5;6459:32;6449:60;;6505:1;6502;6495:12;6449:60;6399:116;:::o;6521:133::-;6564:5;6602:6;6589:20;6580:29;;6618:30;6642:5;6618:30;:::i;:::-;6521:133;;;;:::o;6660:613::-;6734:6;6742;6750;6799:2;6787:9;6778:7;6774:23;6770:32;6767:119;;;6805:79;;:::i;:::-;6767:119;6925:1;6950:53;6995:7;6986:6;6975:9;6971:22;6950:53;:::i;:::-;6940:63;;6896:117;7052:2;7078:53;7123:7;7114:6;7103:9;7099:22;7078:53;:::i;:::-;7068:63;;7023:118;7180:2;7206:50;7248:7;7239:6;7228:9;7224:22;7206:50;:::i;:::-;7196:60;;7151:115;6660:613;;;;;:::o;7279:117::-;7388:1;7385;7378:12;7415:552;7472:8;7482:6;7532:3;7525:4;7517:6;7513:17;7509:27;7499:122;;7540:79;;:::i;:::-;7499:122;7653:6;7640:20;7630:30;;7683:18;7675:6;7672:30;7669:117;;;7705:79;;:::i;:::-;7669:117;7819:4;7811:6;7807:17;7795:29;;7873:3;7865:4;7857:6;7853:17;7843:8;7839:32;7836:41;7833:128;;;7880:79;;:::i;:::-;7833:128;7415:552;;;;;:::o;7973:527::-;8043:6;8051;8100:2;8088:9;8079:7;8075:23;8071:32;8068:119;;;8106:79;;:::i;:::-;8068:119;8254:1;8243:9;8239:17;8226:31;8284:18;8276:6;8273:30;8270:117;;;8306:79;;:::i;:::-;8270:117;8419:64;8475:7;8466:6;8455:9;8451:22;8419:64;:::i;:::-;8401:82;;;;8197:296;7973:527;;;;;:::o;8506:329::-;8565:6;8614:2;8602:9;8593:7;8589:23;8585:32;8582:119;;;8620:79;;:::i;:::-;8582:119;8740:1;8765:53;8810:7;8801:6;8790:9;8786:22;8765:53;:::i;:::-;8755:63;;8711:117;8506:329;;;;:::o;8841:118::-;8878:7;8918:34;8911:5;8907:46;8896:57;;8841:118;;;:::o;8965:122::-;9038:24;9056:5;9038:24;:::i;:::-;9031:5;9028:35;9018:63;;9077:1;9074;9067:12;9018:63;8965:122;:::o;9093:139::-;9139:5;9177:6;9164:20;9155:29;;9193:33;9220:5;9193:33;:::i;:::-;9093:139;;;;:::o;9238:474::-;9306:6;9314;9363:2;9351:9;9342:7;9338:23;9334:32;9331:119;;;9369:79;;:::i;:::-;9331:119;9489:1;9514:53;9559:7;9550:6;9539:9;9535:22;9514:53;:::i;:::-;9504:63;;9460:117;9616:2;9642:53;9687:7;9678:6;9667:9;9663:22;9642:53;:::i;:::-;9632:63;;9587:118;9238:474;;;;;:::o;9718:180::-;9766:77;9763:1;9756:88;9863:4;9860:1;9853:15;9887:4;9884:1;9877:15;9904:169;9988:11;10022:6;10017:3;10010:19;10062:4;10057:3;10053:14;10038:29;;9904:169;;;;:::o;10079:172::-;10219:24;10215:1;10207:6;10203:14;10196:48;10079:172;:::o;10257:366::-;10399:3;10420:67;10484:2;10479:3;10420:67;:::i;:::-;10413:74;;10496:93;10585:3;10496:93;:::i;:::-;10614:2;10609:3;10605:12;10598:19;;10257:366;;;:::o;10629:419::-;10795:4;10833:2;10822:9;10818:18;10810:26;;10882:9;10876:4;10872:20;10868:1;10857:9;10853:17;10846:47;10910:131;11036:4;10910:131;:::i;:::-;10902:139;;10629:419;;;:::o;11054:118::-;11141:24;11159:5;11141:24;:::i;:::-;11136:3;11129:37;11054:118;;:::o;11178:109::-;11259:21;11274:5;11259:21;:::i;:::-;11254:3;11247:34;11178:109;;:::o;11293:430::-;11436:4;11474:2;11463:9;11459:18;11451:26;;11487:71;11555:1;11544:9;11540:17;11531:6;11487:71;:::i;:::-;11568:72;11636:2;11625:9;11621:18;11612:6;11568:72;:::i;:::-;11650:66;11712:2;11701:9;11697:18;11688:6;11650:66;:::i;:::-;11293:430;;;;;;:::o;11729:96::-;11787:6;11815:3;11805:13;;11729:96;;;;:::o;11831:180::-;11879:77;11876:1;11869:88;11976:4;11973:1;11966:15;12000:4;11997:1;11990:15;12017:320;12061:6;12098:1;12092:4;12088:12;12078:22;;12145:1;12139:4;12135:12;12166:18;12156:81;;12222:4;12214:6;12210:17;12200:27;;12156:81;12284:2;12276:6;12273:14;12253:18;12250:38;12247:84;;12303:18;;:::i;:::-;12247:84;12068:269;12017:320;;;:::o;12343:140::-;12391:4;12414:3;12406:11;;12437:3;12434:1;12427:14;12471:4;12468:1;12458:18;12450:26;;12343:140;;;:::o;12489:93::-;12526:6;12573:2;12568;12561:5;12557:14;12553:23;12543:33;;12489:93;;;:::o;12588:107::-;12632:8;12682:5;12676:4;12672:16;12651:37;;12588:107;;;;:::o;12701:393::-;12770:6;12820:1;12808:10;12804:18;12843:97;12873:66;12862:9;12843:97;:::i;:::-;12961:39;12991:8;12980:9;12961:39;:::i;:::-;12949:51;;13033:4;13029:9;13022:5;13018:21;13009:30;;13082:4;13072:8;13068:19;13061:5;13058:30;13048:40;;12777:317;;12701:393;;;;;:::o;13100:77::-;13137:7;13166:5;13155:16;;13100:77;;;:::o;13183:60::-;13211:3;13232:5;13225:12;;13183:60;;;:::o;13249:142::-;13299:9;13332:53;13350:34;13359:24;13377:5;13359:24;:::i;:::-;13350:34;:::i;:::-;13332:53;:::i;:::-;13319:66;;13249:142;;;:::o;13397:75::-;13440:3;13461:5;13454:12;;13397:75;;;:::o;13478:269::-;13588:39;13619:7;13588:39;:::i;:::-;13649:91;13698:41;13722:16;13698:41;:::i;:::-;13690:6;13683:4;13677:11;13649:91;:::i;:::-;13643:4;13636:105;13554:193;13478:269;;;:::o;13753:73::-;13798:3;13753:73;:::o;13832:189::-;13909:32;;:::i;:::-;13950:65;14008:6;14000;13994:4;13950:65;:::i;:::-;13885:136;13832:189;;:::o;14027:186::-;14087:120;14104:3;14097:5;14094:14;14087:120;;;14158:39;14195:1;14188:5;14158:39;:::i;:::-;14131:1;14124:5;14120:13;14111:22;;14087:120;;;14027:186;;:::o;14219:541::-;14319:2;14314:3;14311:11;14308:445;;;14353:37;14384:5;14353:37;:::i;:::-;14436:29;14454:10;14436:29;:::i;:::-;14426:8;14422:44;14619:2;14607:10;14604:18;14601:49;;;14640:8;14625:23;;14601:49;14663:80;14719:22;14737:3;14719:22;:::i;:::-;14709:8;14705:37;14692:11;14663:80;:::i;:::-;14323:430;;14308:445;14219:541;;;:::o;14766:117::-;14820:8;14870:5;14864:4;14860:16;14839:37;;14766:117;;;;:::o;14889:169::-;14933:6;14966:51;15014:1;15010:6;15002:5;14999:1;14995:13;14966:51;:::i;:::-;14962:56;15047:4;15041;15037:15;15027:25;;14940:118;14889:169;;;;:::o;15063:295::-;15139:4;15285:29;15310:3;15304:4;15285:29;:::i;:::-;15277:37;;15347:3;15344:1;15340:11;15334:4;15331:21;15323:29;;15063:295;;;;:::o;15363:1398::-;15485:43;15524:3;15519;15485:43;:::i;:::-;15593:18;15585:6;15582:30;15579:56;;;15615:18;;:::i;:::-;15579:56;15659:38;15691:4;15685:11;15659:38;:::i;:::-;15744:66;15803:6;15795;15789:4;15744:66;:::i;:::-;15837:1;15866:2;15858:6;15855:14;15883:1;15878:631;;;;16553:1;16570:6;16567:84;;;16626:9;16621:3;16617:19;16604:33;16595:42;;16567:84;16677:67;16737:6;16730:5;16677:67;:::i;:::-;16671:4;16664:81;16526:229;15848:907;;15878:631;15930:4;15926:9;15918:6;15914:22;15964:36;15995:4;15964:36;:::i;:::-;16022:1;16036:215;16050:7;16047:1;16044:14;16036:215;;;16136:9;16131:3;16127:19;16114:33;16106:6;16099:49;16187:1;16179:6;16175:14;16165:24;;16234:2;16223:9;16219:18;16206:31;;16073:4;16070:1;16066:12;16061:17;;16036:215;;;16279:6;16270:7;16267:19;16264:186;;;16344:9;16339:3;16335:19;16322:33;16387:48;16429:4;16421:6;16417:17;16406:9;16387:48;:::i;:::-;16379:6;16372:64;16287:163;16264:186;16496:1;16492;16484:6;16480:14;16476:22;16470:4;16463:36;15885:624;;;15848:907;;15460:1301;;;15363:1398;;;:::o;16767:168::-;16850:11;16884:6;16879:3;16872:19;16924:4;16919:3;16915:14;16900:29;;16767:168;;;;:::o;16941:146::-;17038:6;17033:3;17028;17015:30;17079:1;17070:6;17065:3;17061:16;17054:27;16941:146;;;:::o;17115:314::-;17211:3;17232:70;17295:6;17290:3;17232:70;:::i;:::-;17225:77;;17312:56;17361:6;17356:3;17349:5;17312:56;:::i;:::-;17393:29;17415:6;17393:29;:::i;:::-;17388:3;17384:39;17377:46;;17115:314;;;;;:::o;17435:329::-;17556:4;17594:2;17583:9;17579:18;17571:26;;17643:9;17637:4;17633:20;17629:1;17618:9;17614:17;17607:47;17671:86;17752:4;17743:6;17735;17671:86;:::i;:::-;17663:94;;17435:329;;;;;:::o;17770:225::-;17910:34;17906:1;17898:6;17894:14;17887:58;17979:8;17974:2;17966:6;17962:15;17955:33;17770:225;:::o;18001:366::-;18143:3;18164:67;18228:2;18223:3;18164:67;:::i;:::-;18157:74;;18240:93;18329:3;18240:93;:::i;:::-;18358:2;18353:3;18349:12;18342:19;;18001:366;;;:::o;18373:419::-;18539:4;18577:2;18566:9;18562:18;18554:26;;18626:9;18620:4;18616:20;18612:1;18601:9;18597:17;18590:47;18654:131;18780:4;18654:131;:::i;:::-;18646:139;;18373:419;;;:::o;18798:118::-;18885:24;18903:5;18885:24;:::i;:::-;18880:3;18873:37;18798:118;;:::o;18922:332::-;19043:4;19081:2;19070:9;19066:18;19058:26;;19094:71;19162:1;19151:9;19147:17;19138:6;19094:71;:::i;:::-;19175:72;19243:2;19232:9;19228:18;19219:6;19175:72;:::i;:::-;18922:332;;;;;:::o;19260:182::-;19400:34;19396:1;19388:6;19384:14;19377:58;19260:182;:::o;19448:366::-;19590:3;19611:67;19675:2;19670:3;19611:67;:::i;:::-;19604:74;;19687:93;19776:3;19687:93;:::i;:::-;19805:2;19800:3;19796:12;19789:19;;19448:366;;;:::o;19820:419::-;19986:4;20024:2;20013:9;20009:18;20001:26;;20073:9;20067:4;20063:20;20059:1;20048:9;20044:17;20037:47;20101:131;20227:4;20101:131;:::i;:::-;20093:139;;19820:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"992200","executionCost":"1034","totalCost":"993234"},"external":{"owner()":"2589","renounceOwnership()":"30421","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"infinite","settingManagerBool(bytes32,address,bool)":"infinite","transferOwnership(address)":"30788","updateProtocolAddresses(bytes32,address)":"51552","updateProtocolAggregator(bytes)":"infinite","updateProtocolFees(uint128,uint128)":"infinite"}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"32200882","settingManagerBool(bytes32,address,bool)":"99e3c0b4","transferOwnership(address)":"f2fde38b","updateProtocolAddresses(bytes32,address)":"79a0effb","updateProtocolAggregator(bytes)":"cb79455b","updateProtocolFees(uint128,uint128)":"f5326b19"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"protocolFee\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"validatorFeePercent\",\"type\":\"uint128\"}],\"name\":\"PaycrestFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"SetAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"SetFeeRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SettingManagerBool\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"institutions\",\"type\":\"tuple[]\"}],\"name\":\"setSupportedInstitutions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"settingManagerBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"updateProtocolAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"updateProtocolAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_protocolFeePercent\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_validatorFeePercent\",\"type\":\"uint128\"}],\"name\":\"updateProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PaycrestSettingManager.sol\":\"PaycrestSettingManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"contracts/PaycrestSettingManager.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\n\\ncontract PaycrestSettingManager is OwnableUpgradeable { \\n struct Institution {\\n bytes32 code; // usually not more than 8 letters\\n bytes32 name; // \\n }\\n struct InstitutionByCode {\\n bytes32 name;\\n bytes32 currency;\\n }\\n uint256 internal MAX_BPS;\\n uint128 internal protocolFeePercent; // 5%\\n uint128 internal validatorFeePercent; // 0.5%\\n address internal feeRecipient;\\n address internal _aggregatorAddress;\\n bytes internal _aggregator;\\n \\n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\\n uint256[50] private __gap;\\n\\n mapping(address => bool) internal _isTokenSupported;\\n mapping(address => bool) internal _isWhitelisted;\\n\\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\\n\\n event SettingManagerBool(bytes32 what, address value, bool status);\\n event PaycrestFees(uint128 protocolFee, uint128 validatorFeePercent);\\n event SetAggregator(bytes aggregator);\\n event SetFeeRecipient(address feeRecipient);\\n\\n \\n /* ##################################################################\\n OWNER FUNCTIONS\\n ################################################################## */\\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"token\\\") _isTokenSupported[value] = status;\\n if (what == \\\"whitelist\\\") _isWhitelisted[value] = status;\\n\\n emit SettingManagerBool(what, value, status);\\n }\\n\\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \\n uint256 length = institutions.length;\\n for (uint i = 0; i < length; ) {\\n supportedInstitutions[currency].push(institutions[i]);\\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\\n name: institutions[i].name, currency: currency\\n });\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function updateProtocolFees(uint128 _protocolFeePercent, uint128 _validatorFeePercent) external onlyOwner {\\n protocolFeePercent = _protocolFeePercent;\\n validatorFeePercent = _validatorFeePercent;\\n emit PaycrestFees(_protocolFeePercent, _validatorFeePercent);\\n }\\n\\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"fee\\\") feeRecipient = value;\\n if (what == \\\"aggregator\\\") _aggregatorAddress = value;\\n }\\n\\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\\n _aggregator = aggregator;\\n emit SetAggregator(aggregator);\\n }\\n\\n}\\n\",\"keccak256\":\"0x6524d2af2d5e14c160ce5f57f202d38f3112e87d427bbc9ddf06dd5ada4c7497\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":3631,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"MAX_BPS","offset":0,"slot":"101","type":"t_uint256"},{"astId":3633,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"protocolFeePercent","offset":0,"slot":"102","type":"t_uint128"},{"astId":3635,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"validatorFeePercent","offset":16,"slot":"102","type":"t_uint128"},{"astId":3637,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"feeRecipient","offset":0,"slot":"103","type":"t_address"},{"astId":3639,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_aggregatorAddress","offset":0,"slot":"104","type":"t_address"},{"astId":3641,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_aggregator","offset":0,"slot":"105","type":"t_bytes_storage"},{"astId":3645,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"106","type":"t_array(t_uint256)50_storage"},{"astId":3649,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_isTokenSupported","offset":0,"slot":"156","type":"t_mapping(t_address,t_bool)"},{"astId":3653,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_isWhitelisted","offset":0,"slot":"157","type":"t_mapping(t_address,t_bool)"},{"astId":3659,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"supportedInstitutions","offset":0,"slot":"158","type":"t_mapping(t_bytes32,t_array(t_struct(Institution)3624_storage)dyn_storage)"},{"astId":3664,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"supportedInstitutionsByCode","offset":0,"slot":"159","type":"t_mapping(t_bytes32,t_struct(InstitutionByCode)3629_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Institution)3624_storage)dyn_storage":{"base":"t_struct(Institution)3624_storage","encoding":"dynamic_array","label":"struct PaycrestSettingManager.Institution[]","numberOfBytes":"32"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_array(t_struct(Institution)3624_storage)dyn_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])","numberOfBytes":"32","value":"t_array(t_struct(Institution)3624_storage)dyn_storage"},"t_mapping(t_bytes32,t_struct(InstitutionByCode)3629_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)","numberOfBytes":"32","value":"t_struct(InstitutionByCode)3629_storage"},"t_struct(Institution)3624_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.Institution","members":[{"astId":3621,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"code","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3623,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"name","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(InstitutionByCode)3629_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.InstitutionByCode","members":[{"astId":3626,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"name","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3628,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"currency","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interface/IPaycrest.sol":{"IPaycrest":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"institutionCode","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"string","name":"messageHash","type":"string"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardValidator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"uint96","name":"settlePercent","type":"uint96"}],"name":"Settled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSenderFee","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_institutionCode","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"uint96","name":"_rate","type":"uint96"},{"internalType":"address","name":"_senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"_senderFee","type":"uint256"},{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"string","name":"messageHash","type":"string"}],"name":"createOrder","outputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAggregator","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint128","name":"protocolReward","type":"uint128"},{"internalType":"uint128","name":"validatorFeePercent","type":"uint128"},{"internalType":"uint256","name":"max_bps","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"name":"getOrderInfo","outputs":[{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"senderFee","type":"uint256"},{"internalType":"uint96","name":"rate","type":"uint96"},{"internalType":"bool","name":"isFulfilled","type":"bool"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint96","name":"currentBPS","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPaycrest.Order","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"}],"name":"refund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"address[]","name":"_validators","type":"address[]"},{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint64","name":"_settlePercent","type":"uint64"},{"internalType":"bool","name":"_isPartner","type":"bool"}],"name":"settle","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Chef Photons, Paycrest Team serving high quality drinks; drink responsibly. Factory and global config params","events":{"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)":{"details":"Emitted when deposit is made."},"Refunded(bytes32,bytes32)":{"details":"Emitted when aggregator refund transaction."},"RewardValidator(address,uint256)":{"details":"Emitted when primary validator get therir rewards."},"Settled(bytes32,bytes32,bytes32,address,uint96)":{"details":"Emitted when aggregator settle transaction."},"TransferSenderFee(address,uint256)":{"details":"Emitted when sender get therir rewards."}},"kind":"dev","methods":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"details":"See {isTokenSupported}. `amount` must be greater than minimum `_refundable` refundable address must not be zero address","params":{"_amount":"amount in the decimal of `_token` above.","_institutionCode":"institution code of the sender.","_label":"reference of the sender.","_rate":"rate at which sender intended to sell `_amount` of `_token`.","_refundAddress":"address that is going to recieve `_amount` in `_token` when there is a need to refund.","_senderFee":"amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.","_senderFeeRecipient":"address that is going to recieve `_senderFee` in `_token` when there is a need to refund.","_token":"address of the token.","messageHash":"hash must be the result of a hash operation for the verification to be secure. message"},"returns":{"_orderId":"the bytes20 which is the orderId"}},"getAggregator()":{"returns":{"_0":"aggregator public key."}},"getAggregatorAddress()":{"returns":{"_0":"address of `Aggregator`."}},"getFeeDetails()":{"returns":{"max_bps":"maximum amount in bps \"100% == 100_000\".","protocolReward":"amount that will be taken in percentage on all trade.","validatorFeePercent":"amount that will be given to primary validator in percentage from `protocolReward`"}},"getOrderInfo(bytes32)":{"params":{"_orderId":"transaction Id."}},"getWhitelistedStatus(address)":{"params":{"sender":"address of the sender."},"returns":{"_0":"address of `status`."}},"isTokenSupported(address)":{"params":{"_token":"address of the token to check."},"returns":{"_0":"return the status of `_token` {bool}"}},"refund(bytes32,bytes32)":{"params":{"_label":"reference of the sender.","_orderId":"transaction Id."},"returns":{"_0":"return the status of transaction {bool}"}},"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":{"params":{"_isPartner":"is the liquidity provider a partner.","_label":"reference of the sender.","_liquidityProvider":"address of the liquidity provider.","_orderId":"transaction Id.","_settlePercent":"rate at which the transaction is settled.","_validators":"arrays of secondary validators."},"returns":{"_0":"return the status of transaction {bool}"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"2654ec7e","getAggregator()":"3ad59dbc","getAggregatorAddress()":"e8d6e0de","getFeeDetails()":"b810c636","getOrderInfo(bytes32)":"768c6ec0","getWhitelistedStatus(address)":"d8e8de34","isTokenSupported(address)":"75151b63","refund(bytes32,bytes32)":"e4683a79","settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":"137764fb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"institutionCode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"Refunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"settlePercent\",\"type\":\"uint96\"}],\"name\":\"Settled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSenderFee\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_institutionCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"_rate\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"_senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_senderFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"createOrder\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"protocolReward\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"validatorFeePercent\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"max_bps\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"name\":\"getOrderInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"rate\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"isFulfilled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"currentBPS\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaycrest.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getWhitelistedStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"}],\"name\":\"refund\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_liquidityProvider\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_settlePercent\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isPartner\",\"type\":\"bool\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Chef Photons, Paycrest Team serving high quality drinks; drink responsibly. Factory and global config params\",\"events\":{\"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)\":{\"details\":\"Emitted when deposit is made.\"},\"Refunded(bytes32,bytes32)\":{\"details\":\"Emitted when aggregator refund transaction.\"},\"RewardValidator(address,uint256)\":{\"details\":\"Emitted when primary validator get therir rewards.\"},\"Settled(bytes32,bytes32,bytes32,address,uint96)\":{\"details\":\"Emitted when aggregator settle transaction.\"},\"TransferSenderFee(address,uint256)\":{\"details\":\"Emitted when sender get therir rewards.\"}},\"kind\":\"dev\",\"methods\":{\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"details\":\"See {isTokenSupported}. `amount` must be greater than minimum `_refundable` refundable address must not be zero address\",\"params\":{\"_amount\":\"amount in the decimal of `_token` above.\",\"_institutionCode\":\"institution code of the sender.\",\"_label\":\"reference of the sender.\",\"_rate\":\"rate at which sender intended to sell `_amount` of `_token`.\",\"_refundAddress\":\"address that is going to recieve `_amount` in `_token` when there is a need to refund.\",\"_senderFee\":\"amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\",\"_senderFeeRecipient\":\"address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\",\"_token\":\"address of the token.\",\"messageHash\":\"hash must be the result of a hash operation for the verification to be secure. message\"},\"returns\":{\"_orderId\":\"the bytes20 which is the orderId\"}},\"getAggregator()\":{\"returns\":{\"_0\":\"aggregator public key.\"}},\"getAggregatorAddress()\":{\"returns\":{\"_0\":\"address of `Aggregator`.\"}},\"getFeeDetails()\":{\"returns\":{\"max_bps\":\"maximum amount in bps \\\"100% == 100_000\\\".\",\"protocolReward\":\"amount that will be taken in percentage on all trade.\",\"validatorFeePercent\":\"amount that will be given to primary validator in percentage from `protocolReward`\"}},\"getOrderInfo(bytes32)\":{\"params\":{\"_orderId\":\"transaction Id.\"}},\"getWhitelistedStatus(address)\":{\"params\":{\"sender\":\"address of the sender.\"},\"returns\":{\"_0\":\"address of `status`.\"}},\"isTokenSupported(address)\":{\"params\":{\"_token\":\"address of the token to check.\"},\"returns\":{\"_0\":\"return the status of `_token` {bool}\"}},\"refund(bytes32,bytes32)\":{\"params\":{\"_label\":\"reference of the sender.\",\"_orderId\":\"transaction Id.\"},\"returns\":{\"_0\":\"return the status of transaction {bool}\"}},\"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)\":{\"params\":{\"_isPartner\":\"is the liquidity provider a partner.\",\"_label\":\"reference of the sender.\",\"_liquidityProvider\":\"address of the liquidity provider.\",\"_orderId\":\"transaction Id.\",\"_settlePercent\":\"rate at which the transaction is settled.\",\"_validators\":\"arrays of secondary validators.\"},\"returns\":{\"_0\":\"return the status of transaction {bool}\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"notice\":\"lock sender `_amount` of `token` into Paycrest. Requirements: `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\"},\"getAggregator()\":{\"notice\":\"get aggregator public key.\"},\"getAggregatorAddress()\":{\"notice\":\"get address of liquidity aggregator.\"},\"getFeeDetails()\":{\"notice\":\"get every rewards and address on Paycrest.\"},\"getOrderInfo(bytes32)\":{\"notice\":\"get order details.\"},\"getWhitelistedStatus(address)\":{\"notice\":\"get address of sender whitelisting status.\"},\"isTokenSupported(address)\":{\"notice\":\"get supported token from Paycrest.\"},\"refund(bytes32,bytes32)\":{\"notice\":\"refund to the specified refundable address. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `isFulfilled` must be false.\"},\"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)\":{\"notice\":\"settle transaction and distribute rewards accordingly. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `_primaryValidator` must have stake on the Paycrest staking platform. `_secondaryValidators` must have stake on the Paycrest staking platform. `amount` must be greater than minimum `_refundable` refundable address must not be zero address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interface/IPaycrest.sol\":\"IPaycrest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/interface/IPaycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n/**\\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\\n * Factory and global config params\\n */\\ninterface IPaycrest {\\n \\n /* ##################################################################\\n EVENTS\\n ################################################################## */\\n /// @dev Emitted when deposit is made.\\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\\n /// @dev Emitted when aggregator settle transaction.\\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\\n /// @dev Emitted when aggregator refund transaction.\\n event Refunded(bytes32 indexed orderId, bytes32 label);\\n /// @dev Emitted when sender get therir rewards.\\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\\n /// @dev Emitted when primary validator get therir rewards.\\n event RewardValidator(address indexed validator, uint256 indexed amount);\\n\\n /* ##################################################################\\n STRUCTS\\n ################################################################## */\\n struct TransactionMetadata {\\n bytes8 identifier; // slot 0\\n bytes8 institution; // slot 0\\n bytes8 name; // slot 0\\n bytes8 currency; // slot 0\\n uint256 liquidityProviderID; // slot 1\\n }\\n\\n struct Order {\\n address seller; // slot 0\\n address token; // slot 1\\n address senderFeeRecipient;\\n uint256 senderFee;\\n uint96 rate; // slot 1\\n bool isFulfilled; // slot 2 {11 bytes available}\\n address refundAddress; // slot 2 {12 bytes available}\\n uint96 currentBPS; // slot 2 {}\\n uint256 amount; // slot 3\\n }\\n\\n\\n /* ##################################################################\\n EXTERNAL CALLS\\n ################################################################## */\\n /// @notice lock sender `_amount` of `token` into Paycrest.\\n /// Requirements:\\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _token address of the token.\\n /// @param _amount amount in the decimal of `_token` above.\\n /// @param _institutionCode institution code of the sender.\\n /// @param _label reference of the sender.\\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\\n /// @return _orderId the bytes20 which is the orderId\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash) external returns(bytes32 _orderId);\\n\\n /// @notice settle transaction and distribute rewards accordingly.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @param _validators arrays of secondary validators.\\n /// @param _liquidityProvider address of the liquidity provider.\\n /// @param _settlePercent rate at which the transaction is settled.\\n /// @param _isPartner is the liquidity provider a partner.\\n /// @return return the status of transaction {bool}\\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\\n\\n /// @notice refund to the specified refundable address.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `isFulfilled` must be false.\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @return return the status of transaction {bool}\\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\\n\\n /// @notice get supported token from Paycrest.\\n /// @param _token address of the token to check.\\n /// @return return the status of `_token` {bool}\\n function isTokenSupported(address _token) external view returns(bool);\\n\\n /// @notice get order details.\\n /// @param _orderId transaction Id.\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\\n\\n /// @notice get every rewards and address on Paycrest.\\n /// @return protocolReward amount that will be taken in percentage on all trade.\\n /// @return validatorFeePercent amount that will be given to primary validator in percentage from `protocolReward`\\n /// @return max_bps maximum amount in bps \\\"100% == 100_000\\\".\\n function getFeeDetails() external view returns(\\n uint128 protocolReward, \\n uint128 validatorFeePercent, \\n uint256 max_bps\\n );\\n\\n /// @notice get address of liquidity aggregator.\\n /// @return address of `Aggregator`.\\n function getAggregatorAddress() external view returns(address);\\n\\n /// @notice get aggregator public key.\\n /// @return aggregator public key.\\n function getAggregator() external view returns(bytes memory);\\n \\n /// @notice get address of sender whitelisting status.\\n /// @param sender address of the sender.\\n /// @return address of `status`.\\n function getWhitelistedStatus(address sender) external view returns(bool);\\n\\n}\\n\",\"keccak256\":\"0x7c0459f29e4b1c266f59dcf90bb14443345d43da8579b4cc189bdfdd7237dd58\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"notice":"lock sender `_amount` of `token` into Paycrest. Requirements: `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call."},"getAggregator()":{"notice":"get aggregator public key."},"getAggregatorAddress()":{"notice":"get address of liquidity aggregator."},"getFeeDetails()":{"notice":"get every rewards and address on Paycrest."},"getOrderInfo(bytes32)":{"notice":"get order details."},"getWhitelistedStatus(address)":{"notice":"get address of sender whitelisting status."},"isTokenSupported(address)":{"notice":"get supported token from Paycrest."},"refund(bytes32,bytes32)":{"notice":"refund to the specified refundable address. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `isFulfilled` must be false."},"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":{"notice":"settle transaction and distribute rewards accordingly. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `_primaryValidator` must have stake on the Paycrest staking platform. `_secondaryValidators` must have stake on the Paycrest staking platform. `amount` must be greater than minimum `_refundable` refundable address must not be zero address"}},"version":1}}}}}} \ No newline at end of file diff --git a/artifacts/build-info/ad4e1f20b6468568d873cd5ca3fdd61b.json b/artifacts/build-info/ad4e1f20b6468568d873cd5ca3fdd61b.json new file mode 100644 index 0000000..ed77c36 --- /dev/null +++ b/artifacts/build-info/ad4e1f20b6468568d873cd5ca3fdd61b.json @@ -0,0 +1 @@ +{"id":"ad4e1f20b6468568d873cd5ca3fdd61b","_format":"hh-sol-build-info-1","solcVersion":"0.8.18","solcLongVersion":"0.8.18+commit.87f61d96","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n function __Ownable_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable_init_unchained() internal onlyInitializing {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20PermitUpgradeable {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20Upgradeable {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20Upgradeable.sol\";\nimport \"../extensions/IERC20PermitUpgradeable.sol\";\nimport \"../../../utils/AddressUpgradeable.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20Upgradeable {\n using AddressUpgradeable for address;\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n unchecked {\n uint256 oldAllowance = token.allowance(address(this), spender);\n require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n */\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n * Revert on invalid signature.\n */\n function safePermit(\n IERC20PermitUpgradeable token,\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal {\n uint256 nonceBefore = token.nonces(owner);\n token.permit(owner, spender, value, deadline, v, r, s);\n uint256 nonceAfter = token.nonces(owner);\n require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\n // and not revert is the subcall reverts.\n\n (bool success, bytes memory returndata) = address(token).call(data);\n return\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../StringsUpgradeable.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSAUpgradeable {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV // Deprecated in v4.8\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\")\n mstore(0x1c, hash)\n message := keccak256(0x00, 0x3c)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", StringsUpgradeable.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, \"\\x19\\x01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n data := keccak256(ptr, 0x42)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\n * `validator` and `data` according to the version 0 of EIP-191.\n *\n * See {recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x00\", validator, data));\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary MathUpgradeable {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMathUpgradeable {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/MathUpgradeable.sol\";\nimport \"./math/SignedMathUpgradeable.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary StringsUpgradeable {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = MathUpgradeable.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMathUpgradeable.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, MathUpgradeable.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"contracts/interface/IPaycrest.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n/**\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\n * Factory and global config params\n */\ninterface IPaycrest {\n \n /* ##################################################################\n EVENTS\n ################################################################## */\n /// @dev Emitted when deposit is made.\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\n /// @dev Emitted when aggregator settle transaction.\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\n /// @dev Emitted when aggregator refund transaction.\n event Refunded(bytes32 indexed orderId, bytes32 label);\n /// @dev Emitted when sender get therir rewards.\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\n /// @dev Emitted when primary validator get therir rewards.\n event RewardValidator(address indexed validator, uint256 indexed amount);\n\n /* ##################################################################\n STRUCTS\n ################################################################## */\n struct TransactionMetadata {\n bytes8 identifier; // slot 0\n bytes8 institution; // slot 0\n bytes8 name; // slot 0\n bytes8 currency; // slot 0\n uint256 liquidityProviderID; // slot 1\n }\n\n struct Order {\n address seller; // slot 0\n address token; // slot 1\n address senderFeeRecipient;\n uint256 senderFee;\n uint96 rate; // slot 1\n bool isFulfilled; // slot 2 {11 bytes available}\n address refundAddress; // slot 2 {12 bytes available}\n uint96 currentBPS; // slot 2 {}\n uint256 amount; // slot 3\n }\n\n\n /* ##################################################################\n EXTERNAL CALLS\n ################################################################## */\n /// @notice lock sender `_amount` of `token` into Paycrest.\n /// Requirements:\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\n /// `amount` must be greater than minimum\n /// `_refundable` refundable address must not be zero address\n /// @param _token address of the token.\n /// @param _amount amount in the decimal of `_token` above.\n /// @param _institutionCode institution code of the sender.\n /// @param _label reference of the sender.\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\n /// @return _orderId the bytes20 which is the orderId\n function createOrder(\n address _token, \n uint256 _amount, \n bytes32 _institutionCode,\n bytes32 _label,\n uint96 _rate, \n address _senderFeeRecipient,\n uint256 _senderFee,\n address _refundAddress, \n string calldata messageHash) external returns(bytes32 _orderId);\n\n /// @notice settle transaction and distribute rewards accordingly.\n /// Requirements:\n /// {only aggregators call}.\n /// `_orderId` it must be less than total ids.\n /// `_orderId` it must be an open Id.\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\n /// `amount` must be greater than minimum\n /// `_refundable` refundable address must not be zero address\n /// @param _orderId transaction Id.\n /// @param _label reference of the sender.\n /// @param _validators arrays of secondary validators.\n /// @param _liquidityProvider address of the liquidity provider.\n /// @param _settlePercent rate at which the transaction is settled.\n /// @param _isPartner is the liquidity provider a partner.\n /// @return return the status of transaction {bool}\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\n\n /// @notice refund to the specified refundable address.\n /// Requirements:\n /// {only aggregators call}.\n /// `_orderId` it must be less than total ids.\n /// `_orderId` it must be an open Id.\n /// `isFulfilled` must be false.\n /// @param _orderId transaction Id.\n /// @param _label reference of the sender.\n /// @return return the status of transaction {bool}\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\n\n /// @notice get supported token from Paycrest.\n /// @param _token address of the token to check.\n /// @return return the status of `_token` {bool}\n function isTokenSupported(address _token) external view returns(bool);\n\n /// @notice get order details.\n /// @param _orderId transaction Id.\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\n\n /// @notice get every rewards and address on Paycrest.\n /// @return protocolReward amount that will be taken in percentage on all trade.\n /// @return max_bps maximum amount in bps \"100% == 100_000\".\n function getFeeDetails() external view returns(\n uint64 protocolReward, \n uint256 max_bps\n );\n\n /// @notice get address of liquidity aggregator.\n /// @return address of `Aggregator`.\n function getAggregatorAddress() external view returns(address);\n\n /// @notice get aggregator public key.\n /// @return aggregator public key.\n function getAggregator() external view returns(bytes memory);\n \n /// @notice get address of sender whitelisting status.\n /// @param sender address of the sender.\n /// @return address of `status`.\n function getWhitelistedStatus(address sender) external view returns(bool);\n\n}\n"},"contracts/Paycrest.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\nimport \"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\";\nimport {PaycrestSettingManager} from \"./PaycrestSettingManager.sol\";\nimport {IPaycrest, IERC20} from \"./interface/IPaycrest.sol\";\ncontract Paycrest is IPaycrest, PaycrestSettingManager { \n using SafeERC20Upgradeable for IERC20;\n using ECDSAUpgradeable for bytes32;\n struct fee {\n uint256 protocolFee;\n uint256 liquidityProviderAmount;\n }\n mapping(bytes32 => Order) private order;\n mapping(address => uint256) private _nonce;\n uint256[50] private __gap;\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize(address _usdc) external initializer { \n _isTokenSupported[_usdc] = true; \n MAX_BPS = 100_000; \n protocolFeePercent = 5000; // 5%\n __Ownable_init();\n }\n\n modifier onlyAggregator {\n require(msg.sender == _aggregatorAddress, \"OnlyAggregator\");\n _;\n }\n \n /* ##################################################################\n USER CALLS\n ################################################################## */\n /** @dev See {createOrder-IPaycrest}. */\n function createOrder(\n address _token, \n uint256 _amount, \n bytes32 _institutionCode,\n bytes32 _label,\n uint96 _rate, \n address _senderFeeRecipient,\n uint256 _senderFee,\n address _refundAddress, \n string calldata messageHash\n ) external returns(bytes32 orderId) {\n // checks that are required\n _handler(_token, _amount, _refundAddress, _senderFeeRecipient, _institutionCode);\n // require that sender fee is less than protocol fee\n require(_senderFee <= (_amount * protocolFeePercent) / MAX_BPS, \"SenderFeeTooHigh\");\n // first transfer token from msg.sender\n IERC20(_token).transferFrom(msg.sender, address(this), _amount);\n // increase users nonce to avoid replay attacks\n _nonce[msg.sender] ++;\n // @chibie @5ran6\n // @todo sender fee should have limit, let say the maximum amount of sender fee should be 1% of the amount\n // generate transaction id for the transaction\n orderId = keccak256(abi.encode(msg.sender, _nonce[msg.sender]));\n // update transaction\n order[orderId] = Order({\n seller: msg.sender,\n token: _token,\n senderFeeRecipient: _senderFeeRecipient,\n senderFee: _senderFee,\n rate: _rate,\n isFulfilled: false,\n refundAddress: _refundAddress,\n currentBPS: uint64(MAX_BPS),\n amount: _amount\n });\n // emit deposit event\n emit Deposit(_token, _amount, orderId, _rate, _institutionCode, _label, messageHash);\n }\n\n function _handler(address _token, uint256 _amount, address _refundAddress, address _senderFeeRecipient, bytes32 _institutionCode) internal view {\n // use require for all the custom errors\n require(_isTokenSupported[_token], \"TokenNotSupported\");\n require(_amount > 0, \"AmountIsZero\");\n require(_refundAddress != address(0), \"ThrowZeroAddress\");\n require(_senderFeeRecipient != address(0), \"ThrowZeroAddress\");\n require(supportedInstitutionsByCode[_institutionCode].name != bytes32(0), \"InvalidInstitutionCode\");\n }\n\n /* ##################################################################\n AGGREGATOR FUNCTIONS\n ################################################################## */\n /** @dev See {settle-IPaycrest}. */\n function settle(\n bytes32 _splitOrderId,\n bytes32 _orderId, \n bytes32 _label,\n address[] calldata _validators, \n address _liquidityProvider, \n uint64 _settlePercent,\n bool _isPartner\n ) external onlyAggregator() returns(bytes32, address) {\n // ensure the transaction has not been fulfilled\n require(!order[_orderId].isFulfilled, \"OrderFulfilled\");\n // load the token into memory\n address token = order[_orderId].token;\n // substract sum of amount based on the input _settlePercent\n order[_orderId].currentBPS -= _settlePercent;\n // if transaction amount is zero\n // load the fees and transfer associated protocol fees to protocol fee recipient\n ( fee memory _feeParams ) = _calculateFees(_orderId, _settlePercent, _isPartner);\n if(order[_orderId].currentBPS == 0) {\n // update the transaction to be fulfilled\n order[_orderId].isFulfilled = true;\n if (order[_orderId].senderFee > 0) {\n // transfer sender fee\n transferSenderFee(_orderId);\n }\n }\n \n if (_feeParams.protocolFee > 0) {\n // transfer protocol fee\n IERC20(token).transfer(feeRecipient, _feeParams.protocolFee);\n }\n // // transfer to liquidity provider \n IERC20(token).transfer(_liquidityProvider, _feeParams.liquidityProviderAmount);\n\n // emit event\n emit Settled(_splitOrderId, _orderId, _label, _liquidityProvider, _settlePercent);\n return (_orderId, token);\n }\n\n function transferSenderFee(bytes32 _orderId) internal {\n address recipient = order[_orderId].senderFeeRecipient;\n uint256 _fee = order[_orderId].senderFee;\n // transfer sender fee\n IERC20(order[_orderId].token).transfer(recipient, _fee);\n // emmit event\n emit TransferSenderFee(recipient, _fee);\n }\n\n /** @dev See {refund-IPaycrest}. */\n function refund(bytes32 _orderId, bytes32 _label) external onlyAggregator() returns(bool) {\n // ensure the transaction has not been fulfilled\n require(!order[_orderId].isFulfilled, \"OrderFulfilled\");\n // reser state values\n order[_orderId].isFulfilled = true;\n order[_orderId].currentBPS = 0;\n // transfer to seller \n IERC20(order[_orderId].token).transfer(order[_orderId].refundAddress, order[_orderId].amount);\n // emit\n emit Refunded(_orderId, _label);\n return true;\n }\n\n function _calculateFees(bytes32 _orderId, uint96 _settlePercent, bool _isPartner) private view returns(fee memory _feeParams ) {\n // get the total amount associated with the orderId\n uint256 amount = order[_orderId].amount;\n // get sender fee from amount\n amount = amount - order[_orderId].senderFee;\n // get the settled percent that is scheduled for this amount\n _feeParams.liquidityProviderAmount = (amount * _settlePercent) / MAX_BPS;\n // deduct protocol fees from the new total amount\n _feeParams.protocolFee = (_feeParams.liquidityProviderAmount * protocolFeePercent) / MAX_BPS; \n // substract total fees from the new amount after getting the scheduled amount\n _feeParams.liquidityProviderAmount = (_feeParams.liquidityProviderAmount - _feeParams.protocolFee);\n // if (_isPartner) protocol fee should be 0, and the whole protocol fee should be added to liquidity provider\n if (_isPartner) {\n _feeParams.liquidityProviderAmount += _feeParams.protocolFee;\n _feeParams.protocolFee = 0;\n }\n }\n \n /* ##################################################################\n VIEW CALLS\n ################################################################## */\n /** @dev See {getOrderInfo-IPaycrest}. */\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory) {\n return order[_orderId];\n }\n\n /** @dev See {isTokenSupported-IPaycrest}. */\n function isTokenSupported(address _token) external view returns(bool) {\n return _isTokenSupported[_token];\n }\n\n /** @dev See {getSupportedInstitutionName-IPaycrest}. */\n function getSupportedInstitutionName(bytes32 code) external view returns (InstitutionByCode memory) {\n return supportedInstitutionsByCode[code];\n }\n\n function getSupportedInstitutions(bytes32 currency) external view returns (Institution[] memory) {\n Institution[] memory institutions = supportedInstitutions[currency];\n uint256 length = institutions.length;\n Institution[] memory result = new Institution[](length);\n \n for (uint256 i = 0; i < length; ) {\n result[i] = institutions[i];\n unchecked {\n i++;\n }\n }\n \n return result;\n }\n\n /** @dev See {getFeeDetails-IPaycrest}. */\n function getFeeDetails() external view returns(\n uint64, \n uint256\n ) {\n return(protocolFeePercent, MAX_BPS);\n }\n\n /** @dev See {getAggregatorAddress-IPaycrest}. */\n function getAggregatorAddress() external view returns(address) {\n return _aggregatorAddress;\n }\n\n /** @dev See {getWhitelistedStatus-IPaycrest}. */\n function getWhitelistedStatus(address sender) external view returns(bool) {\n return _isWhitelisted[sender];\n }\n\n /** @dev See {getAggregator-IPaycrest}. */\n function getAggregator() external view returns(bytes memory) {\n return _aggregator;\n }\n\n\n // DECLARE A FUNCTION TO WITHDRAW ANY TOKEN FROM CONTRACT CAN ONLY NE CALLED BY OWNER\n function withdraw(address _token, address _recipient, uint256 _amount) external onlyOwner {\n IERC20(_token).transfer(_recipient, _amount);\n }\n\n}\n"},"contracts/PaycrestSettingManager.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\n\ncontract PaycrestSettingManager is OwnableUpgradeable { \n struct Institution {\n bytes32 code; // usually not more than 8 letters\n bytes32 name; // \n }\n struct InstitutionByCode {\n bytes32 name;\n bytes32 currency;\n }\n uint256 internal MAX_BPS;\n uint64 internal protocolFeePercent; // 5%\n address internal feeRecipient;\n address internal _aggregatorAddress;\n bytes internal _aggregator;\n \n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\n uint256[50] private __gap;\n\n mapping(address => bool) internal _isTokenSupported;\n mapping(address => bool) internal _isWhitelisted;\n\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\n\n event SettingManagerBool(bytes32 what, address value, bool status);\n event PaycrestFees(uint64 protocolFee);\n event SetAggregator(bytes aggregator);\n event SetFeeRecipient(address feeRecipient);\n \n /* ##################################################################\n OWNER FUNCTIONS\n ################################################################## */\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\n require(value != address(0), \"Paycrest: zero address\");\n if (what == \"token\") _isTokenSupported[value] = status;\n if (what == \"whitelist\") _isWhitelisted[value] = status;\n\n emit SettingManagerBool(what, value, status);\n }\n\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \n uint256 length = institutions.length;\n for (uint i = 0; i < length; ) {\n supportedInstitutions[currency].push(institutions[i]);\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\n name: institutions[i].name, currency: currency\n });\n unchecked {\n i++;\n }\n }\n }\n\n function updateProtocolFees(uint64 _protocolFeePercent) external onlyOwner {\n protocolFeePercent = _protocolFeePercent;\n emit PaycrestFees(_protocolFeePercent);\n }\n\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\n require(value != address(0), \"Paycrest: zero address\");\n if (what == \"fee\") feeRecipient = value;\n if (what == \"aggregator\") _aggregatorAddress = value;\n }\n\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\n _aggregator = aggregator;\n emit SetAggregator(aggregator);\n }\n\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"errors":[{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n --> contracts/Paycrest.sol:94:9:\n |\n94 | address[] calldata _validators, \n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":3967,"file":"contracts/Paycrest.sol","start":3937},"type":"Warning"}],"sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300],"OwnableUpgradeable":[131]},"id":132,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":132,"sourceUnit":1163,"src":"127:41:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":132,"sourceUnit":301,"src":"169:42:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5,"name":"Initializable","nameLocations":["748:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":300,"src":"748:13:0"},"id":6,"nodeType":"InheritanceSpecifier","src":"748:13:0"},{"baseName":{"id":7,"name":"ContextUpgradeable","nameLocations":["763:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":1162,"src":"763:18:0"},"id":8,"nodeType":"InheritanceSpecifier","src":"763:18:0"}],"canonicalName":"OwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"213:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":131,"linearizedBaseContracts":[131,1162,300],"name":"OwnableUpgradeable","nameLocation":"726:18:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10,"mutability":"mutable","name":"_owner","nameLocation":"804:6:0","nodeType":"VariableDeclaration","scope":131,"src":"788:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"788:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":16,"name":"OwnershipTransferred","nameLocation":"823:20:0","nodeType":"EventDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"860:13:0","nodeType":"VariableDeclaration","scope":16,"src":"844:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"844:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"891:8:0","nodeType":"VariableDeclaration","scope":16,"src":"875:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"843:57:0"},"src":"817:84:0"},{"body":{"id":25,"nodeType":"Block","src":"1055:43:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37,"src":"1065:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":23,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1065:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24,"nodeType":"ExpressionStatement","src":"1065:26:0"}]},"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"907:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":26,"implemented":true,"kind":"function","modifiers":[{"id":20,"kind":"modifierInvocation","modifierName":{"id":19,"name":"onlyInitializing","nameLocations":["1038:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"1038:16:0"},"nodeType":"ModifierInvocation","src":"1038:16:0"}],"name":"__Ownable_init","nameLocation":"1012:14:0","nodeType":"FunctionDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"1026:2:0"},"returnParameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"1055:0:0"},"scope":131,"src":"1003:95:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":36,"nodeType":"Block","src":"1166:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":32,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"1195:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":33,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1195:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"1176:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":34,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1176:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35,"nodeType":"ExpressionStatement","src":"1176:32:0"}]},"id":37,"implemented":true,"kind":"function","modifiers":[{"id":29,"kind":"modifierInvocation","modifierName":{"id":28,"name":"onlyInitializing","nameLocations":["1149:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"1149:16:0"},"nodeType":"ModifierInvocation","src":"1149:16:0"}],"name":"__Ownable_init_unchained","nameLocation":"1113:24:0","nodeType":"FunctionDefinition","parameters":{"id":27,"nodeType":"ParameterList","parameters":[],"src":"1137:2:0"},"returnParameters":{"id":30,"nodeType":"ParameterList","parameters":[],"src":"1166:0:0"},"scope":131,"src":"1104:111:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":44,"nodeType":"Block","src":"1324:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":40,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"1334:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1334:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42,"nodeType":"ExpressionStatement","src":"1334:13:0"},{"id":43,"nodeType":"PlaceholderStatement","src":"1357:1:0"}]},"documentation":{"id":38,"nodeType":"StructuredDocumentation","src":"1221:77:0","text":" @dev Throws if called by any account other than the owner."},"id":45,"name":"onlyOwner","nameLocation":"1312:9:0","nodeType":"ModifierDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"1321:2:0"},"src":"1303:62:0","virtual":false,"visibility":"internal"},{"body":{"id":53,"nodeType":"Block","src":"1496:30:0","statements":[{"expression":{"id":51,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"1513:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":50,"id":52,"nodeType":"Return","src":"1506:13:0"}]},"documentation":{"id":46,"nodeType":"StructuredDocumentation","src":"1371:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":54,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1450:5:0","nodeType":"FunctionDefinition","parameters":{"id":47,"nodeType":"ParameterList","parameters":[],"src":"1455:2:0"},"returnParameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54,"src":"1487:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1486:9:0"},"scope":131,"src":"1441:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":67,"nodeType":"Block","src":"1644:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":63,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1662:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":60,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1662:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":61,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"1673:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1662:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1687:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":58,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1654:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1654:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1654:68:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1532:62:0","text":" @dev Throws if the sender is not the owner."},"id":68,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1608:11:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1619:2:0"},"returnParameters":{"id":57,"nodeType":"ParameterList","parameters":[],"src":"1644:0:0"},"scope":131,"src":"1599:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":81,"nodeType":"Block","src":"2118:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":77,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2155:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2147:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"2147:7:0","typeDescriptions":{}}},"id":78,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2147:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"2128:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2128:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80,"nodeType":"ExpressionStatement","src":"2128:30:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1735:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":82,"implemented":true,"kind":"function","modifiers":[{"id":72,"kind":"modifierInvocation","modifierName":{"id":71,"name":"onlyOwner","nameLocations":["2108:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2108:9:0"},"nodeType":"ModifierInvocation","src":"2108:9:0"}],"name":"renounceOwnership","nameLocation":"2073:17:0","nodeType":"FunctionDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[],"src":"2090:2:0"},"returnParameters":{"id":73,"nodeType":"ParameterList","parameters":[],"src":"2118:0:0"},"scope":131,"src":"2064:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":104,"nodeType":"Block","src":"2384:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":96,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":91,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"2402:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2422:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":93,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2414:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"2414:7:0","typeDescriptions":{}}},"id":95,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2414:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2402:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":97,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2426:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":90,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2394:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":98,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2394:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":99,"nodeType":"ExpressionStatement","src":"2394:73:0"},{"expression":{"arguments":[{"id":101,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"2496:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":100,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"2477:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2477:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":103,"nodeType":"ExpressionStatement","src":"2477:28:0"}]},"documentation":{"id":83,"nodeType":"StructuredDocumentation","src":"2171:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":105,"implemented":true,"kind":"function","modifiers":[{"id":88,"kind":"modifierInvocation","modifierName":{"id":87,"name":"onlyOwner","nameLocations":["2374:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2374:9:0"},"nodeType":"ModifierInvocation","src":"2374:9:0"}],"name":"transferOwnership","nameLocation":"2323:17:0","nodeType":"FunctionDefinition","parameters":{"id":86,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85,"mutability":"mutable","name":"newOwner","nameLocation":"2349:8:0","nodeType":"VariableDeclaration","scope":105,"src":"2341:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2340:18:0"},"returnParameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"2384:0:0"},"scope":131,"src":"2314:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":124,"nodeType":"Block","src":"2729:124:0","statements":[{"assignments":[112],"declarations":[{"constant":false,"id":112,"mutability":"mutable","name":"oldOwner","nameLocation":"2747:8:0","nodeType":"VariableDeclaration","scope":124,"src":"2739:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":114,"initialValue":{"id":113,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"2758:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2739:25:0"},{"expression":{"id":117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":115,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"2774:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":116,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2783:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2774:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":118,"nodeType":"ExpressionStatement","src":"2774:17:0"},{"eventCall":{"arguments":[{"id":120,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112,"src":"2827:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2837:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":119,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"2806:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2806:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"EmitStatement","src":"2801:45:0"}]},"documentation":{"id":106,"nodeType":"StructuredDocumentation","src":"2518:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":125,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2675:18:0","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":108,"mutability":"mutable","name":"newOwner","nameLocation":"2702:8:0","nodeType":"VariableDeclaration","scope":125,"src":"2694:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"2694:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2693:18:0"},"returnParameters":{"id":110,"nodeType":"ParameterList","parameters":[],"src":"2729:0:0"},"scope":131,"src":"2666:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"2859:254:0","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":130,"mutability":"mutable","name":"__gap","nameLocation":"3138:5:0","nodeType":"VariableDeclaration","scope":131,"src":"3118:25:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":127,"name":"uint256","nodeType":"ElementaryTypeName","src":"3118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":129,"length":{"hexValue":"3439","id":128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3126:2:0","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"3118:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":132,"src":"708:2438:0","usedErrors":[]}],"src":"102:3045:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"Initializable":[300]},"id":301,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":133,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:1"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":134,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":301,"sourceUnit":1121,"src":"138:44:1","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":135,"nodeType":"StructuredDocumentation","src":"184:2209:1","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":300,"linearizedBaseContracts":[300],"name":"Initializable","nameLocation":"2412:13:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":136,"nodeType":"StructuredDocumentation","src":"2432:109:1","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":138,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:1","nodeType":"VariableDeclaration","scope":300,"src":"2546:26:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":137,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"2579:91:1","text":" @dev Indicates that the contract is in the process of being initialized."},"id":141,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:1","nodeType":"VariableDeclaration","scope":300,"src":"2675:26:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":140,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":142,"nodeType":"StructuredDocumentation","src":"2708:90:1","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":146,"name":"Initialized","nameLocation":"2809:11:1","nodeType":"EventDefinition","parameters":{"id":145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":144,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:1","nodeType":"VariableDeclaration","scope":146,"src":"2821:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":143,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:1"},"src":"2803:33:1"},{"body":{"id":201,"nodeType":"Block","src":"3269:483:1","statements":[{"assignments":[150],"declarations":[{"constant":false,"id":150,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:1","nodeType":"VariableDeclaration","scope":201,"src":"3279:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":149,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":153,"initialValue":{"id":152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:1","subExpression":{"id":151,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3302:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":155,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3347:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":156,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3365:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:1","subExpression":{"arguments":[{"arguments":[{"id":165,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3426:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$300","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$300","typeString":"contract Initializable"}],"id":164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:1","typeDescriptions":{}}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":161,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"3388:18:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1120_$","typeString":"type(library AddressUpgradeable)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:1","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":808,"src":"3388:29:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":169,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3436:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":173,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":154,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3325:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":177,"nodeType":"ExpressionStatement","src":"3325:201:1"},{"expression":{"id":180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":178,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3536:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":181,"nodeType":"ExpressionStatement","src":"3536:16:1"},{"condition":{"id":182,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3566:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":188,"nodeType":"IfStatement","src":"3562:65:1","trueBody":{"id":187,"nodeType":"Block","src":"3582:45:1","statements":[{"expression":{"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":183,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3596:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":186,"nodeType":"ExpressionStatement","src":"3596:20:1"}]}},{"id":189,"nodeType":"PlaceholderStatement","src":"3636:1:1"},{"condition":{"id":190,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3651:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":200,"nodeType":"IfStatement","src":"3647:99:1","trueBody":{"id":199,"nodeType":"Block","src":"3667:79:1","statements":[{"expression":{"id":193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":191,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3681:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":194,"nodeType":"ExpressionStatement","src":"3681:21:1"},{"eventCall":{"arguments":[{"hexValue":"31","id":196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":195,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"3721:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":198,"nodeType":"EmitStatement","src":"3716:19:1"}]}}]},"documentation":{"id":147,"nodeType":"StructuredDocumentation","src":"2842:399:1","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":202,"name":"initializer","nameLocation":"3255:11:1","nodeType":"ModifierDefinition","parameters":{"id":148,"nodeType":"ParameterList","parameters":[],"src":"3266:2:1"},"src":"3246:506:1","virtual":false,"visibility":"internal"},{"body":{"id":234,"nodeType":"Block","src":"4863:255:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:1","subExpression":{"id":208,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"4882:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":210,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4899:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":211,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"4914:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":207,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4873:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":216,"nodeType":"ExpressionStatement","src":"4873:99:1"},{"expression":{"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":217,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4982:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":218,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"4997:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":220,"nodeType":"ExpressionStatement","src":"4982:22:1"},{"expression":{"id":223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":221,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5014:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":224,"nodeType":"ExpressionStatement","src":"5014:20:1"},{"id":225,"nodeType":"PlaceholderStatement","src":"5044:1:1"},{"expression":{"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":226,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5055:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":229,"nodeType":"ExpressionStatement","src":"5055:21:1"},{"eventCall":{"arguments":[{"id":231,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"5103:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":230,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"5091:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":233,"nodeType":"EmitStatement","src":"5086:25:1"}]},"documentation":{"id":203,"nodeType":"StructuredDocumentation","src":"3758:1062:1","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":235,"name":"reinitializer","nameLocation":"4834:13:1","nodeType":"ModifierDefinition","parameters":{"id":206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":205,"mutability":"mutable","name":"version","nameLocation":"4854:7:1","nodeType":"VariableDeclaration","scope":235,"src":"4848:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":204,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:1"},"src":"4825:293:1","virtual":false,"visibility":"internal"},{"body":{"id":244,"nodeType":"Block","src":"5356:97:1","statements":[{"expression":{"arguments":[{"id":239,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5374:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":238,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5366:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":242,"nodeType":"ExpressionStatement","src":"5366:69:1"},{"id":243,"nodeType":"PlaceholderStatement","src":"5445:1:1"}]},"documentation":{"id":236,"nodeType":"StructuredDocumentation","src":"5124:199:1","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":245,"name":"onlyInitializing","nameLocation":"5337:16:1","nodeType":"ModifierDefinition","parameters":{"id":237,"nodeType":"ParameterList","parameters":[],"src":"5353:2:1"},"src":"5328:125:1","virtual":false,"visibility":"internal"},{"body":{"id":280,"nodeType":"Block","src":"5988:231:1","statements":[{"expression":{"arguments":[{"id":251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:1","subExpression":{"id":250,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6007:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":249,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5998:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":254,"nodeType":"ExpressionStatement","src":"5998:66:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":255,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6078:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":257,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":256,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6094:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:1","memberName":"max","nodeType":"MemberAccess","src":"6094:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":279,"nodeType":"IfStatement","src":"6074:139:1","trueBody":{"id":278,"nodeType":"Block","src":"6111:102:1","statements":[{"expression":{"id":268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":262,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6125:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":264,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":263,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6140:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:1","memberName":"max","nodeType":"MemberAccess","src":"6140:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":269,"nodeType":"ExpressionStatement","src":"6125:30:1"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":272,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":271,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6186:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:1","memberName":"max","nodeType":"MemberAccess","src":"6186:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":270,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"6174:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":277,"nodeType":"EmitStatement","src":"6169:33:1"}]}}]},"documentation":{"id":246,"nodeType":"StructuredDocumentation","src":"5459:475:1","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":281,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:1","nodeType":"FunctionDefinition","parameters":{"id":247,"nodeType":"ParameterList","parameters":[],"src":"5968:2:1"},"returnParameters":{"id":248,"nodeType":"ParameterList","parameters":[],"src":"5988:0:1"},"scope":300,"src":"5939:280:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":289,"nodeType":"Block","src":"6393:36:1","statements":[{"expression":{"id":287,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6410:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":286,"id":288,"nodeType":"Return","src":"6403:19:1"}]},"documentation":{"id":282,"nodeType":"StructuredDocumentation","src":"6225:99:1","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":290,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:1","nodeType":"FunctionDefinition","parameters":{"id":283,"nodeType":"ParameterList","parameters":[],"src":"6360:2:1"},"returnParameters":{"id":286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":290,"src":"6386:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":284,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:1"},"scope":300,"src":"6329:100:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":298,"nodeType":"Block","src":"6601:37:1","statements":[{"expression":{"id":296,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6618:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":295,"id":297,"nodeType":"Return","src":"6611:20:1"}]},"documentation":{"id":291,"nodeType":"StructuredDocumentation","src":"6435:105:1","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":299,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:1","nodeType":"FunctionDefinition","parameters":{"id":292,"nodeType":"ParameterList","parameters":[],"src":"6569:2:1"},"returnParameters":{"id":295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":299,"src":"6595:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":293,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:1"},"scope":300,"src":"6545:93:1","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":301,"src":"2394:4246:1","usedErrors":[]}],"src":"113:6528:1"},"id":1},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","exportedSymbols":{"IERC20Upgradeable":[378]},"id":379,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":302,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"131:70:2","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":378,"linearizedBaseContracts":[378],"name":"IERC20Upgradeable","nameLocation":"212:17:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":304,"nodeType":"StructuredDocumentation","src":"236:158:2","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":312,"name":"Transfer","nameLocation":"405:8:2","nodeType":"EventDefinition","parameters":{"id":311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":306,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"430:4:2","nodeType":"VariableDeclaration","scope":312,"src":"414:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":305,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":308,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"452:2:2","nodeType":"VariableDeclaration","scope":312,"src":"436:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":307,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":310,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"464:5:2","nodeType":"VariableDeclaration","scope":312,"src":"456:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"413:57:2"},"src":"399:72:2"},{"anonymous":false,"documentation":{"id":313,"nodeType":"StructuredDocumentation","src":"477:148:2","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":321,"name":"Approval","nameLocation":"636:8:2","nodeType":"EventDefinition","parameters":{"id":320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":315,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"661:5:2","nodeType":"VariableDeclaration","scope":321,"src":"645:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":317,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"684:7:2","nodeType":"VariableDeclaration","scope":321,"src":"668:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"668:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":319,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"701:5:2","nodeType":"VariableDeclaration","scope":321,"src":"693:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":318,"name":"uint256","nodeType":"ElementaryTypeName","src":"693:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"644:63:2"},"src":"630:78:2"},{"documentation":{"id":322,"nodeType":"StructuredDocumentation","src":"714:66:2","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":327,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"794:11:2","nodeType":"FunctionDefinition","parameters":{"id":323,"nodeType":"ParameterList","parameters":[],"src":"805:2:2"},"returnParameters":{"id":326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":327,"src":"831:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":324,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"830:9:2"},"scope":378,"src":"785:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"846:72:2","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":335,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"932:9:2","nodeType":"FunctionDefinition","parameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"account","nameLocation":"950:7:2","nodeType":"VariableDeclaration","scope":335,"src":"942:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":329,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"941:17:2"},"returnParameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":335,"src":"982:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":332,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"981:9:2"},"scope":378,"src":"923:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":336,"nodeType":"StructuredDocumentation","src":"997:202:2","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":345,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:2","nodeType":"FunctionDefinition","parameters":{"id":341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"to","nameLocation":"1230:2:2","nodeType":"VariableDeclaration","scope":345,"src":"1222:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":337,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":340,"mutability":"mutable","name":"amount","nameLocation":"1242:6:2","nodeType":"VariableDeclaration","scope":345,"src":"1234:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":339,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:28:2"},"returnParameters":{"id":344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":345,"src":"1268:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":342,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:2"},"scope":378,"src":"1204:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"1280:264:2","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":355,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:2","nodeType":"FunctionDefinition","parameters":{"id":351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"owner","nameLocation":"1576:5:2","nodeType":"VariableDeclaration","scope":355,"src":"1568:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":347,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":350,"mutability":"mutable","name":"spender","nameLocation":"1591:7:2","nodeType":"VariableDeclaration","scope":355,"src":"1583:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":349,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:2"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":355,"src":"1623:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":352,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:2"},"scope":378,"src":"1549:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"1638:642:2","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":365,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2294:7:2","nodeType":"FunctionDefinition","parameters":{"id":361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"spender","nameLocation":"2310:7:2","nodeType":"VariableDeclaration","scope":365,"src":"2302:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":360,"mutability":"mutable","name":"amount","nameLocation":"2327:6:2","nodeType":"VariableDeclaration","scope":365,"src":"2319:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"2319:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:33:2"},"returnParameters":{"id":364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":365,"src":"2353:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":362,"name":"bool","nodeType":"ElementaryTypeName","src":"2353:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2352:6:2"},"scope":378,"src":"2285:74:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":366,"nodeType":"StructuredDocumentation","src":"2365:287:2","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":377,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2666:12:2","nodeType":"FunctionDefinition","parameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":368,"mutability":"mutable","name":"from","nameLocation":"2687:4:2","nodeType":"VariableDeclaration","scope":377,"src":"2679:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":367,"name":"address","nodeType":"ElementaryTypeName","src":"2679:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":370,"mutability":"mutable","name":"to","nameLocation":"2701:2:2","nodeType":"VariableDeclaration","scope":377,"src":"2693:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":369,"name":"address","nodeType":"ElementaryTypeName","src":"2693:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"amount","nameLocation":"2713:6:2","nodeType":"VariableDeclaration","scope":377,"src":"2705:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":371,"name":"uint256","nodeType":"ElementaryTypeName","src":"2705:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2678:42:2"},"returnParameters":{"id":376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":377,"src":"2739:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":374,"name":"bool","nodeType":"ElementaryTypeName","src":"2739:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2738:6:2"},"scope":378,"src":"2657:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":379,"src":"202:2545:2","usedErrors":[]}],"src":"106:2642:2"},"id":2},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","exportedSymbols":{"IERC20PermitUpgradeable":[414]},"id":415,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":380,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"123:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20PermitUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"148:480:3","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":414,"linearizedBaseContracts":[414],"name":"IERC20PermitUpgradeable","nameLocation":"639:23:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"669:792:3","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":399,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1475:6:3","nodeType":"FunctionDefinition","parameters":{"id":397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"owner","nameLocation":"1499:5:3","nodeType":"VariableDeclaration","scope":399,"src":"1491:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":383,"name":"address","nodeType":"ElementaryTypeName","src":"1491:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":386,"mutability":"mutable","name":"spender","nameLocation":"1522:7:3","nodeType":"VariableDeclaration","scope":399,"src":"1514:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"1514:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":388,"mutability":"mutable","name":"value","nameLocation":"1547:5:3","nodeType":"VariableDeclaration","scope":399,"src":"1539:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":387,"name":"uint256","nodeType":"ElementaryTypeName","src":"1539:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"deadline","nameLocation":"1570:8:3","nodeType":"VariableDeclaration","scope":399,"src":"1562:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"1562:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":392,"mutability":"mutable","name":"v","nameLocation":"1594:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1588:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":391,"name":"uint8","nodeType":"ElementaryTypeName","src":"1588:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":394,"mutability":"mutable","name":"r","nameLocation":"1613:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1605:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1605:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":396,"mutability":"mutable","name":"s","nameLocation":"1632:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1624:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1624:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1481:158:3"},"returnParameters":{"id":398,"nodeType":"ParameterList","parameters":[],"src":"1648:0:3"},"scope":414,"src":"1466:183:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":400,"nodeType":"StructuredDocumentation","src":"1655:294:3","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":407,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"1963:6:3","nodeType":"FunctionDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":402,"mutability":"mutable","name":"owner","nameLocation":"1978:5:3","nodeType":"VariableDeclaration","scope":407,"src":"1970:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":401,"name":"address","nodeType":"ElementaryTypeName","src":"1970:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1969:15:3"},"returnParameters":{"id":406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":407,"src":"2008:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":404,"name":"uint256","nodeType":"ElementaryTypeName","src":"2008:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2007:9:3"},"scope":414,"src":"1954:63:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":408,"nodeType":"StructuredDocumentation","src":"2023:128:3","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":413,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"2218:16:3","nodeType":"FunctionDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[],"src":"2234:2:3"},"returnParameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":413,"src":"2260:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":410,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2260:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2259:9:3"},"scope":414,"src":"2209:60:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":415,"src":"629:1642:3","usedErrors":[]}],"src":"123:2149:3"},"id":3},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"IERC20PermitUpgradeable":[414],"IERC20Upgradeable":[378],"SafeERC20Upgradeable":[790]},"id":791,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":416,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","file":"../IERC20Upgradeable.sol","id":417,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":379,"src":"140:34:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","file":"../extensions/IERC20PermitUpgradeable.sol","id":418,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":415,"src":"175:51:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../../utils/AddressUpgradeable.sol","id":419,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":1121,"src":"227:47:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20Upgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":420,"nodeType":"StructuredDocumentation","src":"276:457:4","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":790,"linearizedBaseContracts":[790],"name":"SafeERC20Upgradeable","nameLocation":"742:20:4","nodeType":"ContractDefinition","nodes":[{"global":false,"id":423,"libraryName":{"id":421,"name":"AddressUpgradeable","nameLocations":["775:18:4"],"nodeType":"IdentifierPath","referencedDeclaration":1120,"src":"775:18:4"},"nodeType":"UsingForDirective","src":"769:37:4","typeName":{"id":422,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":446,"nodeType":"Block","src":"1079:103:4","statements":[{"expression":{"arguments":[{"id":435,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"1109:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":438,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"1139:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1145:8:4","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":345,"src":"1139:14:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1154:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1139:23:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":441,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"1164:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"1168:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":436,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1116:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1120:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1116:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":434,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"1089:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1089:86:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":445,"nodeType":"ExpressionStatement","src":"1089:86:4"}]},"documentation":{"id":424,"nodeType":"StructuredDocumentation","src":"812:179:4","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":447,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1005:12:4","nodeType":"FunctionDefinition","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":427,"mutability":"mutable","name":"token","nameLocation":"1036:5:4","nodeType":"VariableDeclaration","scope":447,"src":"1018:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":426,"nodeType":"UserDefinedTypeName","pathNode":{"id":425,"name":"IERC20Upgradeable","nameLocations":["1018:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1018:17:4"},"referencedDeclaration":378,"src":"1018:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":429,"mutability":"mutable","name":"to","nameLocation":"1051:2:4","nodeType":"VariableDeclaration","scope":447,"src":"1043:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":428,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"value","nameLocation":"1063:5:4","nodeType":"VariableDeclaration","scope":447,"src":"1055:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"1055:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1017:52:4"},"returnParameters":{"id":433,"nodeType":"ParameterList","parameters":[],"src":"1079:0:4"},"scope":790,"src":"996:186:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":473,"nodeType":"Block","src":"1522:113:4","statements":[{"expression":{"arguments":[{"id":461,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"1552:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":464,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"1582:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1588:12:4","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":377,"src":"1582:18:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1601:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1582:27:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":467,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"1611:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":468,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":455,"src":"1617:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":457,"src":"1621:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":462,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1559:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1563:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1559:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1559:68:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":460,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"1532:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1532:96:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":472,"nodeType":"ExpressionStatement","src":"1532:96:4"}]},"documentation":{"id":448,"nodeType":"StructuredDocumentation","src":"1188:228:4","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":474,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1430:16:4","nodeType":"FunctionDefinition","parameters":{"id":458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":451,"mutability":"mutable","name":"token","nameLocation":"1465:5:4","nodeType":"VariableDeclaration","scope":474,"src":"1447:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":450,"nodeType":"UserDefinedTypeName","pathNode":{"id":449,"name":"IERC20Upgradeable","nameLocations":["1447:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1447:17:4"},"referencedDeclaration":378,"src":"1447:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":453,"mutability":"mutable","name":"from","nameLocation":"1480:4:4","nodeType":"VariableDeclaration","scope":474,"src":"1472:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":452,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":455,"mutability":"mutable","name":"to","nameLocation":"1494:2:4","nodeType":"VariableDeclaration","scope":474,"src":"1486:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":454,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":457,"mutability":"mutable","name":"value","nameLocation":"1506:5:4","nodeType":"VariableDeclaration","scope":474,"src":"1498:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1446:66:4"},"returnParameters":{"id":459,"nodeType":"ParameterList","parameters":[],"src":"1522:0:4"},"scope":790,"src":"1421:214:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":517,"nodeType":"Block","src":"1982:497:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"2231:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2240:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2231:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2230:12:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":494,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2271:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2263:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:4","typeDescriptions":{}}},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":496,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2278:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":490,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2247:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2253:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"2247:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2247:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2290:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2247:44:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2246:46:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2230:62:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2306:56:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":485,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2209:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:163:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":504,"nodeType":"ExpressionStatement","src":"2209:163:4"},{"expression":{"arguments":[{"id":506,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2402:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":509,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2432:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2438:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"2432:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2446:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2432:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":512,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2456:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"2465:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":507,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2409:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2413:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2409:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:62:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":505,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"2382:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2382:90:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":516,"nodeType":"ExpressionStatement","src":"2382:90:4"}]},"documentation":{"id":475,"nodeType":"StructuredDocumentation","src":"1641:249:4","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":518,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1904:11:4","nodeType":"FunctionDefinition","parameters":{"id":483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"token","nameLocation":"1934:5:4","nodeType":"VariableDeclaration","scope":518,"src":"1916:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":477,"nodeType":"UserDefinedTypeName","pathNode":{"id":476,"name":"IERC20Upgradeable","nameLocations":["1916:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1916:17:4"},"referencedDeclaration":378,"src":"1916:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"spender","nameLocation":"1949:7:4","nodeType":"VariableDeclaration","scope":518,"src":"1941:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":479,"name":"address","nodeType":"ElementaryTypeName","src":"1941:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"value","nameLocation":"1966:5:4","nodeType":"VariableDeclaration","scope":518,"src":"1958:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"1958:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1915:57:4"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"1982:0:4"},"scope":790,"src":"1895:584:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":554,"nodeType":"Block","src":"2767:194:4","statements":[{"assignments":[530],"declarations":[{"constant":false,"id":530,"mutability":"mutable","name":"oldAllowance","nameLocation":"2785:12:4","nodeType":"VariableDeclaration","scope":554,"src":"2777:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":529,"name":"uint256","nodeType":"ElementaryTypeName","src":"2777:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":539,"initialValue":{"arguments":[{"arguments":[{"id":535,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2824:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2816:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"2816:7:4","typeDescriptions":{}}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2816:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":537,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2831:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":531,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2800:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2806:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"2800:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2800:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2777:62:4"},{"expression":{"arguments":[{"id":541,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2869:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":544,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2899:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2905:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"2899:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2913:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2899:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":547,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2923:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":548,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"2932:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"2947:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":542,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2876:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2880:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2876:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2876:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":540,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"2849:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2849:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":553,"nodeType":"ExpressionStatement","src":"2849:105:4"}]},"documentation":{"id":519,"nodeType":"StructuredDocumentation","src":"2485:180:4","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":555,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2679:21:4","nodeType":"FunctionDefinition","parameters":{"id":527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"token","nameLocation":"2719:5:4","nodeType":"VariableDeclaration","scope":555,"src":"2701:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":521,"nodeType":"UserDefinedTypeName","pathNode":{"id":520,"name":"IERC20Upgradeable","nameLocations":["2701:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"2701:17:4"},"referencedDeclaration":378,"src":"2701:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":524,"mutability":"mutable","name":"spender","nameLocation":"2734:7:4","nodeType":"VariableDeclaration","scope":555,"src":"2726:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":523,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":526,"mutability":"mutable","name":"value","nameLocation":"2751:5:4","nodeType":"VariableDeclaration","scope":555,"src":"2743:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":525,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2700:57:4"},"returnParameters":{"id":528,"nodeType":"ParameterList","parameters":[],"src":"2767:0:4"},"scope":790,"src":"2670:291:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":599,"nodeType":"Block","src":"3249:321:4","statements":[{"id":598,"nodeType":"UncheckedBlock","src":"3259:305:4","statements":[{"assignments":[567],"declarations":[{"constant":false,"id":567,"mutability":"mutable","name":"oldAllowance","nameLocation":"3291:12:4","nodeType":"VariableDeclaration","scope":598,"src":"3283:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":566,"name":"uint256","nodeType":"ElementaryTypeName","src":"3283:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":576,"initialValue":{"arguments":[{"arguments":[{"id":572,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3330:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3322:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"3322:7:4","typeDescriptions":{}}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3322:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":574,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"3337:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":568,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3306:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3312:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"3306:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3306:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3283:62:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":578,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"3367:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"3383:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3367:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3390:43:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":577,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3359:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":583,"nodeType":"ExpressionStatement","src":"3359:75:4"},{"expression":{"arguments":[{"id":585,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3468:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":588,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3498:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3504:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"3498:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3512:8:4","memberName":"selector","nodeType":"MemberAccess","src":"3498:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":591,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"3522:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":592,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"3531:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":593,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"3546:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3531:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":586,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3475:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3479:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3475:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3475:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":584,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"3448:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3448:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":597,"nodeType":"ExpressionStatement","src":"3448:105:4"}]}]},"documentation":{"id":556,"nodeType":"StructuredDocumentation","src":"2967:180:4","text":" @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":600,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"3161:21:4","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":559,"mutability":"mutable","name":"token","nameLocation":"3201:5:4","nodeType":"VariableDeclaration","scope":600,"src":"3183:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":558,"nodeType":"UserDefinedTypeName","pathNode":{"id":557,"name":"IERC20Upgradeable","nameLocations":["3183:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3183:17:4"},"referencedDeclaration":378,"src":"3183:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":561,"mutability":"mutable","name":"spender","nameLocation":"3216:7:4","nodeType":"VariableDeclaration","scope":600,"src":"3208:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":560,"name":"address","nodeType":"ElementaryTypeName","src":"3208:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":563,"mutability":"mutable","name":"value","nameLocation":"3233:5:4","nodeType":"VariableDeclaration","scope":600,"src":"3225:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":562,"name":"uint256","nodeType":"ElementaryTypeName","src":"3225:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3182:57:4"},"returnParameters":{"id":565,"nodeType":"ParameterList","parameters":[],"src":"3249:0:4"},"scope":790,"src":"3152:418:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":646,"nodeType":"Block","src":"3977:333:4","statements":[{"assignments":[612],"declarations":[{"constant":false,"id":612,"mutability":"mutable","name":"approvalCall","nameLocation":"4000:12:4","nodeType":"VariableDeclaration","scope":646,"src":"3987:25:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":611,"name":"bytes","nodeType":"ElementaryTypeName","src":"3987:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":621,"initialValue":{"arguments":[{"expression":{"expression":{"id":615,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4038:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4044:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"4038:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4052:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4038:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":618,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"4062:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"4071:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":613,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4015:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4019:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4015:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4015:62:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3987:90:4"},{"condition":{"id":626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4092:45:4","subExpression":{"arguments":[{"id":623,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4117:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"id":624,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"4124:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":622,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"4093:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20Upgradeable,bytes memory) returns (bool)"}},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4093:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":645,"nodeType":"IfStatement","src":"4088:216:4","trueBody":{"id":644,"nodeType":"Block","src":"4139:165:4","statements":[{"expression":{"arguments":[{"id":628,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4173:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":631,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4203:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4209:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"4203:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4217:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4203:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":634,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"4227:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":629,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4180:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4184:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4180:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4180:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":627,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"4153:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4153:86:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":638,"nodeType":"ExpressionStatement","src":"4153:86:4"},{"expression":{"arguments":[{"id":640,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4273:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"id":641,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"4280:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":639,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"4253:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4253:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":643,"nodeType":"ExpressionStatement","src":"4253:40:4"}]}}]},"documentation":{"id":601,"nodeType":"StructuredDocumentation","src":"3576:308:4","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT."},"id":647,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"3898:12:4","nodeType":"FunctionDefinition","parameters":{"id":609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"token","nameLocation":"3929:5:4","nodeType":"VariableDeclaration","scope":647,"src":"3911:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":603,"nodeType":"UserDefinedTypeName","pathNode":{"id":602,"name":"IERC20Upgradeable","nameLocations":["3911:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3911:17:4"},"referencedDeclaration":378,"src":"3911:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":606,"mutability":"mutable","name":"spender","nameLocation":"3944:7:4","nodeType":"VariableDeclaration","scope":647,"src":"3936:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":605,"name":"address","nodeType":"ElementaryTypeName","src":"3936:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":608,"mutability":"mutable","name":"value","nameLocation":"3961:5:4","nodeType":"VariableDeclaration","scope":647,"src":"3953:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":607,"name":"uint256","nodeType":"ElementaryTypeName","src":"3953:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3910:57:4"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[],"src":"3977:0:4"},"scope":790,"src":"3889:421:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":703,"nodeType":"Block","src":"4688:257:4","statements":[{"assignments":[669],"declarations":[{"constant":false,"id":669,"mutability":"mutable","name":"nonceBefore","nameLocation":"4706:11:4","nodeType":"VariableDeclaration","scope":703,"src":"4698:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":668,"name":"uint256","nodeType":"ElementaryTypeName","src":"4698:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":674,"initialValue":{"arguments":[{"id":672,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4733:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":670,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4720:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4726:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":407,"src":"4720:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4720:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4698:41:4"},{"expression":{"arguments":[{"id":678,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4762:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":679,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"4769:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"4778:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":681,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":659,"src":"4785:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":682,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":661,"src":"4795:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":683,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"4798:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":684,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"4801:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":675,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4749:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4755:6:4","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":399,"src":"4749:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:54:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":686,"nodeType":"ExpressionStatement","src":"4749:54:4"},{"assignments":[688],"declarations":[{"constant":false,"id":688,"mutability":"mutable","name":"nonceAfter","nameLocation":"4821:10:4","nodeType":"VariableDeclaration","scope":703,"src":"4813:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"4813:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":693,"initialValue":{"arguments":[{"id":691,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4847:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":689,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4834:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4840:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":407,"src":"4834:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4813:40:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":695,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"4871:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":696,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4885:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4899:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4885:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4871:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4902:35:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":694,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4863:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4863:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":702,"nodeType":"ExpressionStatement","src":"4863:75:4"}]},"documentation":{"id":648,"nodeType":"StructuredDocumentation","src":"4316:141:4","text":" @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n Revert on invalid signature."},"id":704,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"4471:10:4","nodeType":"FunctionDefinition","parameters":{"id":666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"token","nameLocation":"4515:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4491:29:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"},"typeName":{"id":650,"nodeType":"UserDefinedTypeName","pathNode":{"id":649,"name":"IERC20PermitUpgradeable","nameLocations":["4491:23:4"],"nodeType":"IdentifierPath","referencedDeclaration":414,"src":"4491:23:4"},"referencedDeclaration":414,"src":"4491:23:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"visibility":"internal"},{"constant":false,"id":653,"mutability":"mutable","name":"owner","nameLocation":"4538:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4530:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":652,"name":"address","nodeType":"ElementaryTypeName","src":"4530:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":655,"mutability":"mutable","name":"spender","nameLocation":"4561:7:4","nodeType":"VariableDeclaration","scope":704,"src":"4553:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":654,"name":"address","nodeType":"ElementaryTypeName","src":"4553:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":657,"mutability":"mutable","name":"value","nameLocation":"4586:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4578:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":656,"name":"uint256","nodeType":"ElementaryTypeName","src":"4578:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":659,"mutability":"mutable","name":"deadline","nameLocation":"4609:8:4","nodeType":"VariableDeclaration","scope":704,"src":"4601:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":658,"name":"uint256","nodeType":"ElementaryTypeName","src":"4601:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":661,"mutability":"mutable","name":"v","nameLocation":"4633:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4627:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":660,"name":"uint8","nodeType":"ElementaryTypeName","src":"4627:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":663,"mutability":"mutable","name":"r","nameLocation":"4652:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4644:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4644:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":665,"mutability":"mutable","name":"s","nameLocation":"4671:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4663:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4663:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4481:197:4"},"returnParameters":{"id":667,"nodeType":"ParameterList","parameters":[],"src":"4688:0:4"},"scope":790,"src":"4462:483:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":740,"nodeType":"Block","src":"5409:572:4","statements":[{"assignments":[714],"declarations":[{"constant":false,"id":714,"mutability":"mutable","name":"returndata","nameLocation":"5771:10:4","nodeType":"VariableDeclaration","scope":740,"src":"5758:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":713,"name":"bytes","nodeType":"ElementaryTypeName","src":"5758:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":723,"initialValue":{"arguments":[{"id":720,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":710,"src":"5812:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5818:34:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":717,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"5792:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5784:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":715,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:4","typeDescriptions":{}}},"id":718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5799:12:4","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":880,"src":"5784:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5758:95:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":725,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"5871:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5882:6:4","memberName":"length","nodeType":"MemberAccess","src":"5871:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5892:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5871:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":731,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"5908:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5921:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":732,"name":"bool","nodeType":"ElementaryTypeName","src":"5921:4:4","typeDescriptions":{}}}],"id":734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5920:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":729,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5897:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5901:6:4","memberName":"decode","nodeType":"MemberAccess","src":"5897:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5897:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5871:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5929:44:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5863:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5863:111:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":739,"nodeType":"ExpressionStatement","src":"5863:111:4"}]},"documentation":{"id":705,"nodeType":"StructuredDocumentation","src":"4951:372:4","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":741,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"5337:19:4","nodeType":"FunctionDefinition","parameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":708,"mutability":"mutable","name":"token","nameLocation":"5375:5:4","nodeType":"VariableDeclaration","scope":741,"src":"5357:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":707,"nodeType":"UserDefinedTypeName","pathNode":{"id":706,"name":"IERC20Upgradeable","nameLocations":["5357:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"5357:17:4"},"referencedDeclaration":378,"src":"5357:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":710,"mutability":"mutable","name":"data","nameLocation":"5395:4:4","nodeType":"VariableDeclaration","scope":741,"src":"5382:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":709,"name":"bytes","nodeType":"ElementaryTypeName","src":"5382:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5356:44:4"},"returnParameters":{"id":712,"nodeType":"ParameterList","parameters":[],"src":"5409:0:4"},"scope":790,"src":"5328:653:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":788,"nodeType":"Block","src":"6582:516:4","statements":[{"assignments":[753,755],"declarations":[{"constant":false,"id":753,"mutability":"mutable","name":"success","nameLocation":"6883:7:4","nodeType":"VariableDeclaration","scope":788,"src":"6878:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":752,"name":"bool","nodeType":"ElementaryTypeName","src":"6878:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":755,"mutability":"mutable","name":"returndata","nameLocation":"6905:10:4","nodeType":"VariableDeclaration","scope":788,"src":"6892:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":754,"name":"bytes","nodeType":"ElementaryTypeName","src":"6892:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":763,"initialValue":{"arguments":[{"id":761,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"6939:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":758,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"6927:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6919:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":756,"name":"address","nodeType":"ElementaryTypeName","src":"6919:7:4","typeDescriptions":{}}},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6934:4:4","memberName":"call","nodeType":"MemberAccess","src":"6919:19:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6877:67:4"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"6973:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":765,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6985:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6996:6:4","memberName":"length","nodeType":"MemberAccess","src":"6985:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7006:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6985:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":771,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"7022:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7035:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":772,"name":"bool","nodeType":"ElementaryTypeName","src":"7035:4:4","typeDescriptions":{}}}],"id":774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7034:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":769,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7011:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7015:6:4","memberName":"decode","nodeType":"MemberAccess","src":"7011:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7011:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6985:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":777,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6984:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:69:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"arguments":[{"id":783,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"7084:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7076:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":781,"name":"address","nodeType":"ElementaryTypeName","src":"7076:7:4","typeDescriptions":{}}},"id":784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7076:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":779,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"7046:18:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1120_$","typeString":"type(library AddressUpgradeable)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7065:10:4","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":808,"src":"7046:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7046:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:118:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":751,"id":787,"nodeType":"Return","src":"6954:137:4"}]},"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"5987:490:4","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead."},"id":789,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"6491:23:4","nodeType":"FunctionDefinition","parameters":{"id":748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":745,"mutability":"mutable","name":"token","nameLocation":"6533:5:4","nodeType":"VariableDeclaration","scope":789,"src":"6515:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":744,"nodeType":"UserDefinedTypeName","pathNode":{"id":743,"name":"IERC20Upgradeable","nameLocations":["6515:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"6515:17:4"},"referencedDeclaration":378,"src":"6515:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":747,"mutability":"mutable","name":"data","nameLocation":"6553:4:4","nodeType":"VariableDeclaration","scope":789,"src":"6540:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":746,"name":"bytes","nodeType":"ElementaryTypeName","src":"6540:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6514:44:4"},"returnParameters":{"id":751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":789,"src":"6576:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":749,"name":"bool","nodeType":"ElementaryTypeName","src":"6576:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6575:6:4"},"scope":790,"src":"6482:616:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":791,"src":"734:6366:4","usedErrors":[]}],"src":"115:6986:4"},"id":4},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120]},"id":1121,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":792,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":793,"nodeType":"StructuredDocumentation","src":"126:67:5","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1120,"linearizedBaseContracts":[1120],"name":"AddressUpgradeable","nameLocation":"202:18:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":807,"nodeType":"Block","src":"1489:254:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":801,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1713:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:5","memberName":"code","nodeType":"MemberAccess","src":"1713:12:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:5","memberName":"length","nodeType":"MemberAccess","src":"1713:19:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":800,"id":806,"nodeType":"Return","src":"1706:30:5"}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"227:1191:5","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":808,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:5","nodeType":"FunctionDefinition","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"account","nameLocation":"1451:7:5","nodeType":"VariableDeclaration","scope":808,"src":"1443:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":795,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:5"},"returnParameters":{"id":800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":808,"src":"1483:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":798,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:5"},"scope":1120,"src":"1423:320:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"2729:241:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":819,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2755:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}],"id":818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":817,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:5","typeDescriptions":{}}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:5","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":822,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2772:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":816,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2739:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":826,"nodeType":"ExpressionStatement","src":"2739:73:5"},{"assignments":[828,null],"declarations":[{"constant":false,"id":828,"mutability":"mutable","name":"success","nameLocation":"2829:7:5","nodeType":"VariableDeclaration","scope":841,"src":"2824:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":827,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":835,"initialValue":{"arguments":[{"hexValue":"","id":833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":829,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"2842:9:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:5","memberName":"call","nodeType":"MemberAccess","src":"2842:14:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":831,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2864:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:5"},{"expression":{"arguments":[{"id":837,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"2893:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":836,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2885:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":840,"nodeType":"ExpressionStatement","src":"2885:78:5"}]},"documentation":{"id":809,"nodeType":"StructuredDocumentation","src":"1749:904:5","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:5","nodeType":"FunctionDefinition","parameters":{"id":814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:5","nodeType":"VariableDeclaration","scope":842,"src":"2677:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":810,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:5","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":813,"mutability":"mutable","name":"amount","nameLocation":"2712:6:5","nodeType":"VariableDeclaration","scope":842,"src":"2704:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":812,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:5"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[],"src":"2729:0:5"},"scope":1120,"src":"2658:312:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":859,"nodeType":"Block","src":"3801:96:5","statements":[{"expression":{"arguments":[{"id":853,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"3840:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":854,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"3848:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":852,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"3818:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":851,"id":858,"nodeType":"Return","src":"3811:79:5"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"2976:731:5","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":860,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:5","nodeType":"FunctionDefinition","parameters":{"id":848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"target","nameLocation":"3742:6:5","nodeType":"VariableDeclaration","scope":860,"src":"3734:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"3763:4:5","nodeType":"VariableDeclaration","scope":860,"src":"3750:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:5"},"returnParameters":{"id":851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":860,"src":"3787:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":849,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:5"},"scope":1120,"src":"3712:185:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":879,"nodeType":"Block","src":"4266:76:5","statements":[{"expression":{"arguments":[{"id":873,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"4305:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":874,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":865,"src":"4313:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":876,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"4322:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":872,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"4283:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":871,"id":878,"nodeType":"Return","src":"4276:59:5"}]},"documentation":{"id":861,"nodeType":"StructuredDocumentation","src":"3903:211:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":880,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:5","nodeType":"FunctionDefinition","parameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":863,"mutability":"mutable","name":"target","nameLocation":"4158:6:5","nodeType":"VariableDeclaration","scope":880,"src":"4150:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":862,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":865,"mutability":"mutable","name":"data","nameLocation":"4187:4:5","nodeType":"VariableDeclaration","scope":880,"src":"4174:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":864,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":867,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:5","nodeType":"VariableDeclaration","scope":880,"src":"4201:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":866,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:5"},"returnParameters":{"id":871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":880,"src":"4252:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":869,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:5"},"scope":1120,"src":"4119:223:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":899,"nodeType":"Block","src":"4817:111:5","statements":[{"expression":{"arguments":[{"id":893,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"4856:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":894,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"4864:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"4870:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":892,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"4834:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":891,"id":898,"nodeType":"Return","src":"4827:94:5"}]},"documentation":{"id":881,"nodeType":"StructuredDocumentation","src":"4348:351:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":900,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:5","nodeType":"FunctionDefinition","parameters":{"id":888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"target","nameLocation":"4743:6:5","nodeType":"VariableDeclaration","scope":900,"src":"4735:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":882,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":885,"mutability":"mutable","name":"data","nameLocation":"4764:4:5","nodeType":"VariableDeclaration","scope":900,"src":"4751:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":884,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":887,"mutability":"mutable","name":"value","nameLocation":"4778:5:5","nodeType":"VariableDeclaration","scope":900,"src":"4770:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":886,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:5"},"returnParameters":{"id":891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":900,"src":"4803:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":889,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:5"},"scope":1120,"src":"4704:224:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":943,"nodeType":"Block","src":"5355:267:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":917,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5381:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}],"id":916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":915,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:5","typeDescriptions":{}}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:5","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":920,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"5398:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":914,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5365:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":924,"nodeType":"ExpressionStatement","src":"5365:81:5"},{"assignments":[926,928],"declarations":[{"constant":false,"id":926,"mutability":"mutable","name":"success","nameLocation":"5462:7:5","nodeType":"VariableDeclaration","scope":943,"src":"5457:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":925,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":928,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:5","nodeType":"VariableDeclaration","scope":943,"src":"5471:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":927,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":935,"initialValue":{"arguments":[{"id":933,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":905,"src":"5524:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":929,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"5498:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:5","memberName":"call","nodeType":"MemberAccess","src":"5498:11:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"5517:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:5"},{"expression":{"arguments":[{"id":937,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"5573:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":938,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"5581:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":939,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"5590:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":940,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"5602:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":936,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"5546:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":913,"id":942,"nodeType":"Return","src":"5539:76:5"}]},"documentation":{"id":901,"nodeType":"StructuredDocumentation","src":"4934:237:5","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":944,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:5","nodeType":"FunctionDefinition","parameters":{"id":910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"target","nameLocation":"5224:6:5","nodeType":"VariableDeclaration","scope":944,"src":"5216:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":905,"mutability":"mutable","name":"data","nameLocation":"5253:4:5","nodeType":"VariableDeclaration","scope":944,"src":"5240:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":904,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":907,"mutability":"mutable","name":"value","nameLocation":"5275:5:5","nodeType":"VariableDeclaration","scope":944,"src":"5267:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":906,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:5","nodeType":"VariableDeclaration","scope":944,"src":"5290:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":908,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:5"},"returnParameters":{"id":913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":912,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":944,"src":"5341:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":911,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:5"},"scope":1120,"src":"5176:446:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":960,"nodeType":"Block","src":"5899:97:5","statements":[{"expression":{"arguments":[{"id":955,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":947,"src":"5935:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":956,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"5943:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":954,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[961,990],"referencedDeclaration":990,"src":"5916:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":953,"id":959,"nodeType":"Return","src":"5909:80:5"}]},"documentation":{"id":945,"nodeType":"StructuredDocumentation","src":"5628:166:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":961,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:5","nodeType":"FunctionDefinition","parameters":{"id":950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":947,"mutability":"mutable","name":"target","nameLocation":"5835:6:5","nodeType":"VariableDeclaration","scope":961,"src":"5827:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":946,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":949,"mutability":"mutable","name":"data","nameLocation":"5856:4:5","nodeType":"VariableDeclaration","scope":961,"src":"5843:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":948,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:5"},"returnParameters":{"id":953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":961,"src":"5885:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":951,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:5"},"scope":1120,"src":"5799:197:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":989,"nodeType":"Block","src":"6338:168:5","statements":[{"assignments":[974,976],"declarations":[{"constant":false,"id":974,"mutability":"mutable","name":"success","nameLocation":"6354:7:5","nodeType":"VariableDeclaration","scope":989,"src":"6349:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":973,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":976,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:5","nodeType":"VariableDeclaration","scope":989,"src":"6363:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":975,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":981,"initialValue":{"arguments":[{"id":979,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"6408:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":977,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"6390:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:5","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:5","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:5"},{"expression":{"arguments":[{"id":983,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"6457:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":984,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"6465:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":985,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"6474:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":986,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"6486:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":982,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"6430:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":972,"id":988,"nodeType":"Return","src":"6423:76:5"}]},"documentation":{"id":962,"nodeType":"StructuredDocumentation","src":"6002:173:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":990,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:5","nodeType":"FunctionDefinition","parameters":{"id":969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":964,"mutability":"mutable","name":"target","nameLocation":"6225:6:5","nodeType":"VariableDeclaration","scope":990,"src":"6217:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":963,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":966,"mutability":"mutable","name":"data","nameLocation":"6254:4:5","nodeType":"VariableDeclaration","scope":990,"src":"6241:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":965,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":968,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:5","nodeType":"VariableDeclaration","scope":990,"src":"6268:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":967,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:5"},"returnParameters":{"id":972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":990,"src":"6324:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":970,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:5"},"scope":1120,"src":"6180:326:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1006,"nodeType":"Block","src":"6782:101:5","statements":[{"expression":{"arguments":[{"id":1001,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"6820:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1002,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":995,"src":"6828:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":1000,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[1007,1036],"referencedDeclaration":1036,"src":"6799:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":999,"id":1005,"nodeType":"Return","src":"6792:84:5"}]},"documentation":{"id":991,"nodeType":"StructuredDocumentation","src":"6512:168:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1007,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:5","nodeType":"FunctionDefinition","parameters":{"id":996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":993,"mutability":"mutable","name":"target","nameLocation":"6723:6:5","nodeType":"VariableDeclaration","scope":1007,"src":"6715:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":992,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":995,"mutability":"mutable","name":"data","nameLocation":"6744:4:5","nodeType":"VariableDeclaration","scope":1007,"src":"6731:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":994,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:5"},"returnParameters":{"id":999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1007,"src":"6768:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":997,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:5"},"scope":1120,"src":"6685:198:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1035,"nodeType":"Block","src":"7224:170:5","statements":[{"assignments":[1020,1022],"declarations":[{"constant":false,"id":1020,"mutability":"mutable","name":"success","nameLocation":"7240:7:5","nodeType":"VariableDeclaration","scope":1035,"src":"7235:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1019,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1022,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:5","nodeType":"VariableDeclaration","scope":1035,"src":"7249:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1021,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1027,"initialValue":{"arguments":[{"id":1025,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"7296:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1023,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"7276:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:5","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:5","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:5"},{"expression":{"arguments":[{"id":1029,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"7345:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1030,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"7353:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1031,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"7362:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1032,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1014,"src":"7374:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1028,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"7318:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1018,"id":1034,"nodeType":"Return","src":"7311:76:5"}]},"documentation":{"id":1008,"nodeType":"StructuredDocumentation","src":"6889:175:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1036,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:5","nodeType":"FunctionDefinition","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1010,"mutability":"mutable","name":"target","nameLocation":"7116:6:5","nodeType":"VariableDeclaration","scope":1036,"src":"7108:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1009,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1012,"mutability":"mutable","name":"data","nameLocation":"7145:4:5","nodeType":"VariableDeclaration","scope":1036,"src":"7132:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1011,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1014,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:5","nodeType":"VariableDeclaration","scope":1036,"src":"7159:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1013,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:5"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1036,"src":"7210:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1016,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:5"},"scope":1120,"src":"7069:325:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1074,"nodeType":"Block","src":"7876:434:5","statements":[{"condition":{"id":1050,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"7890:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1072,"nodeType":"Block","src":"8246:58:5","statements":[{"expression":{"arguments":[{"id":1068,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"8268:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1069,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"8280:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1067,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"8260:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1071,"nodeType":"ExpressionStatement","src":"8260:33:5"}]},"id":1073,"nodeType":"IfStatement","src":"7886:418:5","trueBody":{"id":1066,"nodeType":"Block","src":"7899:341:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1051,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"7917:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:5","memberName":"length","nodeType":"MemberAccess","src":"7917:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"7913:286:5","trueBody":{"id":1062,"nodeType":"Block","src":"7941:258:5","statements":[{"expression":{"arguments":[{"arguments":[{"id":1057,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1039,"src":"8143:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1056,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"8132:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":1055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8124:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1061,"nodeType":"ExpressionStatement","src":"8124:60:5"}]}},{"expression":{"id":1064,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"8219:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1049,"id":1065,"nodeType":"Return","src":"8212:17:5"}]}}]},"documentation":{"id":1037,"nodeType":"StructuredDocumentation","src":"7400:277:5","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":1075,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:5","nodeType":"FunctionDefinition","parameters":{"id":1046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1039,"mutability":"mutable","name":"target","nameLocation":"7735:6:5","nodeType":"VariableDeclaration","scope":1075,"src":"7727:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1038,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1041,"mutability":"mutable","name":"success","nameLocation":"7756:7:5","nodeType":"VariableDeclaration","scope":1075,"src":"7751:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1040,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1043,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:5","nodeType":"VariableDeclaration","scope":1075,"src":"7773:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1042,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1045,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:5","nodeType":"VariableDeclaration","scope":1075,"src":"7806:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1044,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:5"},"returnParameters":{"id":1049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1075,"src":"7862:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1047,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:5"},"scope":1120,"src":"7682:628:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1098,"nodeType":"Block","src":"8691:135:5","statements":[{"condition":{"id":1087,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"8705:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1096,"nodeType":"Block","src":"8762:58:5","statements":[{"expression":{"arguments":[{"id":1092,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"8784:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1093,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"8796:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1091,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"8776:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1095,"nodeType":"ExpressionStatement","src":"8776:33:5"}]},"id":1097,"nodeType":"IfStatement","src":"8701:119:5","trueBody":{"id":1090,"nodeType":"Block","src":"8714:42:5","statements":[{"expression":{"id":1088,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"8735:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1086,"id":1089,"nodeType":"Return","src":"8728:17:5"}]}}]},"documentation":{"id":1076,"nodeType":"StructuredDocumentation","src":"8316:210:5","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":1099,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:5","nodeType":"FunctionDefinition","parameters":{"id":1083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1078,"mutability":"mutable","name":"success","nameLocation":"8571:7:5","nodeType":"VariableDeclaration","scope":1099,"src":"8566:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1077,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1080,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:5","nodeType":"VariableDeclaration","scope":1099,"src":"8588:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1079,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1082,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:5","nodeType":"VariableDeclaration","scope":1099,"src":"8621:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1081,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:5"},"returnParameters":{"id":1086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1099,"src":"8677:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1084,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:5"},"scope":1120,"src":"8531:295:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1118,"nodeType":"Block","src":"8915:457:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1106,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"8991:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:5","memberName":"length","nodeType":"MemberAccess","src":"8991:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1116,"nodeType":"Block","src":"9321:45:5","statements":[{"expression":{"arguments":[{"id":1113,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"9342:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1112,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9335:6:5","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1115,"nodeType":"ExpressionStatement","src":"9335:20:5"}]},"id":1117,"nodeType":"IfStatement","src":"8987:379:5","trueBody":{"id":1111,"nodeType":"Block","src":"9014:301:5","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:5","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:5","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:5"},"nodeType":"YulFunctionCall","src":"9213:17:5"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:5","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:5","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:5"},"nodeType":"YulFunctionCall","src":"9254:19:5"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:5"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:5"},"nodeType":"YulFunctionCall","src":"9247:44:5"},"nodeType":"YulExpressionStatement","src":"9247:44:5"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1101,"isOffset":false,"isSlot":false,"src":"9219:10:5","valueSize":1},{"declaration":1101,"isOffset":false,"isSlot":false,"src":"9262:10:5","valueSize":1}],"id":1110,"nodeType":"InlineAssembly","src":"9163:142:5"}]}}]},"id":1119,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:5","nodeType":"FunctionDefinition","parameters":{"id":1104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1101,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:5","nodeType":"VariableDeclaration","scope":1119,"src":"8849:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1100,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1103,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:5","nodeType":"VariableDeclaration","scope":1119,"src":"8874:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1102,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:5"},"returnParameters":{"id":1105,"nodeType":"ParameterList","parameters":[],"src":"8915:0:5"},"scope":1120,"src":"8832:540:5","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1121,"src":"194:9180:5","usedErrors":[]}],"src":"101:9274:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300]},"id":1163,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1122,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:6"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1123,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1163,"sourceUnit":301,"src":"110:42:6","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1125,"name":"Initializable","nameLocations":["691:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":300,"src":"691:13:6"},"id":1126,"nodeType":"InheritanceSpecifier","src":"691:13:6"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1124,"nodeType":"StructuredDocumentation","src":"154:496:6","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1162,"linearizedBaseContracts":[1162,300],"name":"ContextUpgradeable","nameLocation":"669:18:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":1131,"nodeType":"Block","src":"763:7:6","statements":[]},"id":1132,"implemented":true,"kind":"function","modifiers":[{"id":1129,"kind":"modifierInvocation","modifierName":{"id":1128,"name":"onlyInitializing","nameLocations":["746:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"746:16:6"},"nodeType":"ModifierInvocation","src":"746:16:6"}],"name":"__Context_init","nameLocation":"720:14:6","nodeType":"FunctionDefinition","parameters":{"id":1127,"nodeType":"ParameterList","parameters":[],"src":"734:2:6"},"returnParameters":{"id":1130,"nodeType":"ParameterList","parameters":[],"src":"763:0:6"},"scope":1162,"src":"711:59:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1137,"nodeType":"Block","src":"838:7:6","statements":[]},"id":1138,"implemented":true,"kind":"function","modifiers":[{"id":1135,"kind":"modifierInvocation","modifierName":{"id":1134,"name":"onlyInitializing","nameLocations":["821:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"821:16:6"},"nodeType":"ModifierInvocation","src":"821:16:6"}],"name":"__Context_init_unchained","nameLocation":"785:24:6","nodeType":"FunctionDefinition","parameters":{"id":1133,"nodeType":"ParameterList","parameters":[],"src":"809:2:6"},"returnParameters":{"id":1136,"nodeType":"ParameterList","parameters":[],"src":"838:0:6"},"scope":1162,"src":"776:69:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1146,"nodeType":"Block","src":"912:34:6","statements":[{"expression":{"expression":{"id":1143,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"929:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"933:6:6","memberName":"sender","nodeType":"MemberAccess","src":"929:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1142,"id":1145,"nodeType":"Return","src":"922:17:6"}]},"id":1147,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"859:10:6","nodeType":"FunctionDefinition","parameters":{"id":1139,"nodeType":"ParameterList","parameters":[],"src":"869:2:6"},"returnParameters":{"id":1142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1147,"src":"903:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1140,"name":"address","nodeType":"ElementaryTypeName","src":"903:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"902:9:6"},"scope":1162,"src":"850:96:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1155,"nodeType":"Block","src":"1019:32:6","statements":[{"expression":{"expression":{"id":1152,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1036:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1040:4:6","memberName":"data","nodeType":"MemberAccess","src":"1036:8:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1151,"id":1154,"nodeType":"Return","src":"1029:15:6"}]},"id":1156,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"961:8:6","nodeType":"FunctionDefinition","parameters":{"id":1148,"nodeType":"ParameterList","parameters":[],"src":"969:2:6"},"returnParameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1156,"src":"1003:14:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1149,"name":"bytes","nodeType":"ElementaryTypeName","src":"1003:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1002:16:6"},"scope":1162,"src":"952:99:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":1157,"nodeType":"StructuredDocumentation","src":"1057:254:6","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1161,"mutability":"mutable","name":"__gap","nameLocation":"1336:5:6","nodeType":"VariableDeclaration","scope":1162,"src":"1316:25:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"1316:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1160,"length":{"hexValue":"3530","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1324:2:6","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1316:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1163,"src":"651:693:6","usedErrors":[]}],"src":"86:1259:6"},"id":6},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[2623],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":1392,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1164,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:7"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","file":"./math/MathUpgradeable.sol","id":1165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1392,"sourceUnit":2624,"src":"126:36:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol","file":"./math/SignedMathUpgradeable.sol","id":1166,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1392,"sourceUnit":2729,"src":"163:42:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"StringsUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1167,"nodeType":"StructuredDocumentation","src":"207:34:7","text":" @dev String operations."},"fullyImplemented":true,"id":1391,"linearizedBaseContracts":[1391],"name":"StringsUpgradeable","nameLocation":"250:18:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1170,"mutability":"constant","name":"_SYMBOLS","nameLocation":"300:8:7","nodeType":"VariableDeclaration","scope":1391,"src":"275:54:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1168,"name":"bytes16","nodeType":"ElementaryTypeName","src":"275:7:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":1173,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"358:15:7","nodeType":"VariableDeclaration","scope":1391,"src":"335:43:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1171,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"376:2:7","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":1220,"nodeType":"Block","src":"551:636:7","statements":[{"id":1219,"nodeType":"UncheckedBlock","src":"561:620:7","statements":[{"assignments":[1182],"declarations":[{"constant":false,"id":1182,"mutability":"mutable","name":"length","nameLocation":"593:6:7","nodeType":"VariableDeclaration","scope":1219,"src":"585:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"585:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1189,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"624:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1183,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2623,"src":"602:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$2623_$","typeString":"type(library MathUpgradeable)"}},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"618:5:7","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":2460,"src":"602:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"602:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"633:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"602:32:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"585:49:7"},{"assignments":[1191],"declarations":[{"constant":false,"id":1191,"mutability":"mutable","name":"buffer","nameLocation":"662:6:7","nodeType":"VariableDeclaration","scope":1219,"src":"648:20:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1190,"name":"string","nodeType":"ElementaryTypeName","src":"648:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1196,"initialValue":{"arguments":[{"id":1194,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"682:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"671:10:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1192,"name":"string","nodeType":"ElementaryTypeName","src":"675:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"671:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"648:41:7"},{"assignments":[1198],"declarations":[{"constant":false,"id":1198,"mutability":"mutable","name":"ptr","nameLocation":"711:3:7","nodeType":"VariableDeclaration","scope":1219,"src":"703:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1197,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1199,"nodeType":"VariableDeclarationStatement","src":"703:11:7"},{"AST":{"nodeType":"YulBlock","src":"784:67:7","statements":[{"nodeType":"YulAssignment","src":"802:35:7","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"813:6:7"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"825:2:7","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"829:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"821:3:7"},"nodeType":"YulFunctionCall","src":"821:15:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"809:3:7"},"nodeType":"YulFunctionCall","src":"809:28:7"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"802:3:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1191,"isOffset":false,"isSlot":false,"src":"813:6:7","valueSize":1},{"declaration":1182,"isOffset":false,"isSlot":false,"src":"829:6:7","valueSize":1},{"declaration":1198,"isOffset":false,"isSlot":false,"src":"802:3:7","valueSize":1}],"id":1200,"nodeType":"InlineAssembly","src":"775:76:7"},{"body":{"id":1215,"nodeType":"Block","src":"877:267:7","statements":[{"expression":{"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"895:5:7","subExpression":{"id":1202,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"895:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1204,"nodeType":"ExpressionStatement","src":"895:5:7"},{"AST":{"nodeType":"YulBlock","src":"978:84:7","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1008:3:7"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1022:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"1029:2:7","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"1018:3:7"},"nodeType":"YulFunctionCall","src":"1018:14:7"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"1034:8:7"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"1013:4:7"},"nodeType":"YulFunctionCall","src":"1013:30:7"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"1000:7:7"},"nodeType":"YulFunctionCall","src":"1000:44:7"},"nodeType":"YulExpressionStatement","src":"1000:44:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1170,"isOffset":false,"isSlot":false,"src":"1034:8:7","valueSize":1},{"declaration":1198,"isOffset":false,"isSlot":false,"src":"1008:3:7","valueSize":1},{"declaration":1176,"isOffset":false,"isSlot":false,"src":"1022:5:7","valueSize":1}],"id":1205,"nodeType":"InlineAssembly","src":"969:93:7"},{"expression":{"id":1208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"1079:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1088:2:7","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1079:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1209,"nodeType":"ExpressionStatement","src":"1079:11:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"1112:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1121:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1112:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1214,"nodeType":"IfStatement","src":"1108:21:7","trueBody":{"id":1213,"nodeType":"Break","src":"1124:5:7"}}]},"condition":{"hexValue":"74727565","id":1201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"871:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1216,"nodeType":"WhileStatement","src":"864:280:7"},{"expression":{"id":1217,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1191,"src":"1164:6:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1180,"id":1218,"nodeType":"Return","src":"1157:13:7"}]}]},"documentation":{"id":1174,"nodeType":"StructuredDocumentation","src":"385:90:7","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":1221,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"489:8:7","nodeType":"FunctionDefinition","parameters":{"id":1177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1176,"mutability":"mutable","name":"value","nameLocation":"506:5:7","nodeType":"VariableDeclaration","scope":1221,"src":"498:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1175,"name":"uint256","nodeType":"ElementaryTypeName","src":"498:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"497:15:7"},"returnParameters":{"id":1180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1221,"src":"536:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1178,"name":"string","nodeType":"ElementaryTypeName","src":"536:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"535:15:7"},"scope":1391,"src":"480:707:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1248,"nodeType":"Block","src":"1357:114:7","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1224,"src":"1398:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1406:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1398:9:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1416:2:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1398:20:7","trueExpression":{"hexValue":"2d","id":1236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1410:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1224,"src":"1455:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1240,"name":"SignedMathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"1429:21:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMathUpgradeable_$2728_$","typeString":"type(library SignedMathUpgradeable)"}},"id":1241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1451:3:7","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":2727,"src":"1429:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1429:32:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1239,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[1221,1249],"referencedDeclaration":1221,"src":"1420:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1231,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1381:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1385:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"1381:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1381:82:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1374:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1229,"name":"string","nodeType":"ElementaryTypeName","src":"1374:6:7","typeDescriptions":{}}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1374:90:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1228,"id":1247,"nodeType":"Return","src":"1367:97:7"}]},"documentation":{"id":1222,"nodeType":"StructuredDocumentation","src":"1193:89:7","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":1249,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1296:8:7","nodeType":"FunctionDefinition","parameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1224,"mutability":"mutable","name":"value","nameLocation":"1312:5:7","nodeType":"VariableDeclaration","scope":1249,"src":"1305:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1223,"name":"int256","nodeType":"ElementaryTypeName","src":"1305:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1304:14:7"},"returnParameters":{"id":1228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1249,"src":"1342:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1226,"name":"string","nodeType":"ElementaryTypeName","src":"1342:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1341:15:7"},"scope":1391,"src":"1287:184:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1268,"nodeType":"Block","src":"1650:111:7","statements":[{"id":1267,"nodeType":"UncheckedBlock","src":"1660:95:7","statements":[{"expression":{"arguments":[{"id":1258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"1703:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1261,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"1733:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1259,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2623,"src":"1710:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$2623_$","typeString":"type(library MathUpgradeable)"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:7","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":2583,"src":"1710:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1710:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1742:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1710:33:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1257,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1269,1345,1365],"referencedDeclaration":1345,"src":"1691:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1691:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1256,"id":1266,"nodeType":"Return","src":"1684:60:7"}]}]},"documentation":{"id":1250,"nodeType":"StructuredDocumentation","src":"1477:94:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":1269,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1585:11:7","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1252,"mutability":"mutable","name":"value","nameLocation":"1605:5:7","nodeType":"VariableDeclaration","scope":1269,"src":"1597:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1251,"name":"uint256","nodeType":"ElementaryTypeName","src":"1597:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1596:15:7"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1269,"src":"1635:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1254,"name":"string","nodeType":"ElementaryTypeName","src":"1635:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1634:15:7"},"scope":1391,"src":"1576:185:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1344,"nodeType":"Block","src":"1974:347:7","statements":[{"assignments":[1280],"declarations":[{"constant":false,"id":1280,"mutability":"mutable","name":"buffer","nameLocation":"1997:6:7","nodeType":"VariableDeclaration","scope":1344,"src":"1984:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1279,"name":"bytes","nodeType":"ElementaryTypeName","src":"1984:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1289,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2016:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1284,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"2020:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2016:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2029:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2016:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2006:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1281,"name":"bytes","nodeType":"ElementaryTypeName","src":"2010:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2006:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1984:47:7"},{"expression":{"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1290,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2041:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1292,"indexExpression":{"hexValue":"30","id":1291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2048:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2041:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2053:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2041:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1295,"nodeType":"ExpressionStatement","src":"2041:15:7"},{"expression":{"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1296,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2066:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1298,"indexExpression":{"hexValue":"31","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2073:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2066:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2078:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2066:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1301,"nodeType":"ExpressionStatement","src":"2066:15:7"},{"body":{"id":1330,"nodeType":"Block","src":"2136:83:7","statements":[{"expression":{"id":1324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1316,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2150:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1318,"indexExpression":{"id":1317,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2157:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2150:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1319,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"2162:8:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1323,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2171:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:3:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2171:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2162:21:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2150:33:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1325,"nodeType":"ExpressionStatement","src":"2150:33:7"},{"expression":{"id":1328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2197:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2207:1:7","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2197:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1329,"nodeType":"ExpressionStatement","src":"2197:11:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1310,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2124:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2128:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2124:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1331,"initializationExpression":{"assignments":[1303],"declarations":[{"constant":false,"id":1303,"mutability":"mutable","name":"i","nameLocation":"2104:1:7","nodeType":"VariableDeclaration","scope":1331,"src":"2096:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1309,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2108:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1305,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"2112:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2108:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2121:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2108:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2096:26:7"},"loopExpression":{"expression":{"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2131:3:7","subExpression":{"id":1313,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2133:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1315,"nodeType":"ExpressionStatement","src":"2131:3:7"},"nodeType":"ForStatement","src":"2091:128:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2236:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2245:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2248:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":1332,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2228:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2228:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1338,"nodeType":"ExpressionStatement","src":"2228:55:7"},{"expression":{"arguments":[{"id":1341,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2307:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2300:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1339,"name":"string","nodeType":"ElementaryTypeName","src":"2300:6:7","typeDescriptions":{}}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1278,"id":1343,"nodeType":"Return","src":"2293:21:7"}]},"documentation":{"id":1270,"nodeType":"StructuredDocumentation","src":"1767:112:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":1345,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1893:11:7","nodeType":"FunctionDefinition","parameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"value","nameLocation":"1913:5:7","nodeType":"VariableDeclaration","scope":1345,"src":"1905:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"1905:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"length","nameLocation":"1928:6:7","nodeType":"VariableDeclaration","scope":1345,"src":"1920:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1273,"name":"uint256","nodeType":"ElementaryTypeName","src":"1920:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1904:31:7"},"returnParameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1345,"src":"1959:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1276,"name":"string","nodeType":"ElementaryTypeName","src":"1959:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1958:15:7"},"scope":1391,"src":"1884:437:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1364,"nodeType":"Block","src":"2546:76:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1358,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"2591:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2583:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1356,"name":"uint160","nodeType":"ElementaryTypeName","src":"2583:7:7","typeDescriptions":{}}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2583:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2575:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1354,"name":"uint256","nodeType":"ElementaryTypeName","src":"2575:7:7","typeDescriptions":{}}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2575:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1361,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"2599:15:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1353,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1269,1345,1365],"referencedDeclaration":1345,"src":"2563:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1352,"id":1363,"nodeType":"Return","src":"2556:59:7"}]},"documentation":{"id":1346,"nodeType":"StructuredDocumentation","src":"2327:141:7","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":1365,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2482:11:7","nodeType":"FunctionDefinition","parameters":{"id":1349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1348,"mutability":"mutable","name":"addr","nameLocation":"2502:4:7","nodeType":"VariableDeclaration","scope":1365,"src":"2494:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1347,"name":"address","nodeType":"ElementaryTypeName","src":"2494:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2493:14:7"},"returnParameters":{"id":1352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1365,"src":"2531:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1350,"name":"string","nodeType":"ElementaryTypeName","src":"2531:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2530:15:7"},"scope":1391,"src":"2473:149:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1389,"nodeType":"Block","src":"2777:66:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1378,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"2810:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2804:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1376,"name":"bytes","nodeType":"ElementaryTypeName","src":"2804:5:7","typeDescriptions":{}}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2804:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1375,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2794:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2794:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1384,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1370,"src":"2833:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2827:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1382,"name":"bytes","nodeType":"ElementaryTypeName","src":"2827:5:7","typeDescriptions":{}}},"id":1385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2827:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1381,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2817:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2817:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2794:42:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1374,"id":1388,"nodeType":"Return","src":"2787:49:7"}]},"documentation":{"id":1366,"nodeType":"StructuredDocumentation","src":"2628:66:7","text":" @dev Returns true if the two strings are equal."},"id":1390,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2708:5:7","nodeType":"FunctionDefinition","parameters":{"id":1371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1368,"mutability":"mutable","name":"a","nameLocation":"2728:1:7","nodeType":"VariableDeclaration","scope":1390,"src":"2714:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1367,"name":"string","nodeType":"ElementaryTypeName","src":"2714:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1370,"mutability":"mutable","name":"b","nameLocation":"2745:1:7","nodeType":"VariableDeclaration","scope":1390,"src":"2731:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1369,"name":"string","nodeType":"ElementaryTypeName","src":"2731:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2713:34:7"},"returnParameters":{"id":1374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1390,"src":"2771:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1372,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:7"},"scope":1391,"src":"2699:144:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1392,"src":"242:2603:7","usedErrors":[]}],"src":"101:2745:7"},"id":7},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","exportedSymbols":{"ECDSAUpgradeable":[1757],"MathUpgradeable":[2623],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":1758,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1393,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:8"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","file":"../StringsUpgradeable.sol","id":1394,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1758,"sourceUnit":1392,"src":"137:35:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSAUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1395,"nodeType":"StructuredDocumentation","src":"174:205:8","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":1757,"linearizedBaseContracts":[1757],"name":"ECDSAUpgradeable","nameLocation":"388:16:8","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSAUpgradeable.RecoverError","id":1401,"members":[{"id":1396,"name":"NoError","nameLocation":"439:7:8","nodeType":"EnumValue","src":"439:7:8"},{"id":1397,"name":"InvalidSignature","nameLocation":"456:16:8","nodeType":"EnumValue","src":"456:16:8"},{"id":1398,"name":"InvalidSignatureLength","nameLocation":"482:22:8","nodeType":"EnumValue","src":"482:22:8"},{"id":1399,"name":"InvalidSignatureS","nameLocation":"514:17:8","nodeType":"EnumValue","src":"514:17:8"},{"id":1400,"name":"InvalidSignatureV","nameLocation":"541:17:8","nodeType":"EnumValue","src":"541:17:8"}],"name":"RecoverError","nameLocation":"416:12:8","nodeType":"EnumDefinition","src":"411:175:8"},{"body":{"id":1444,"nodeType":"Block","src":"646:457:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1407,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"660:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1408,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"669:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"682:7:8","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":1396,"src":"669:20:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"660:29:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1413,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"756:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1414,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"765:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"778:16:8","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"765:29:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"756:38:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1422,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"865:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1423,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"874:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"887:22:8","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":1398,"src":"874:35:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"865:44:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1431,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"987:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1432,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"996:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1009:17:8","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":1399,"src":"996:30:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"987:39:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1440,"nodeType":"IfStatement","src":"983:114:8","trueBody":{"id":1439,"nodeType":"Block","src":"1028:69:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265202773272076616c7565","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1049:36:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""},"value":"ECDSA: invalid signature 's' value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""}],"id":1435,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1042:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1042:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1438,"nodeType":"ExpressionStatement","src":"1042:44:8"}]}},"id":1441,"nodeType":"IfStatement","src":"861:236:8","trueBody":{"id":1430,"nodeType":"Block","src":"911:66:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265206c656e677468","id":1427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"932:33:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""},"value":"ECDSA: invalid signature length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""}],"id":1426,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"925:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"925:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1429,"nodeType":"ExpressionStatement","src":"925:41:8"}]}},"id":1442,"nodeType":"IfStatement","src":"752:345:8","trueBody":{"id":1421,"nodeType":"Block","src":"796:59:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"817:26:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""},"value":"ECDSA: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""}],"id":1417,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"810:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"810:34:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1420,"nodeType":"ExpressionStatement","src":"810:34:8"}]}},"id":1443,"nodeType":"IfStatement","src":"656:441:8","trueBody":{"id":1412,"nodeType":"Block","src":"691:55:8","statements":[{"functionReturnParameters":1406,"id":1411,"nodeType":"Return","src":"705:7:8"}]}}]},"id":1445,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"601:11:8","nodeType":"FunctionDefinition","parameters":{"id":1405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1404,"mutability":"mutable","name":"error","nameLocation":"626:5:8","nodeType":"VariableDeclaration","scope":1445,"src":"613:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1403,"nodeType":"UserDefinedTypeName","pathNode":{"id":1402,"name":"RecoverError","nameLocations":["613:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"613:12:8"},"referencedDeclaration":1401,"src":"613:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"612:20:8"},"returnParameters":{"id":1406,"nodeType":"ParameterList","parameters":[],"src":"646:0:8"},"scope":1757,"src":"592:511:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1490,"nodeType":"Block","src":"2271:626:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1458,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"2285:9:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2295:6:8","memberName":"length","nodeType":"MemberAccess","src":"2285:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":1460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2305:2:8","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2285:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1488,"nodeType":"Block","src":"2810:81:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2840:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2832:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1480,"name":"address","nodeType":"ElementaryTypeName","src":"2832:7:8","typeDescriptions":{}}},"id":1483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1484,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"2844:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2857:22:8","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":1398,"src":"2844:35:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1486,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2831:49:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1457,"id":1487,"nodeType":"Return","src":"2824:56:8"}]},"id":1489,"nodeType":"IfStatement","src":"2281:610:8","trueBody":{"id":1479,"nodeType":"Block","src":"2309:495:8","statements":[{"assignments":[1463],"declarations":[{"constant":false,"id":1463,"mutability":"mutable","name":"r","nameLocation":"2331:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2323:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2323:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1464,"nodeType":"VariableDeclarationStatement","src":"2323:9:8"},{"assignments":[1466],"declarations":[{"constant":false,"id":1466,"mutability":"mutable","name":"s","nameLocation":"2354:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2346:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1465,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2346:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1467,"nodeType":"VariableDeclarationStatement","src":"2346:9:8"},{"assignments":[1469],"declarations":[{"constant":false,"id":1469,"mutability":"mutable","name":"v","nameLocation":"2375:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2369:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1468,"name":"uint8","nodeType":"ElementaryTypeName","src":"2369:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1470,"nodeType":"VariableDeclarationStatement","src":"2369:7:8"},{"AST":{"nodeType":"YulBlock","src":"2577:171:8","statements":[{"nodeType":"YulAssignment","src":"2595:32:8","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2610:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2621:4:8","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:8"},"nodeType":"YulFunctionCall","src":"2606:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2600:5:8"},"nodeType":"YulFunctionCall","src":"2600:27:8"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"2595:1:8"}]},{"nodeType":"YulAssignment","src":"2644:32:8","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2659:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2670:4:8","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2655:3:8"},"nodeType":"YulFunctionCall","src":"2655:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2649:5:8"},"nodeType":"YulFunctionCall","src":"2649:27:8"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"2644:1:8"}]},{"nodeType":"YulAssignment","src":"2693:41:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2703:1:8","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2716:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2727:4:8","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2712:3:8"},"nodeType":"YulFunctionCall","src":"2712:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2706:5:8"},"nodeType":"YulFunctionCall","src":"2706:27:8"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"2698:4:8"},"nodeType":"YulFunctionCall","src":"2698:36:8"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"2693:1:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1463,"isOffset":false,"isSlot":false,"src":"2595:1:8","valueSize":1},{"declaration":1466,"isOffset":false,"isSlot":false,"src":"2644:1:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2610:9:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2659:9:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2716:9:8","valueSize":1},{"declaration":1469,"isOffset":false,"isSlot":false,"src":"2693:1:8","valueSize":1}],"id":1471,"nodeType":"InlineAssembly","src":"2568:180:8"},{"expression":{"arguments":[{"id":1473,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1448,"src":"2779:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1474,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"2785:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1475,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2788:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1476,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2791:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1472,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"2768:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2768:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1457,"id":1478,"nodeType":"Return","src":"2761:32:8"}]}}]},"documentation":{"id":1446,"nodeType":"StructuredDocumentation","src":"1109:1053:8","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature` or error string. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n _Available since v4.3._"},"id":1491,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2176:10:8","nodeType":"FunctionDefinition","parameters":{"id":1451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1448,"mutability":"mutable","name":"hash","nameLocation":"2195:4:8","nodeType":"VariableDeclaration","scope":1491,"src":"2187:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1447,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2187:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1450,"mutability":"mutable","name":"signature","nameLocation":"2214:9:8","nodeType":"VariableDeclaration","scope":1491,"src":"2201:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1449,"name":"bytes","nodeType":"ElementaryTypeName","src":"2201:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2186:38:8"},"returnParameters":{"id":1457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1491,"src":"2248:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1452,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1491,"src":"2257:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1455,"nodeType":"UserDefinedTypeName","pathNode":{"id":1454,"name":"RecoverError","nameLocations":["2257:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"2257:12:8"},"referencedDeclaration":1401,"src":"2257:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"2247:23:8"},"scope":1757,"src":"2167:730:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1517,"nodeType":"Block","src":"3770:140:8","statements":[{"assignments":[1502,1505],"declarations":[{"constant":false,"id":1502,"mutability":"mutable","name":"recovered","nameLocation":"3789:9:8","nodeType":"VariableDeclaration","scope":1517,"src":"3781:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1501,"name":"address","nodeType":"ElementaryTypeName","src":"3781:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1505,"mutability":"mutable","name":"error","nameLocation":"3813:5:8","nodeType":"VariableDeclaration","scope":1517,"src":"3800:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1504,"nodeType":"UserDefinedTypeName","pathNode":{"id":1503,"name":"RecoverError","nameLocations":["3800:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"3800:12:8"},"referencedDeclaration":1401,"src":"3800:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1510,"initialValue":{"arguments":[{"id":1507,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1494,"src":"3833:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1508,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1496,"src":"3839:9:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1506,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1491,"src":"3822:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3822:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"3780:69:8"},{"expression":{"arguments":[{"id":1512,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1505,"src":"3871:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1511,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"3859:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1514,"nodeType":"ExpressionStatement","src":"3859:18:8"},{"expression":{"id":1515,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"3894:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1500,"id":1516,"nodeType":"Return","src":"3887:16:8"}]},"documentation":{"id":1492,"nodeType":"StructuredDocumentation","src":"2903:775:8","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it."},"id":1518,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3692:7:8","nodeType":"FunctionDefinition","parameters":{"id":1497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1494,"mutability":"mutable","name":"hash","nameLocation":"3708:4:8","nodeType":"VariableDeclaration","scope":1518,"src":"3700:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1493,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3700:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1496,"mutability":"mutable","name":"signature","nameLocation":"3727:9:8","nodeType":"VariableDeclaration","scope":1518,"src":"3714:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1495,"name":"bytes","nodeType":"ElementaryTypeName","src":"3714:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3699:38:8"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1499,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1518,"src":"3761:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1498,"name":"address","nodeType":"ElementaryTypeName","src":"3761:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3760:9:8"},"scope":1757,"src":"3683:227:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1564,"nodeType":"Block","src":"4267:203:8","statements":[{"assignments":[1534],"declarations":[{"constant":false,"id":1534,"mutability":"mutable","name":"s","nameLocation":"4285:1:8","nodeType":"VariableDeclaration","scope":1564,"src":"4277:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4277:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1541,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1535,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"4289:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":1538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4302:66:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":1537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4294:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4294:7:8","typeDescriptions":{}}},"id":1539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4294:75:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4289:80:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4277:92:8"},{"assignments":[1543],"declarations":[{"constant":false,"id":1543,"mutability":"mutable","name":"v","nameLocation":"4385:1:8","nodeType":"VariableDeclaration","scope":1564,"src":"4379:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1542,"name":"uint8","nodeType":"ElementaryTypeName","src":"4379:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1556,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1548,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"4404:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4396:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1546,"name":"uint256","nodeType":"ElementaryTypeName","src":"4396:7:8","typeDescriptions":{}}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4396:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4411:3:8","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4396:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1552,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4395:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":1553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4418:2:8","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4395:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4389:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1544,"name":"uint8","nodeType":"ElementaryTypeName","src":"4389:5:8","typeDescriptions":{}}},"id":1555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4389:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4379:42:8"},{"expression":{"arguments":[{"id":1558,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"4449:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1559,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"4455:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1560,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"4458:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1561,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1534,"src":"4461:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1557,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"4438:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1532,"id":1563,"nodeType":"Return","src":"4431:32:8"}]},"documentation":{"id":1519,"nodeType":"StructuredDocumentation","src":"3916:243:8","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n _Available since v4.3._"},"id":1565,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4173:10:8","nodeType":"FunctionDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1521,"mutability":"mutable","name":"hash","nameLocation":"4192:4:8","nodeType":"VariableDeclaration","scope":1565,"src":"4184:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1520,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4184:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1523,"mutability":"mutable","name":"r","nameLocation":"4206:1:8","nodeType":"VariableDeclaration","scope":1565,"src":"4198:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4198:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1525,"mutability":"mutable","name":"vs","nameLocation":"4217:2:8","nodeType":"VariableDeclaration","scope":1565,"src":"4209:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1524,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4209:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4183:37:8"},"returnParameters":{"id":1532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1565,"src":"4244:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1527,"name":"address","nodeType":"ElementaryTypeName","src":"4244:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1565,"src":"4253:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1530,"nodeType":"UserDefinedTypeName","pathNode":{"id":1529,"name":"RecoverError","nameLocations":["4253:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"4253:12:8"},"referencedDeclaration":1401,"src":"4253:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"4243:23:8"},"scope":1757,"src":"4164:306:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1594,"nodeType":"Block","src":"4721:136:8","statements":[{"assignments":[1578,1581],"declarations":[{"constant":false,"id":1578,"mutability":"mutable","name":"recovered","nameLocation":"4740:9:8","nodeType":"VariableDeclaration","scope":1594,"src":"4732:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1577,"name":"address","nodeType":"ElementaryTypeName","src":"4732:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"error","nameLocation":"4764:5:8","nodeType":"VariableDeclaration","scope":1594,"src":"4751:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1580,"nodeType":"UserDefinedTypeName","pathNode":{"id":1579,"name":"RecoverError","nameLocations":["4751:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"4751:12:8"},"referencedDeclaration":1401,"src":"4751:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1587,"initialValue":{"arguments":[{"id":1583,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"4784:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1584,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1570,"src":"4790:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1585,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1572,"src":"4793:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1582,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1565,"src":"4773:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4773:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"4731:65:8"},{"expression":{"arguments":[{"id":1589,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"4818:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1588,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"4806:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4806:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1591,"nodeType":"ExpressionStatement","src":"4806:18:8"},{"expression":{"id":1592,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"4841:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1576,"id":1593,"nodeType":"Return","src":"4834:16:8"}]},"documentation":{"id":1566,"nodeType":"StructuredDocumentation","src":"4476:154:8","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n _Available since v4.2._"},"id":1595,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4644:7:8","nodeType":"FunctionDefinition","parameters":{"id":1573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1568,"mutability":"mutable","name":"hash","nameLocation":"4660:4:8","nodeType":"VariableDeclaration","scope":1595,"src":"4652:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4652:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1570,"mutability":"mutable","name":"r","nameLocation":"4674:1:8","nodeType":"VariableDeclaration","scope":1595,"src":"4666:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4666:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1572,"mutability":"mutable","name":"vs","nameLocation":"4685:2:8","nodeType":"VariableDeclaration","scope":1595,"src":"4677:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1571,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4677:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4651:37:8"},"returnParameters":{"id":1576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1595,"src":"4712:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"4712:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4711:9:8"},"scope":1757,"src":"4635:222:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1658,"nodeType":"Block","src":"5142:1345:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1614,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"6038:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6030:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1612,"name":"uint256","nodeType":"ElementaryTypeName","src":"6030:7:8","typeDescriptions":{}}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6030:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":1616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6043:66:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6030:79:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1627,"nodeType":"IfStatement","src":"6026:161:8","trueBody":{"id":1626,"nodeType":"Block","src":"6111:76:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6141:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6133:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1618,"name":"address","nodeType":"ElementaryTypeName","src":"6133:7:8","typeDescriptions":{}}},"id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6133:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1622,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6145:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6158:17:8","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":1399,"src":"6145:30:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6132:44:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1625,"nodeType":"Return","src":"6125:51:8"}]}},{"assignments":[1629],"declarations":[{"constant":false,"id":1629,"mutability":"mutable","name":"signer","nameLocation":"6289:6:8","nodeType":"VariableDeclaration","scope":1658,"src":"6281:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1628,"name":"address","nodeType":"ElementaryTypeName","src":"6281:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1636,"initialValue":{"arguments":[{"id":1631,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1598,"src":"6308:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1632,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"6314:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1633,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"6317:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1634,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"6320:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1630,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6298:9:8","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6281:41:8"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1637,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"6336:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6354:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6346:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"6346:7:8","typeDescriptions":{}}},"id":1641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6346:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6336:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1652,"nodeType":"IfStatement","src":"6332:101:8","trueBody":{"id":1651,"nodeType":"Block","src":"6358:75:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6388:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6380:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1643,"name":"address","nodeType":"ElementaryTypeName","src":"6380:7:8","typeDescriptions":{}}},"id":1646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6380:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1647,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6392:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6405:16:8","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"6392:29:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1649,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6379:43:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1650,"nodeType":"Return","src":"6372:50:8"}]}},{"expression":{"components":[{"id":1653,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"6451:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1654,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6459:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6472:7:8","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":1396,"src":"6459:20:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1656,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6450:30:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1657,"nodeType":"Return","src":"6443:37:8"}]},"documentation":{"id":1596,"nodeType":"StructuredDocumentation","src":"4863:163:8","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately.\n _Available since v4.3._"},"id":1659,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5040:10:8","nodeType":"FunctionDefinition","parameters":{"id":1605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1598,"mutability":"mutable","name":"hash","nameLocation":"5059:4:8","nodeType":"VariableDeclaration","scope":1659,"src":"5051:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1597,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5051:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1600,"mutability":"mutable","name":"v","nameLocation":"5071:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5065:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1599,"name":"uint8","nodeType":"ElementaryTypeName","src":"5065:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1602,"mutability":"mutable","name":"r","nameLocation":"5082:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5074:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5074:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1604,"mutability":"mutable","name":"s","nameLocation":"5093:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5085:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5085:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5050:45:8"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1659,"src":"5119:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1606,"name":"address","nodeType":"ElementaryTypeName","src":"5119:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1659,"src":"5128:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1609,"nodeType":"UserDefinedTypeName","pathNode":{"id":1608,"name":"RecoverError","nameLocations":["5128:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"5128:12:8"},"referencedDeclaration":1401,"src":"5128:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"5118:23:8"},"scope":1757,"src":"5031:1456:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1691,"nodeType":"Block","src":"6714:138:8","statements":[{"assignments":[1674,1677],"declarations":[{"constant":false,"id":1674,"mutability":"mutable","name":"recovered","nameLocation":"6733:9:8","nodeType":"VariableDeclaration","scope":1691,"src":"6725:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1673,"name":"address","nodeType":"ElementaryTypeName","src":"6725:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"error","nameLocation":"6757:5:8","nodeType":"VariableDeclaration","scope":1691,"src":"6744:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1676,"nodeType":"UserDefinedTypeName","pathNode":{"id":1675,"name":"RecoverError","nameLocations":["6744:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"6744:12:8"},"referencedDeclaration":1401,"src":"6744:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1684,"initialValue":{"arguments":[{"id":1679,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1662,"src":"6777:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1680,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"6783:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1681,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"6786:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1682,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"6789:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1678,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"6766:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6766:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"6724:67:8"},{"expression":{"arguments":[{"id":1686,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"6813:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1685,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"6801:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6801:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1688,"nodeType":"ExpressionStatement","src":"6801:18:8"},{"expression":{"id":1689,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"6836:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1672,"id":1690,"nodeType":"Return","src":"6829:16:8"}]},"documentation":{"id":1660,"nodeType":"StructuredDocumentation","src":"6493:122:8","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":1692,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6629:7:8","nodeType":"FunctionDefinition","parameters":{"id":1669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1662,"mutability":"mutable","name":"hash","nameLocation":"6645:4:8","nodeType":"VariableDeclaration","scope":1692,"src":"6637:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6637:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1664,"mutability":"mutable","name":"v","nameLocation":"6657:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6651:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1663,"name":"uint8","nodeType":"ElementaryTypeName","src":"6651:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1666,"mutability":"mutable","name":"r","nameLocation":"6668:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6660:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6660:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1668,"mutability":"mutable","name":"s","nameLocation":"6679:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6671:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6671:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6636:45:8"},"returnParameters":{"id":1672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1692,"src":"6705:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"6705:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6704:9:8"},"scope":1757,"src":"6620:232:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1701,"nodeType":"Block","src":"7228:310:8","statements":[{"AST":{"nodeType":"YulBlock","src":"7384:148:8","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7405:4:8","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nodeType":"YulLiteral","src":"7411:34:8","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7398:6:8"},"nodeType":"YulFunctionCall","src":"7398:48:8"},"nodeType":"YulExpressionStatement","src":"7398:48:8"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7466:4:8","type":"","value":"0x1c"},{"name":"hash","nodeType":"YulIdentifier","src":"7472:4:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7459:6:8"},"nodeType":"YulFunctionCall","src":"7459:18:8"},"nodeType":"YulExpressionStatement","src":"7459:18:8"},{"nodeType":"YulAssignment","src":"7490:32:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7511:4:8","type":"","value":"0x00"},{"kind":"number","nodeType":"YulLiteral","src":"7517:4:8","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"7501:9:8"},"nodeType":"YulFunctionCall","src":"7501:21:8"},"variableNames":[{"name":"message","nodeType":"YulIdentifier","src":"7490:7:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1695,"isOffset":false,"isSlot":false,"src":"7472:4:8","valueSize":1},{"declaration":1698,"isOffset":false,"isSlot":false,"src":"7490:7:8","valueSize":1}],"id":1700,"nodeType":"InlineAssembly","src":"7375:157:8"}]},"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"6858:279:8","text":" @dev Returns an Ethereum Signed Message, created from a `hash`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":1702,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7151:22:8","nodeType":"FunctionDefinition","parameters":{"id":1696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"mutability":"mutable","name":"hash","nameLocation":"7182:4:8","nodeType":"VariableDeclaration","scope":1702,"src":"7174:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7174:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7173:14:8"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1698,"mutability":"mutable","name":"message","nameLocation":"7219:7:8","nodeType":"VariableDeclaration","scope":1702,"src":"7211:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7211:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7210:17:8"},"scope":1757,"src":"7142:396:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1723,"nodeType":"Block","src":"7903:127:8","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":1713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7947:32:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"expression":{"id":1716,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"8009:1:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8011:6:8","memberName":"length","nodeType":"MemberAccess","src":"8009:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1714,"name":"StringsUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1391,"src":"7981:18:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StringsUpgradeable_$1391_$","typeString":"type(library StringsUpgradeable)"}},"id":1715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8000:8:8","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1221,"src":"7981:27:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7981:37:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1719,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"8020:1:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1711,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7930:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7934:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"7930:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7930:92:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1710,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7920:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7920:103:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1709,"id":1722,"nodeType":"Return","src":"7913:110:8"}]},"documentation":{"id":1703,"nodeType":"StructuredDocumentation","src":"7544:274:8","text":" @dev Returns an Ethereum Signed Message, created from `s`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":1724,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7832:22:8","nodeType":"FunctionDefinition","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1705,"mutability":"mutable","name":"s","nameLocation":"7868:1:8","nodeType":"VariableDeclaration","scope":1724,"src":"7855:14:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1704,"name":"bytes","nodeType":"ElementaryTypeName","src":"7855:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7854:16:8"},"returnParameters":{"id":1709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1724,"src":"7894:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7894:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7893:9:8"},"scope":1757,"src":"7823:207:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1735,"nodeType":"Block","src":"8476:290:8","statements":[{"AST":{"nodeType":"YulBlock","src":"8538:222:8","statements":[{"nodeType":"YulVariableDeclaration","src":"8552:22:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8569:4:8","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8563:5:8"},"nodeType":"YulFunctionCall","src":"8563:11:8"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"8556:3:8","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8594:3:8"},{"hexValue":"1901","kind":"string","nodeType":"YulLiteral","src":"8599:10:8","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8587:6:8"},"nodeType":"YulFunctionCall","src":"8587:23:8"},"nodeType":"YulExpressionStatement","src":"8587:23:8"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8634:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8639:4:8","type":"","value":"0x02"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8630:3:8"},"nodeType":"YulFunctionCall","src":"8630:14:8"},{"name":"domainSeparator","nodeType":"YulIdentifier","src":"8646:15:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8623:6:8"},"nodeType":"YulFunctionCall","src":"8623:39:8"},"nodeType":"YulExpressionStatement","src":"8623:39:8"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8686:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8691:4:8","type":"","value":"0x22"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8682:3:8"},"nodeType":"YulFunctionCall","src":"8682:14:8"},{"name":"structHash","nodeType":"YulIdentifier","src":"8698:10:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8675:6:8"},"nodeType":"YulFunctionCall","src":"8675:34:8"},"nodeType":"YulExpressionStatement","src":"8675:34:8"},{"nodeType":"YulAssignment","src":"8722:28:8","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8740:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8745:4:8","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"8730:9:8"},"nodeType":"YulFunctionCall","src":"8730:20:8"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"8722:4:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1732,"isOffset":false,"isSlot":false,"src":"8722:4:8","valueSize":1},{"declaration":1727,"isOffset":false,"isSlot":false,"src":"8646:15:8","valueSize":1},{"declaration":1729,"isOffset":false,"isSlot":false,"src":"8698:10:8","valueSize":1}],"id":1734,"nodeType":"InlineAssembly","src":"8529:231:8"}]},"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"8036:328:8","text":" @dev Returns an Ethereum Signed Typed Data, created from a\n `domainSeparator` and a `structHash`. This produces hash corresponding\n to the one signed with the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n JSON-RPC method as part of EIP-712.\n See {recover}."},"id":1736,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"8378:15:8","nodeType":"FunctionDefinition","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"domainSeparator","nameLocation":"8402:15:8","nodeType":"VariableDeclaration","scope":1736,"src":"8394:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1726,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8394:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"structHash","nameLocation":"8427:10:8","nodeType":"VariableDeclaration","scope":1736,"src":"8419:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8419:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8393:45:8"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"data","nameLocation":"8470:4:8","nodeType":"VariableDeclaration","scope":1736,"src":"8462:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8462:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8461:14:8"},"scope":1757,"src":"8369:397:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1755,"nodeType":"Block","src":"9081:80:8","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":1749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9125:10:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":1750,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"9137:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1751,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"9148:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1747,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9108:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9112:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"9108:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9108:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1746,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9098:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9098:56:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1745,"id":1754,"nodeType":"Return","src":"9091:63:8"}]},"documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"8772:193:8","text":" @dev Returns an Ethereum Signed Data with intended validator, created from a\n `validator` and `data` according to the version 0 of EIP-191.\n See {recover}."},"id":1756,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"8979:31:8","nodeType":"FunctionDefinition","parameters":{"id":1742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1739,"mutability":"mutable","name":"validator","nameLocation":"9019:9:8","nodeType":"VariableDeclaration","scope":1756,"src":"9011:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1738,"name":"address","nodeType":"ElementaryTypeName","src":"9011:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1741,"mutability":"mutable","name":"data","nameLocation":"9043:4:8","nodeType":"VariableDeclaration","scope":1756,"src":"9030:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1740,"name":"bytes","nodeType":"ElementaryTypeName","src":"9030:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9010:38:8"},"returnParameters":{"id":1745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1756,"src":"9072:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1743,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9072:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9071:9:8"},"scope":1757,"src":"8970:191:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1758,"src":"380:8783:8","usedErrors":[]}],"src":"112:9052:8"},"id":8},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[2623]},"id":2624,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1759,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"MathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1760,"nodeType":"StructuredDocumentation","src":"128:73:9","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2623,"linearizedBaseContracts":[2623],"name":"MathUpgradeable","nameLocation":"210:15:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"MathUpgradeable.Rounding","id":1764,"members":[{"id":1761,"name":"Down","nameLocation":"256:4:9","nodeType":"EnumValue","src":"256:4:9"},{"id":1762,"name":"Up","nameLocation":"298:2:9","nodeType":"EnumValue","src":"298:2:9"},{"id":1763,"name":"Zero","nameLocation":"329:4:9","nodeType":"EnumValue","src":"329:4:9"}],"name":"Rounding","nameLocation":"237:8:9","nodeType":"EnumDefinition","src":"232:122:9"},{"body":{"id":1781,"nodeType":"Block","src":"491:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1774,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"508:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1775,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1769,"src":"512:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"508:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1778,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1769,"src":"520:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"508:13:9","trueExpression":{"id":1777,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"516:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1773,"id":1780,"nodeType":"Return","src":"501:20:9"}]},"documentation":{"id":1765,"nodeType":"StructuredDocumentation","src":"360:59:9","text":" @dev Returns the largest of two numbers."},"id":1782,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"433:3:9","nodeType":"FunctionDefinition","parameters":{"id":1770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1767,"mutability":"mutable","name":"a","nameLocation":"445:1:9","nodeType":"VariableDeclaration","scope":1782,"src":"437:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1766,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1769,"mutability":"mutable","name":"b","nameLocation":"456:1:9","nodeType":"VariableDeclaration","scope":1782,"src":"448:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1768,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"436:22:9"},"returnParameters":{"id":1773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1782,"src":"482:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1771,"name":"uint256","nodeType":"ElementaryTypeName","src":"482:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"481:9:9"},"scope":2623,"src":"424:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1799,"nodeType":"Block","src":"666:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1792,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"683:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1793,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"687:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"683:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1796,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"695:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"683:13:9","trueExpression":{"id":1795,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"691:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1791,"id":1798,"nodeType":"Return","src":"676:20:9"}]},"documentation":{"id":1783,"nodeType":"StructuredDocumentation","src":"534:60:9","text":" @dev Returns the smallest of two numbers."},"id":1800,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"608:3:9","nodeType":"FunctionDefinition","parameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1785,"mutability":"mutable","name":"a","nameLocation":"620:1:9","nodeType":"VariableDeclaration","scope":1800,"src":"612:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1784,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1787,"mutability":"mutable","name":"b","nameLocation":"631:1:9","nodeType":"VariableDeclaration","scope":1800,"src":"623:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1786,"name":"uint256","nodeType":"ElementaryTypeName","src":"623:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"611:22:9"},"returnParameters":{"id":1791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1800,"src":"657:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1789,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"656:9:9"},"scope":2623,"src":"599:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1822,"nodeType":"Block","src":"887:82:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1810,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"942:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1811,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"946:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"942:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1813,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"941:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1814,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"952:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1815,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"956:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"951:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"961:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"951:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1809,"id":1821,"nodeType":"Return","src":"934:28:9"}]},"documentation":{"id":1801,"nodeType":"StructuredDocumentation","src":"709:102:9","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":1823,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"825:7:9","nodeType":"FunctionDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1803,"mutability":"mutable","name":"a","nameLocation":"841:1:9","nodeType":"VariableDeclaration","scope":1823,"src":"833:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1802,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1805,"mutability":"mutable","name":"b","nameLocation":"852:1:9","nodeType":"VariableDeclaration","scope":1823,"src":"844:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"844:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"832:22:9"},"returnParameters":{"id":1809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1808,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1823,"src":"878:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1807,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"877:9:9"},"scope":2623,"src":"816:153:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1847,"nodeType":"Block","src":"1239:123:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1833,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"1327:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1332:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1327:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1837,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"1341:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1341:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1840,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1340:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1841,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"1350:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1354:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1340:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1327:28:9","trueExpression":{"hexValue":"30","id":1836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1336:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1832,"id":1846,"nodeType":"Return","src":"1320:35:9"}]},"documentation":{"id":1824,"nodeType":"StructuredDocumentation","src":"975:188:9","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":1848,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1177:7:9","nodeType":"FunctionDefinition","parameters":{"id":1829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"a","nameLocation":"1193:1:9","nodeType":"VariableDeclaration","scope":1848,"src":"1185:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1825,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1828,"mutability":"mutable","name":"b","nameLocation":"1204:1:9","nodeType":"VariableDeclaration","scope":1848,"src":"1196:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1196:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1184:22:9"},"returnParameters":{"id":1832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1848,"src":"1230:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1830,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:9"},"scope":2623,"src":"1168:194:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1970,"nodeType":"Block","src":"1776:4115:9","statements":[{"id":1969,"nodeType":"UncheckedBlock","src":"1786:4099:9","statements":[{"assignments":[1861],"declarations":[{"constant":false,"id":1861,"mutability":"mutable","name":"prod0","nameLocation":"2115:5:9","nodeType":"VariableDeclaration","scope":1969,"src":"2107:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1860,"name":"uint256","nodeType":"ElementaryTypeName","src":"2107:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1862,"nodeType":"VariableDeclarationStatement","src":"2107:13:9"},{"assignments":[1864],"declarations":[{"constant":false,"id":1864,"mutability":"mutable","name":"prod1","nameLocation":"2187:5:9","nodeType":"VariableDeclaration","scope":1969,"src":"2179:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1863,"name":"uint256","nodeType":"ElementaryTypeName","src":"2179:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1865,"nodeType":"VariableDeclarationStatement","src":"2179:13:9"},{"AST":{"nodeType":"YulBlock","src":"2259:157:9","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:30:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2294:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2297:1:9"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2304:1:9","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2300:3:9"},"nodeType":"YulFunctionCall","src":"2300:6:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2287:6:9"},"nodeType":"YulFunctionCall","src":"2287:20:9"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2281:2:9","type":""}]},{"nodeType":"YulAssignment","src":"2324:18:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2337:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2340:1:9"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2333:3:9"},"nodeType":"YulFunctionCall","src":"2333:9:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2324:5:9"}]},{"nodeType":"YulAssignment","src":"2359:43:9","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2376:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2380:5:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2372:3:9"},"nodeType":"YulFunctionCall","src":"2372:14:9"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2391:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2395:5:9"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2388:2:9"},"nodeType":"YulFunctionCall","src":"2388:13:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2368:3:9"},"nodeType":"YulFunctionCall","src":"2368:34:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2359:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2324:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2380:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2395:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"2359:5:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"2294:1:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"2337:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"2297:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"2340:1:9","valueSize":1}],"id":1866,"nodeType":"InlineAssembly","src":"2250:166:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1867,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2497:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2506:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2497:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1875,"nodeType":"IfStatement","src":"2493:368:9","trueBody":{"id":1874,"nodeType":"Block","src":"2509:352:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1870,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"2827:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1871,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"2835:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2827:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1859,"id":1873,"nodeType":"Return","src":"2820:26:9"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1877,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"2971:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1878,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2985:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2971:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":1880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2992:23:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":1876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2963:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2963:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1882,"nodeType":"ExpressionStatement","src":"2963:53:9"},{"assignments":[1884],"declarations":[{"constant":false,"id":1884,"mutability":"mutable","name":"remainder","nameLocation":"3280:9:9","nodeType":"VariableDeclaration","scope":1969,"src":"3272:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1883,"name":"uint256","nodeType":"ElementaryTypeName","src":"3272:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1885,"nodeType":"VariableDeclarationStatement","src":"3272:17:9"},{"AST":{"nodeType":"YulBlock","src":"3312:291:9","statements":[{"nodeType":"YulAssignment","src":"3381:38:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3401:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"3404:1:9"},{"name":"denominator","nodeType":"YulIdentifier","src":"3407:11:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3394:6:9"},"nodeType":"YulFunctionCall","src":"3394:25:9"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3381:9:9"}]},{"nodeType":"YulAssignment","src":"3501:41:9","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3514:5:9"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3524:9:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"3535:5:9"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3521:2:9"},"nodeType":"YulFunctionCall","src":"3521:20:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3510:3:9"},"nodeType":"YulFunctionCall","src":"3510:32:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3501:5:9"}]},{"nodeType":"YulAssignment","src":"3559:30:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3572:5:9"},{"name":"remainder","nodeType":"YulIdentifier","src":"3579:9:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3568:3:9"},"nodeType":"YulFunctionCall","src":"3568:21:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3559:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1855,"isOffset":false,"isSlot":false,"src":"3407:11:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3535:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3559:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3572:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"3501:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"3514:5:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3381:9:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3524:9:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3579:9:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"3401:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"3404:1:9","valueSize":1}],"id":1886,"nodeType":"InlineAssembly","src":"3303:300:9"},{"assignments":[1888],"declarations":[{"constant":false,"id":1888,"mutability":"mutable","name":"twos","nameLocation":"3918:4:9","nodeType":"VariableDeclaration","scope":1969,"src":"3910:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1887,"name":"uint256","nodeType":"ElementaryTypeName","src":"3910:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1896,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1889,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"3925:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3940:12:9","subExpression":{"id":1890,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"3941:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3955:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3940:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3939:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3925:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3910:47:9"},{"AST":{"nodeType":"YulBlock","src":"3980:362:9","statements":[{"nodeType":"YulAssignment","src":"4045:37:9","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4064:11:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4077:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4060:3:9"},"nodeType":"YulFunctionCall","src":"4060:22:9"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4045:11:9"}]},{"nodeType":"YulAssignment","src":"4149:25:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4162:5:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4169:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4158:3:9"},"nodeType":"YulFunctionCall","src":"4158:16:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4149:5:9"}]},{"nodeType":"YulAssignment","src":"4289:39:9","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4309:1:9","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4312:4:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4305:3:9"},"nodeType":"YulFunctionCall","src":"4305:12:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4319:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4301:3:9"},"nodeType":"YulFunctionCall","src":"4301:23:9"},{"kind":"number","nodeType":"YulLiteral","src":"4326:1:9","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4297:3:9"},"nodeType":"YulFunctionCall","src":"4297:31:9"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4289:4:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1855,"isOffset":false,"isSlot":false,"src":"4045:11:9","valueSize":1},{"declaration":1855,"isOffset":false,"isSlot":false,"src":"4064:11:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"4149:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"4162:5:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4077:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4169:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4289:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4312:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4319:4:9","valueSize":1}],"id":1897,"nodeType":"InlineAssembly","src":"3971:371:9"},{"expression":{"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1898,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"4408:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1899,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"4417:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1900,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1888,"src":"4425:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4417:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4408:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1903,"nodeType":"ExpressionStatement","src":"4408:21:9"},{"assignments":[1905],"declarations":[{"constant":false,"id":1905,"mutability":"mutable","name":"inverse","nameLocation":"4755:7:9","nodeType":"VariableDeclaration","scope":1969,"src":"4747:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1904,"name":"uint256","nodeType":"ElementaryTypeName","src":"4747:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1912,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4766:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1907,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"4770:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4766:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4765:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4785:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4765:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4747:39:9"},{"expression":{"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1913,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5003:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5014:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1915,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5018:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1916,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5032:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5018:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5014:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1920,"nodeType":"ExpressionStatement","src":"5003:36:9"},{"expression":{"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1921,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5072:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5083:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1923,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5087:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1924,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5101:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5087:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5083:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1928,"nodeType":"ExpressionStatement","src":"5072:36:9"},{"expression":{"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1929,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5142:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5153:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1931,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5157:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1932,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5157:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5153:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1936,"nodeType":"ExpressionStatement","src":"5142:36:9"},{"expression":{"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1937,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5212:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5223:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1939,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5227:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1940,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5241:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5227:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5223:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1944,"nodeType":"ExpressionStatement","src":"5212:36:9"},{"expression":{"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1945,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5282:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5293:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1947,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5297:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1948,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5311:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5297:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5293:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1952,"nodeType":"ExpressionStatement","src":"5282:36:9"},{"expression":{"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1953,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5353:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5364:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1955,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5368:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1956,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5382:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5368:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5364:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1960,"nodeType":"ExpressionStatement","src":"5353:36:9"},{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1961,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"5823:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1962,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"5832:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1963,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5840:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5832:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5823:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"5823:24:9"},{"expression":{"id":1967,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"5868:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1859,"id":1968,"nodeType":"Return","src":"5861:13:9"}]}]},"documentation":{"id":1849,"nodeType":"StructuredDocumentation","src":"1368:305:9","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1971,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1687:6:9","nodeType":"FunctionDefinition","parameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"x","nameLocation":"1702:1:9","nodeType":"VariableDeclaration","scope":1971,"src":"1694:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1853,"mutability":"mutable","name":"y","nameLocation":"1713:1:9","nodeType":"VariableDeclaration","scope":1971,"src":"1705:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1855,"mutability":"mutable","name":"denominator","nameLocation":"1724:11:9","nodeType":"VariableDeclaration","scope":1971,"src":"1716:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1693:43:9"},"returnParameters":{"id":1859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1858,"mutability":"mutable","name":"result","nameLocation":"1768:6:9","nodeType":"VariableDeclaration","scope":1971,"src":"1760:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1857,"name":"uint256","nodeType":"ElementaryTypeName","src":"1760:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:16:9"},"scope":2623,"src":"1678:4213:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2014,"nodeType":"Block","src":"6133:189:9","statements":[{"assignments":[1987],"declarations":[{"constant":false,"id":1987,"mutability":"mutable","name":"result","nameLocation":"6151:6:9","nodeType":"VariableDeclaration","scope":2014,"src":"6143:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1986,"name":"uint256","nodeType":"ElementaryTypeName","src":"6143:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1993,"initialValue":{"arguments":[{"id":1989,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"6167:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1990,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"6170:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1991,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"6173:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1988,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1971,2015],"referencedDeclaration":1971,"src":"6160:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6160:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6143:42:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1994,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"6199:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1995,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"6211:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":1996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6220:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"6211:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"6199:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1999,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"6233:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2000,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"6236:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2001,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"6239:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1998,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"6226:6:9","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6226:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6254:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6226:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6199:56:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2011,"nodeType":"IfStatement","src":"6195:98:9","trueBody":{"id":2010,"nodeType":"Block","src":"6257:36:9","statements":[{"expression":{"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2006,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"6271:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6281:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6271:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2009,"nodeType":"ExpressionStatement","src":"6271:11:9"}]}},{"expression":{"id":2012,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"6309:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1985,"id":2013,"nodeType":"Return","src":"6302:13:9"}]},"documentation":{"id":1972,"nodeType":"StructuredDocumentation","src":"5897:121:9","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2015,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6032:6:9","nodeType":"FunctionDefinition","parameters":{"id":1982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1974,"mutability":"mutable","name":"x","nameLocation":"6047:1:9","nodeType":"VariableDeclaration","scope":2015,"src":"6039:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1973,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1976,"mutability":"mutable","name":"y","nameLocation":"6058:1:9","nodeType":"VariableDeclaration","scope":2015,"src":"6050:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1975,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1978,"mutability":"mutable","name":"denominator","nameLocation":"6069:11:9","nodeType":"VariableDeclaration","scope":2015,"src":"6061:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"6061:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1981,"mutability":"mutable","name":"rounding","nameLocation":"6091:8:9","nodeType":"VariableDeclaration","scope":2015,"src":"6082:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":1980,"nodeType":"UserDefinedTypeName","pathNode":{"id":1979,"name":"Rounding","nameLocations":["6082:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"6082:8:9"},"referencedDeclaration":1764,"src":"6082:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"6038:62:9"},"returnParameters":{"id":1985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"6124:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1983,"name":"uint256","nodeType":"ElementaryTypeName","src":"6124:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6123:9:9"},"scope":2623,"src":"6023:299:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2126,"nodeType":"Block","src":"6598:1585:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2023,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"6612:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6617:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6612:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2029,"nodeType":"IfStatement","src":"6608:45:9","trueBody":{"id":2028,"nodeType":"Block","src":"6620:33:9","statements":[{"expression":{"hexValue":"30","id":2026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6641:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2022,"id":2027,"nodeType":"Return","src":"6634:8:9"}]}},{"assignments":[2031],"declarations":[{"constant":false,"id":2031,"mutability":"mutable","name":"result","nameLocation":"7340:6:9","nodeType":"VariableDeclaration","scope":2126,"src":"7332:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"7332:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2040,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7349:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2034,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7360:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2033,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2295,2331],"referencedDeclaration":2295,"src":"7355:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7355:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7355:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2038,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7354:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7349:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7332:36:9"},{"id":2125,"nodeType":"UncheckedBlock","src":"7769:408:9","statements":[{"expression":{"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7793:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2042,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7803:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2043,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7812:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2044,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7816:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7812:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7803:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2047,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7827:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7802:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7793:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2051,"nodeType":"ExpressionStatement","src":"7793:35:9"},{"expression":{"id":2061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2052,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7842:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2053,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7852:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2054,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7861:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2055,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7865:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7861:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7852:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7851:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7876:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7851:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7842:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2062,"nodeType":"ExpressionStatement","src":"7842:35:9"},{"expression":{"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2063,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7891:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2064,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7901:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2065,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7910:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2066,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7914:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7910:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7901:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7900:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7925:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7900:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7891:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2073,"nodeType":"ExpressionStatement","src":"7891:35:9"},{"expression":{"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2074,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7940:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7950:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2076,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7959:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2077,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7963:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7959:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7950:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2080,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7949:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7974:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7949:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7940:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2084,"nodeType":"ExpressionStatement","src":"7940:35:9"},{"expression":{"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2085,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7989:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2086,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7999:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2087,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8008:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2088,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8012:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8008:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7999:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7998:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8023:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7998:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7989:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2095,"nodeType":"ExpressionStatement","src":"7989:35:9"},{"expression":{"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2096,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8038:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2097,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8048:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2098,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8057:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2099,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8061:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8057:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8048:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8047:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8072:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8047:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8038:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2106,"nodeType":"ExpressionStatement","src":"8038:35:9"},{"expression":{"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2107,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8087:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8097:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8106:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8110:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8106:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8096:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8121:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8096:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8087:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2117,"nodeType":"ExpressionStatement","src":"8087:35:9"},{"expression":{"arguments":[{"id":2119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8147:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2120,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8155:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2121,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8159:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8155:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2118,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"8143:3:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8143:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2022,"id":2124,"nodeType":"Return","src":"8136:30:9"}]}]},"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"6328:208:9","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":2127,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6550:4:9","nodeType":"FunctionDefinition","parameters":{"id":2019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"a","nameLocation":"6563:1:9","nodeType":"VariableDeclaration","scope":2127,"src":"6555:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"6555:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6554:11:9"},"returnParameters":{"id":2022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2127,"src":"6589:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2020,"name":"uint256","nodeType":"ElementaryTypeName","src":"6589:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6588:9:9"},"scope":2623,"src":"6541:1642:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2162,"nodeType":"Block","src":"8359:161:9","statements":[{"id":2161,"nodeType":"UncheckedBlock","src":"8369:145:9","statements":[{"assignments":[2139],"declarations":[{"constant":false,"id":2139,"mutability":"mutable","name":"result","nameLocation":"8401:6:9","nodeType":"VariableDeclaration","scope":2161,"src":"8393:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2138,"name":"uint256","nodeType":"ElementaryTypeName","src":"8393:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2143,"initialValue":{"arguments":[{"id":2141,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"8415:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2140,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2127,2163],"referencedDeclaration":2127,"src":"8410:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8410:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8393:24:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2144,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8438:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2145,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2133,"src":"8448:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2146,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"8460:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8469:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"8460:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"8448:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8475:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2150,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8484:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2152,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"8493:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8448:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8501:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8448:54:9","trueExpression":{"hexValue":"31","id":2155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8497:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8447:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8438:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2137,"id":2160,"nodeType":"Return","src":"8431:72:9"}]}]},"documentation":{"id":2128,"nodeType":"StructuredDocumentation","src":"8189:89:9","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":2163,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8292:4:9","nodeType":"FunctionDefinition","parameters":{"id":2134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2130,"mutability":"mutable","name":"a","nameLocation":"8305:1:9","nodeType":"VariableDeclaration","scope":2163,"src":"8297:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2129,"name":"uint256","nodeType":"ElementaryTypeName","src":"8297:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2133,"mutability":"mutable","name":"rounding","nameLocation":"8317:8:9","nodeType":"VariableDeclaration","scope":2163,"src":"8308:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2132,"nodeType":"UserDefinedTypeName","pathNode":{"id":2131,"name":"Rounding","nameLocations":["8308:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"8308:8:9"},"referencedDeclaration":1764,"src":"8308:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"8296:30:9"},"returnParameters":{"id":2137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2163,"src":"8350:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2135,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8349:9:9"},"scope":2623,"src":"8283:237:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2294,"nodeType":"Block","src":"8705:922:9","statements":[{"assignments":[2172],"declarations":[{"constant":false,"id":2172,"mutability":"mutable","name":"result","nameLocation":"8723:6:9","nodeType":"VariableDeclaration","scope":2294,"src":"8715:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"8715:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2174,"initialValue":{"hexValue":"30","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8732:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8715:18:9"},{"id":2291,"nodeType":"UncheckedBlock","src":"8743:855:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8771:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8780:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8771:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8786:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8771:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2189,"nodeType":"IfStatement","src":"8767:99:9","trueBody":{"id":2188,"nodeType":"Block","src":"8789:77:9","statements":[{"expression":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8807:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8817:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8807:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2183,"nodeType":"ExpressionStatement","src":"8807:13:9"},{"expression":{"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"8838:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8848:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8838:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2187,"nodeType":"ExpressionStatement","src":"8838:13:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8883:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8892:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8883:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8897:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8883:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2204,"nodeType":"IfStatement","src":"8879:96:9","trueBody":{"id":2203,"nodeType":"Block","src":"8900:75:9","statements":[{"expression":{"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8918:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8918:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2198,"nodeType":"ExpressionStatement","src":"8918:12:9"},{"expression":{"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"8948:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8958:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8948:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2202,"nodeType":"ExpressionStatement","src":"8948:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8992:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9001:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8992:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9006:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8992:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2219,"nodeType":"IfStatement","src":"8988:96:9","trueBody":{"id":2218,"nodeType":"Block","src":"9009:75:9","statements":[{"expression":{"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9027:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9037:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9027:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2213,"nodeType":"ExpressionStatement","src":"9027:12:9"},{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9057:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9067:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9057:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"9057:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9101:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9110:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9101:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9115:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9101:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2234,"nodeType":"IfStatement","src":"9097:96:9","trueBody":{"id":2233,"nodeType":"Block","src":"9118:75:9","statements":[{"expression":{"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2225,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9136:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9146:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9136:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2228,"nodeType":"ExpressionStatement","src":"9136:12:9"},{"expression":{"id":2231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2229,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9166:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9176:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9166:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2232,"nodeType":"ExpressionStatement","src":"9166:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2235,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9210:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9219:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9210:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9223:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9210:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2249,"nodeType":"IfStatement","src":"9206:93:9","trueBody":{"id":2248,"nodeType":"Block","src":"9226:73:9","statements":[{"expression":{"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2240,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9244:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9254:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9244:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2243,"nodeType":"ExpressionStatement","src":"9244:11:9"},{"expression":{"id":2246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2244,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9273:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9283:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9273:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2247,"nodeType":"ExpressionStatement","src":"9273:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9316:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9325:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9316:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9329:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9316:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2264,"nodeType":"IfStatement","src":"9312:93:9","trueBody":{"id":2263,"nodeType":"Block","src":"9332:73:9","statements":[{"expression":{"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9350:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9360:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9350:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2258,"nodeType":"ExpressionStatement","src":"9350:11:9"},{"expression":{"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2259,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9379:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9389:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9379:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2262,"nodeType":"ExpressionStatement","src":"9379:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2265,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9422:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9431:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9422:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9435:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9422:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"9418:93:9","trueBody":{"id":2278,"nodeType":"Block","src":"9438:73:9","statements":[{"expression":{"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9456:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":2271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9466:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9456:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2273,"nodeType":"ExpressionStatement","src":"9456:11:9"},{"expression":{"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2274,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9485:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9495:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9485:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2277,"nodeType":"ExpressionStatement","src":"9485:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9528:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9537:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9528:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9541:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9528:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2290,"nodeType":"IfStatement","src":"9524:64:9","trueBody":{"id":2289,"nodeType":"Block","src":"9544:44:9","statements":[{"expression":{"id":2287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2285,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9562:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9572:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9562:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2288,"nodeType":"ExpressionStatement","src":"9562:11:9"}]}}]},{"expression":{"id":2292,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9614:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2170,"id":2293,"nodeType":"Return","src":"9607:13:9"}]},"documentation":{"id":2164,"nodeType":"StructuredDocumentation","src":"8526:113:9","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8653:4:9","nodeType":"FunctionDefinition","parameters":{"id":2167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2166,"mutability":"mutable","name":"value","nameLocation":"8666:5:9","nodeType":"VariableDeclaration","scope":2295,"src":"8658:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2165,"name":"uint256","nodeType":"ElementaryTypeName","src":"8658:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8657:15:9"},"returnParameters":{"id":2170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2295,"src":"8696:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2168,"name":"uint256","nodeType":"ElementaryTypeName","src":"8696:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8695:9:9"},"scope":2623,"src":"8644:983:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2330,"nodeType":"Block","src":"9860:165:9","statements":[{"id":2329,"nodeType":"UncheckedBlock","src":"9870:149:9","statements":[{"assignments":[2307],"declarations":[{"constant":false,"id":2307,"mutability":"mutable","name":"result","nameLocation":"9902:6:9","nodeType":"VariableDeclaration","scope":2329,"src":"9894:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"9894:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2311,"initialValue":{"arguments":[{"id":2309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9916:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2308,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2295,2331],"referencedDeclaration":2295,"src":"9911:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9911:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9894:28:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2312,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"9943:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2313,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"9953:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2314,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"9965:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9974:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"9965:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"9953:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9980:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2318,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"9985:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9994:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9953:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10006:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9953:54:9","trueExpression":{"hexValue":"31","id":2323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10002:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2326,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9952:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9943:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2305,"id":2328,"nodeType":"Return","src":"9936:72:9"}]}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"9633:142:9","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2331,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9789:4:9","nodeType":"FunctionDefinition","parameters":{"id":2302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"value","nameLocation":"9802:5:9","nodeType":"VariableDeclaration","scope":2331,"src":"9794:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2297,"name":"uint256","nodeType":"ElementaryTypeName","src":"9794:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2301,"mutability":"mutable","name":"rounding","nameLocation":"9818:8:9","nodeType":"VariableDeclaration","scope":2331,"src":"9809:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2300,"nodeType":"UserDefinedTypeName","pathNode":{"id":2299,"name":"Rounding","nameLocations":["9809:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"9809:8:9"},"referencedDeclaration":1764,"src":"9809:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"9793:34:9"},"returnParameters":{"id":2305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2331,"src":"9851:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2303,"name":"uint256","nodeType":"ElementaryTypeName","src":"9851:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9850:9:9"},"scope":2623,"src":"9780:245:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2459,"nodeType":"Block","src":"10212:854:9","statements":[{"assignments":[2340],"declarations":[{"constant":false,"id":2340,"mutability":"mutable","name":"result","nameLocation":"10230:6:9","nodeType":"VariableDeclaration","scope":2459,"src":"10222:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2339,"name":"uint256","nodeType":"ElementaryTypeName","src":"10222:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2342,"initialValue":{"hexValue":"30","id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10239:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10222:18:9"},{"id":2456,"nodeType":"UncheckedBlock","src":"10250:787:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10278:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10287:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10293:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10287:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10278:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2359,"nodeType":"IfStatement","src":"10274:103:9","trueBody":{"id":2358,"nodeType":"Block","src":"10297:80:9","statements":[{"expression":{"id":2352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10315:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10324:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10330:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10324:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10315:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2353,"nodeType":"ExpressionStatement","src":"10315:17:9"},{"expression":{"id":2356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2354,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10350:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10360:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10350:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2357,"nodeType":"ExpressionStatement","src":"10350:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2360,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10394:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10403:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10409:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10403:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10394:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2376,"nodeType":"IfStatement","src":"10390:103:9","trueBody":{"id":2375,"nodeType":"Block","src":"10413:80:9","statements":[{"expression":{"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2365,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10431:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10440:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10446:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10440:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10431:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2370,"nodeType":"ExpressionStatement","src":"10431:17:9"},{"expression":{"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2371,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10466:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10476:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10466:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2374,"nodeType":"ExpressionStatement","src":"10466:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10510:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10519:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10525:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10519:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10510:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2393,"nodeType":"IfStatement","src":"10506:103:9","trueBody":{"id":2392,"nodeType":"Block","src":"10529:80:9","statements":[{"expression":{"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2382,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10547:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10556:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10562:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10556:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10547:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2387,"nodeType":"ExpressionStatement","src":"10547:17:9"},{"expression":{"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2388,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10582:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10592:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10582:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2391,"nodeType":"ExpressionStatement","src":"10582:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10626:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10635:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10641:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10635:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10626:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2410,"nodeType":"IfStatement","src":"10622:100:9","trueBody":{"id":2409,"nodeType":"Block","src":"10644:78:9","statements":[{"expression":{"id":2403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10662:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10671:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10677:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10671:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10662:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2404,"nodeType":"ExpressionStatement","src":"10662:16:9"},{"expression":{"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2405,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10696:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10706:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10696:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2408,"nodeType":"ExpressionStatement","src":"10696:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10739:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10754:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10748:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10739:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2427,"nodeType":"IfStatement","src":"10735:100:9","trueBody":{"id":2426,"nodeType":"Block","src":"10757:78:9","statements":[{"expression":{"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10775:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10784:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10790:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10784:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10775:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2421,"nodeType":"ExpressionStatement","src":"10775:16:9"},{"expression":{"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2422,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10809:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10819:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10809:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2425,"nodeType":"ExpressionStatement","src":"10809:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10852:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10861:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10867:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10861:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10852:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2444,"nodeType":"IfStatement","src":"10848:100:9","trueBody":{"id":2443,"nodeType":"Block","src":"10870:78:9","statements":[{"expression":{"id":2437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2433,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10888:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10897:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10897:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10888:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2438,"nodeType":"ExpressionStatement","src":"10888:16:9"},{"expression":{"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2439,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10922:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10932:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10922:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2442,"nodeType":"ExpressionStatement","src":"10922:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10965:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10974:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10980:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10974:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10965:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2455,"nodeType":"IfStatement","src":"10961:66:9","trueBody":{"id":2454,"nodeType":"Block","src":"10983:44:9","statements":[{"expression":{"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2450,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"11001:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11011:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11001:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2453,"nodeType":"ExpressionStatement","src":"11001:11:9"}]}}]},{"expression":{"id":2457,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"11053:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2338,"id":2458,"nodeType":"Return","src":"11046:13:9"}]},"documentation":{"id":2332,"nodeType":"StructuredDocumentation","src":"10031:114:9","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2460,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10159:5:9","nodeType":"FunctionDefinition","parameters":{"id":2335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2334,"mutability":"mutable","name":"value","nameLocation":"10173:5:9","nodeType":"VariableDeclaration","scope":2460,"src":"10165:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2333,"name":"uint256","nodeType":"ElementaryTypeName","src":"10165:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10164:15:9"},"returnParameters":{"id":2338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2460,"src":"10203:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2336,"name":"uint256","nodeType":"ElementaryTypeName","src":"10203:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10202:9:9"},"scope":2623,"src":"10150:916:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2495,"nodeType":"Block","src":"11301:167:9","statements":[{"id":2494,"nodeType":"UncheckedBlock","src":"11311:151:9","statements":[{"assignments":[2472],"declarations":[{"constant":false,"id":2472,"mutability":"mutable","name":"result","nameLocation":"11343:6:9","nodeType":"VariableDeclaration","scope":2494,"src":"11335:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11335:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2476,"initialValue":{"arguments":[{"id":2474,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"11358:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2473,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2460,2496],"referencedDeclaration":2460,"src":"11352:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11352:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11335:29:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2477,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"11385:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2478,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"11395:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2479,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"11407:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11416:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"11407:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"11395:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11422:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2483,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"11428:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2485,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"11437:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11395:47:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11449:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11395:55:9","trueExpression":{"hexValue":"31","id":2488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11445:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2491,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11394:57:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11385:66:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2470,"id":2493,"nodeType":"Return","src":"11378:73:9"}]}]},"documentation":{"id":2461,"nodeType":"StructuredDocumentation","src":"11072:143:9","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2496,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11229:5:9","nodeType":"FunctionDefinition","parameters":{"id":2467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2463,"mutability":"mutable","name":"value","nameLocation":"11243:5:9","nodeType":"VariableDeclaration","scope":2496,"src":"11235:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2462,"name":"uint256","nodeType":"ElementaryTypeName","src":"11235:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2466,"mutability":"mutable","name":"rounding","nameLocation":"11259:8:9","nodeType":"VariableDeclaration","scope":2496,"src":"11250:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2465,"nodeType":"UserDefinedTypeName","pathNode":{"id":2464,"name":"Rounding","nameLocations":["11250:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"11250:8:9"},"referencedDeclaration":1764,"src":"11250:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"11234:34:9"},"returnParameters":{"id":2470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2496,"src":"11292:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2468,"name":"uint256","nodeType":"ElementaryTypeName","src":"11292:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11291:9:9"},"scope":2623,"src":"11220:248:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2582,"nodeType":"Block","src":"11782:600:9","statements":[{"assignments":[2505],"declarations":[{"constant":false,"id":2505,"mutability":"mutable","name":"result","nameLocation":"11800:6:9","nodeType":"VariableDeclaration","scope":2582,"src":"11792:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2504,"name":"uint256","nodeType":"ElementaryTypeName","src":"11792:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2507,"initialValue":{"hexValue":"30","id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11809:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11792:18:9"},{"id":2579,"nodeType":"UncheckedBlock","src":"11820:533:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11848:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11857:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11848:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11863:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11848:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2522,"nodeType":"IfStatement","src":"11844:98:9","trueBody":{"id":2521,"nodeType":"Block","src":"11866:76:9","statements":[{"expression":{"id":2515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11884:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11894:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11884:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2516,"nodeType":"ExpressionStatement","src":"11884:13:9"},{"expression":{"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2517,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"11915:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11925:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11915:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2520,"nodeType":"ExpressionStatement","src":"11915:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11959:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11959:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11973:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11959:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2537,"nodeType":"IfStatement","src":"11955:95:9","trueBody":{"id":2536,"nodeType":"Block","src":"11976:74:9","statements":[{"expression":{"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2528,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11994:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12004:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11994:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2531,"nodeType":"ExpressionStatement","src":"11994:12:9"},{"expression":{"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2532,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12024:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12034:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12024:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2535,"nodeType":"ExpressionStatement","src":"12024:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2538,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12067:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12076:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12067:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12081:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12067:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2552,"nodeType":"IfStatement","src":"12063:95:9","trueBody":{"id":2551,"nodeType":"Block","src":"12084:74:9","statements":[{"expression":{"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2543,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12102:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12112:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12102:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2546,"nodeType":"ExpressionStatement","src":"12102:12:9"},{"expression":{"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2547,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12132:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12142:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12132:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2550,"nodeType":"ExpressionStatement","src":"12132:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12175:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12184:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12175:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12189:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12175:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2567,"nodeType":"IfStatement","src":"12171:95:9","trueBody":{"id":2566,"nodeType":"Block","src":"12192:74:9","statements":[{"expression":{"id":2560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12210:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12220:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12210:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2561,"nodeType":"ExpressionStatement","src":"12210:12:9"},{"expression":{"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2562,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12240:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12250:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12240:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2565,"nodeType":"ExpressionStatement","src":"12240:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12283:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12292:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12283:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12283:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2578,"nodeType":"IfStatement","src":"12279:64:9","trueBody":{"id":2577,"nodeType":"Block","src":"12299:44:9","statements":[{"expression":{"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2573,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12317:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12327:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12317:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2576,"nodeType":"ExpressionStatement","src":"12317:11:9"}]}}]},{"expression":{"id":2580,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12369:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2503,"id":2581,"nodeType":"Return","src":"12362:13:9"}]},"documentation":{"id":2497,"nodeType":"StructuredDocumentation","src":"11474:240:9","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":2583,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11728:6:9","nodeType":"FunctionDefinition","parameters":{"id":2500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2499,"mutability":"mutable","name":"value","nameLocation":"11743:5:9","nodeType":"VariableDeclaration","scope":2583,"src":"11735:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2498,"name":"uint256","nodeType":"ElementaryTypeName","src":"11735:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11734:15:9"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2583,"src":"11773:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2501,"name":"uint256","nodeType":"ElementaryTypeName","src":"11773:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11772:9:9"},"scope":2623,"src":"11719:663:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2621,"nodeType":"Block","src":"12619:174:9","statements":[{"id":2620,"nodeType":"UncheckedBlock","src":"12629:158:9","statements":[{"assignments":[2595],"declarations":[{"constant":false,"id":2595,"mutability":"mutable","name":"result","nameLocation":"12661:6:9","nodeType":"VariableDeclaration","scope":2620,"src":"12653:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2594,"name":"uint256","nodeType":"ElementaryTypeName","src":"12653:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2599,"initialValue":{"arguments":[{"id":2597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"12677:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2596,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[2583,2622],"referencedDeclaration":2583,"src":"12670:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12670:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12653:30:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2600,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"12704:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2601,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"12714:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2602,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"12726:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12735:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"12726:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"12714:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2606,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"12747:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12757:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12747:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2609,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12746:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"12762:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12714:53:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12774:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12714:61:9","trueExpression":{"hexValue":"31","id":2614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2617,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12713:63:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12704:72:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2593,"id":2619,"nodeType":"Return","src":"12697:79:9"}]}]},"documentation":{"id":2584,"nodeType":"StructuredDocumentation","src":"12388:144:9","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2622,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12546:6:9","nodeType":"FunctionDefinition","parameters":{"id":2590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2586,"mutability":"mutable","name":"value","nameLocation":"12561:5:9","nodeType":"VariableDeclaration","scope":2622,"src":"12553:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2585,"name":"uint256","nodeType":"ElementaryTypeName","src":"12553:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2589,"mutability":"mutable","name":"rounding","nameLocation":"12577:8:9","nodeType":"VariableDeclaration","scope":2622,"src":"12568:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2588,"nodeType":"UserDefinedTypeName","pathNode":{"id":2587,"name":"Rounding","nameLocations":["12568:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"12568:8:9"},"referencedDeclaration":1764,"src":"12568:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"12552:34:9"},"returnParameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2622,"src":"12610:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"12610:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12609:9:9"},"scope":2623,"src":"12537:256:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2624,"src":"202:12593:9","usedErrors":[]}],"src":"103:12693:9"},"id":9},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol","exportedSymbols":{"SignedMathUpgradeable":[2728]},"id":2729,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2625,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2626,"nodeType":"StructuredDocumentation","src":"134:80:10","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2728,"linearizedBaseContracts":[2728],"name":"SignedMathUpgradeable","nameLocation":"223:21:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":2643,"nodeType":"Block","src":"386:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2636,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"403:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2637,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"407:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"403:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2640,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"415:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"403:13:10","trueExpression":{"id":2639,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"411:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2635,"id":2642,"nodeType":"Return","src":"396:20:10"}]},"documentation":{"id":2627,"nodeType":"StructuredDocumentation","src":"251:66:10","text":" @dev Returns the largest of two signed numbers."},"id":2644,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"331:3:10","nodeType":"FunctionDefinition","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2629,"mutability":"mutable","name":"a","nameLocation":"342:1:10","nodeType":"VariableDeclaration","scope":2644,"src":"335:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2628,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"b","nameLocation":"352:1:10","nodeType":"VariableDeclaration","scope":2644,"src":"345:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2630,"name":"int256","nodeType":"ElementaryTypeName","src":"345:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"334:20:10"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2644,"src":"378:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2633,"name":"int256","nodeType":"ElementaryTypeName","src":"378:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"377:8:10"},"scope":2728,"src":"322:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2661,"nodeType":"Block","src":"565:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2654,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"582:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2655,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"586:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"582:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2658,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"594:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"582:13:10","trueExpression":{"id":2657,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"590:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2653,"id":2660,"nodeType":"Return","src":"575:20:10"}]},"documentation":{"id":2645,"nodeType":"StructuredDocumentation","src":"429:67:10","text":" @dev Returns the smallest of two signed numbers."},"id":2662,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"510:3:10","nodeType":"FunctionDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2647,"mutability":"mutable","name":"a","nameLocation":"521:1:10","nodeType":"VariableDeclaration","scope":2662,"src":"514:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2646,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2649,"mutability":"mutable","name":"b","nameLocation":"531:1:10","nodeType":"VariableDeclaration","scope":2662,"src":"524:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2648,"name":"int256","nodeType":"ElementaryTypeName","src":"524:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"513:20:10"},"returnParameters":{"id":2653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2662,"src":"557:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2651,"name":"int256","nodeType":"ElementaryTypeName","src":"557:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"556:8:10"},"scope":2728,"src":"501:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2705,"nodeType":"Block","src":"807:162:10","statements":[{"assignments":[2673],"declarations":[{"constant":false,"id":2673,"mutability":"mutable","name":"x","nameLocation":"876:1:10","nodeType":"VariableDeclaration","scope":2705,"src":"869:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2672,"name":"int256","nodeType":"ElementaryTypeName","src":"869:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2686,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2674,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"881:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2675,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"885:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"892:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2679,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"896:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"892:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2681,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"891:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"902:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"891:12:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2684,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"890:14:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"880:24:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"869:35:10"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2687,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"921:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2692,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"941:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"933:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2690,"name":"uint256","nodeType":"ElementaryTypeName","src":"933:7:10","typeDescriptions":{}}},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":2694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"947:3:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"933:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"926:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2688,"name":"int256","nodeType":"ElementaryTypeName","src":"926:6:10","typeDescriptions":{}}},"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"926:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2697,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"955:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2698,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"959:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"955:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"954:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"926:35:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"925:37:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"921:41:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2671,"id":2704,"nodeType":"Return","src":"914:48:10"}]},"documentation":{"id":2663,"nodeType":"StructuredDocumentation","src":"608:126:10","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":2706,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"748:7:10","nodeType":"FunctionDefinition","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"a","nameLocation":"763:1:10","nodeType":"VariableDeclaration","scope":2706,"src":"756:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2664,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2667,"mutability":"mutable","name":"b","nameLocation":"773:1:10","nodeType":"VariableDeclaration","scope":2706,"src":"766:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2666,"name":"int256","nodeType":"ElementaryTypeName","src":"766:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"755:20:10"},"returnParameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2706,"src":"799:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2669,"name":"int256","nodeType":"ElementaryTypeName","src":"799:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"798:8:10"},"scope":2728,"src":"739:230:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2726,"nodeType":"Block","src":"1113:158:10","statements":[{"id":2725,"nodeType":"UncheckedBlock","src":"1123:142:10","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2716,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1238:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":2717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1243:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1238:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1251:2:10","subExpression":{"id":2720,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1252:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1238:15:10","trueExpression":{"id":2719,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1247:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1230:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2714,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:10","typeDescriptions":{}}},"id":2723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1230:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2713,"id":2724,"nodeType":"Return","src":"1223:31:10"}]}]},"documentation":{"id":2707,"nodeType":"StructuredDocumentation","src":"975:78:10","text":" @dev Returns the absolute unsigned value of a signed value."},"id":2727,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1067:3:10","nodeType":"FunctionDefinition","parameters":{"id":2710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2709,"mutability":"mutable","name":"n","nameLocation":"1078:1:10","nodeType":"VariableDeclaration","scope":2727,"src":"1071:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2708,"name":"int256","nodeType":"ElementaryTypeName","src":"1071:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1070:10:10"},"returnParameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2727,"src":"1104:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2711,"name":"uint256","nodeType":"ElementaryTypeName","src":"1104:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1103:9:10"},"scope":2728,"src":"1058:213:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2729,"src":"215:1058:10","usedErrors":[]}],"src":"109:1165:10"},"id":10},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[2806]},"id":2807,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2730,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2731,"nodeType":"StructuredDocumentation","src":"131:70:11","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2806,"linearizedBaseContracts":[2806],"name":"IERC20","nameLocation":"212:6:11","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2732,"nodeType":"StructuredDocumentation","src":"225:158:11","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":2740,"name":"Transfer","nameLocation":"394:8:11","nodeType":"EventDefinition","parameters":{"id":2739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2734,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:11","nodeType":"VariableDeclaration","scope":2740,"src":"403:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2733,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2736,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:11","nodeType":"VariableDeclaration","scope":2740,"src":"425:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2735,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2738,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:11","nodeType":"VariableDeclaration","scope":2740,"src":"445:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2737,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:11"},"src":"388:72:11"},{"anonymous":false,"documentation":{"id":2741,"nodeType":"StructuredDocumentation","src":"466:148:11","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":2749,"name":"Approval","nameLocation":"625:8:11","nodeType":"EventDefinition","parameters":{"id":2748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2743,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:11","nodeType":"VariableDeclaration","scope":2749,"src":"634:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2742,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2745,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:11","nodeType":"VariableDeclaration","scope":2749,"src":"657:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2744,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2747,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:11","nodeType":"VariableDeclaration","scope":2749,"src":"682:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2746,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:11"},"src":"619:78:11"},{"documentation":{"id":2750,"nodeType":"StructuredDocumentation","src":"703:66:11","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":2755,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:11","nodeType":"FunctionDefinition","parameters":{"id":2751,"nodeType":"ParameterList","parameters":[],"src":"794:2:11"},"returnParameters":{"id":2754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2755,"src":"820:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2752,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:11"},"scope":2806,"src":"774:55:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2756,"nodeType":"StructuredDocumentation","src":"835:72:11","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":2763,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:11","nodeType":"FunctionDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2758,"mutability":"mutable","name":"account","nameLocation":"939:7:11","nodeType":"VariableDeclaration","scope":2763,"src":"931:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2757,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:11"},"returnParameters":{"id":2762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2763,"src":"971:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2760,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:11"},"scope":2806,"src":"912:68:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2764,"nodeType":"StructuredDocumentation","src":"986:202:11","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2773,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:11","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2766,"mutability":"mutable","name":"to","nameLocation":"1219:2:11","nodeType":"VariableDeclaration","scope":2773,"src":"1211:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2765,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2768,"mutability":"mutable","name":"amount","nameLocation":"1231:6:11","nodeType":"VariableDeclaration","scope":2773,"src":"1223:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2767,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:11"},"returnParameters":{"id":2772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2773,"src":"1257:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2770,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:11"},"scope":2806,"src":"1193:70:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2774,"nodeType":"StructuredDocumentation","src":"1269:264:11","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":2783,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:11","nodeType":"FunctionDefinition","parameters":{"id":2779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2776,"mutability":"mutable","name":"owner","nameLocation":"1565:5:11","nodeType":"VariableDeclaration","scope":2783,"src":"1557:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2775,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2778,"mutability":"mutable","name":"spender","nameLocation":"1580:7:11","nodeType":"VariableDeclaration","scope":2783,"src":"1572:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2777,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:11"},"returnParameters":{"id":2782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2783,"src":"1612:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:11"},"scope":2806,"src":"1538:83:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2784,"nodeType":"StructuredDocumentation","src":"1627:642:11","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2793,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:11","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2786,"mutability":"mutable","name":"spender","nameLocation":"2299:7:11","nodeType":"VariableDeclaration","scope":2793,"src":"2291:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2788,"mutability":"mutable","name":"amount","nameLocation":"2316:6:11","nodeType":"VariableDeclaration","scope":2793,"src":"2308:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2787,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:11"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2793,"src":"2342:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2790,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:11"},"scope":2806,"src":"2274:74:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2794,"nodeType":"StructuredDocumentation","src":"2354:287:11","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2805,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:11","nodeType":"FunctionDefinition","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2796,"mutability":"mutable","name":"from","nameLocation":"2685:4:11","nodeType":"VariableDeclaration","scope":2805,"src":"2677:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2795,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2798,"mutability":"mutable","name":"to","nameLocation":"2707:2:11","nodeType":"VariableDeclaration","scope":2805,"src":"2699:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2797,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2800,"mutability":"mutable","name":"amount","nameLocation":"2727:6:11","nodeType":"VariableDeclaration","scope":2805,"src":"2719:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2799,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:11"},"returnParameters":{"id":2804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2805,"src":"2758:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2802,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:11"},"scope":2806,"src":"2646:118:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2807,"src":"202:2564:11","usedErrors":[]}],"src":"106:2661:11"},"id":11},"contracts/Paycrest.sol":{"ast":{"absolutePath":"contracts/Paycrest.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ECDSAUpgradeable":[1757],"IERC20":[2806],"IERC20PermitUpgradeable":[414],"IERC20Upgradeable":[378],"IPaycrest":[3947],"MathUpgradeable":[2623],"Paycrest":[3519],"PaycrestSettingManager":[3758],"SafeERC20Upgradeable":[790],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":3520,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2808,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:12"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","id":2809,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3520,"sourceUnit":1758,"src":"62:85:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","id":2810,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3520,"sourceUnit":791,"src":"148:88:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/PaycrestSettingManager.sol","file":"./PaycrestSettingManager.sol","id":2812,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3520,"sourceUnit":3759,"src":"237:68:12","symbolAliases":[{"foreign":{"id":2811,"name":"PaycrestSettingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3758,"src":"245:22:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interface/IPaycrest.sol","file":"./interface/IPaycrest.sol","id":2815,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3520,"sourceUnit":3948,"src":"306:60:12","symbolAliases":[{"foreign":{"id":2813,"name":"IPaycrest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3947,"src":"314:9:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2814,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"325:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2816,"name":"IPaycrest","nameLocations":["388:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":3947,"src":"388:9:12"},"id":2817,"nodeType":"InheritanceSpecifier","src":"388:9:12"},{"baseName":{"id":2818,"name":"PaycrestSettingManager","nameLocations":["399:22:12"],"nodeType":"IdentifierPath","referencedDeclaration":3758,"src":"399:22:12"},"id":2819,"nodeType":"InheritanceSpecifier","src":"399:22:12"}],"canonicalName":"Paycrest","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3519,"linearizedBaseContracts":[3519,3758,131,1162,300,3947],"name":"Paycrest","nameLocation":"376:8:12","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2823,"libraryName":{"id":2820,"name":"SafeERC20Upgradeable","nameLocations":["435:20:12"],"nodeType":"IdentifierPath","referencedDeclaration":790,"src":"435:20:12"},"nodeType":"UsingForDirective","src":"429:38:12","typeName":{"id":2822,"nodeType":"UserDefinedTypeName","pathNode":{"id":2821,"name":"IERC20","nameLocations":["460:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":2806,"src":"460:6:12"},"referencedDeclaration":2806,"src":"460:6:12","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}}},{"global":false,"id":2826,"libraryName":{"id":2824,"name":"ECDSAUpgradeable","nameLocations":["478:16:12"],"nodeType":"IdentifierPath","referencedDeclaration":1757,"src":"478:16:12"},"nodeType":"UsingForDirective","src":"472:35:12","typeName":{"id":2825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"499:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"canonicalName":"Paycrest.fee","id":2831,"members":[{"constant":false,"id":2828,"mutability":"mutable","name":"protocolFee","nameLocation":"541:11:12","nodeType":"VariableDeclaration","scope":2831,"src":"533:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2827,"name":"uint256","nodeType":"ElementaryTypeName","src":"533:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2830,"mutability":"mutable","name":"liquidityProviderAmount","nameLocation":"570:23:12","nodeType":"VariableDeclaration","scope":2831,"src":"562:31:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2829,"name":"uint256","nodeType":"ElementaryTypeName","src":"562:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"fee","nameLocation":"519:3:12","nodeType":"StructDefinition","scope":3519,"src":"512:88:12","visibility":"public"},{"constant":false,"id":2836,"mutability":"mutable","name":"order","nameLocation":"639:5:12","nodeType":"VariableDeclaration","scope":3519,"src":"605:39:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order)"},"typeName":{"id":2835,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2832,"name":"bytes32","nodeType":"ElementaryTypeName","src":"613:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"605:25:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2834,"nodeType":"UserDefinedTypeName","pathNode":{"id":2833,"name":"Order","nameLocations":["624:5:12"],"nodeType":"IdentifierPath","referencedDeclaration":3844,"src":"624:5:12"},"referencedDeclaration":3844,"src":"624:5:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage_ptr","typeString":"struct IPaycrest.Order"}}},"visibility":"private"},{"constant":false,"id":2840,"mutability":"mutable","name":"_nonce","nameLocation":"686:6:12","nodeType":"VariableDeclaration","scope":3519,"src":"650:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":2839,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2837,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"650:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2838,"name":"uint256","nodeType":"ElementaryTypeName","src":"669:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":2844,"mutability":"mutable","name":"__gap","nameLocation":"718:5:12","nodeType":"VariableDeclaration","scope":3519,"src":"698:25:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":2841,"name":"uint256","nodeType":"ElementaryTypeName","src":"698:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2843,"length":{"hexValue":"3530","id":2842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"706:2:12","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"698:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"},{"body":{"id":2851,"nodeType":"Block","src":"796:39:12","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2848,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"806:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"806:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2850,"nodeType":"ExpressionStatement","src":"806:22:12"}]},"documentation":{"id":2845,"nodeType":"StructuredDocumentation","src":"729:48:12","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":2852,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2846,"nodeType":"ParameterList","parameters":[],"src":"793:2:12"},"returnParameters":{"id":2847,"nodeType":"ParameterList","parameters":[],"src":"796:0:12"},"scope":3519,"src":"782:53:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2876,"nodeType":"Block","src":"897:150:12","statements":[{"expression":{"id":2863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2859,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"911:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2861,"indexExpression":{"id":2860,"name":"_usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2854,"src":"929:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"911:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"938:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"911:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2864,"nodeType":"ExpressionStatement","src":"911:31:12"},{"expression":{"id":2867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2865,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"955:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130305f303030","id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"965:7:12","typeDescriptions":{"typeIdentifier":"t_rational_100000_by_1","typeString":"int_const 100000"},"value":"100_000"},"src":"955:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2868,"nodeType":"ExpressionStatement","src":"955:17:12"},{"expression":{"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2869,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3538,"src":"983:18:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"35303030","id":2870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1004:4:12","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5000"},"src":"983:25:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2872,"nodeType":"ExpressionStatement","src":"983:25:12"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2873,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"1024:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2875,"nodeType":"ExpressionStatement","src":"1024:16:12"}]},"functionSelector":"c4d66de8","id":2877,"implemented":true,"kind":"function","modifiers":[{"id":2857,"kind":"modifierInvocation","modifierName":{"id":2856,"name":"initializer","nameLocations":["885:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":202,"src":"885:11:12"},"nodeType":"ModifierInvocation","src":"885:11:12"}],"name":"initialize","nameLocation":"850:10:12","nodeType":"FunctionDefinition","parameters":{"id":2855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2854,"mutability":"mutable","name":"_usdc","nameLocation":"869:5:12","nodeType":"VariableDeclaration","scope":2877,"src":"861:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2853,"name":"address","nodeType":"ElementaryTypeName","src":"861:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"860:15:12"},"returnParameters":{"id":2858,"nodeType":"ParameterList","parameters":[],"src":"897:0:12"},"scope":3519,"src":"841:206:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2888,"nodeType":"Block","src":"1077:87:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2880,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1095:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1099:6:12","memberName":"sender","nodeType":"MemberAccess","src":"1095:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2882,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3542,"src":"1109:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1095:32:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7941676772656761746f72","id":2884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1129:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","typeString":"literal_string \"OnlyAggregator\""},"value":"OnlyAggregator"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","typeString":"literal_string \"OnlyAggregator\""}],"id":2879,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1087:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1087:59:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2886,"nodeType":"ExpressionStatement","src":"1087:59:12"},{"id":2887,"nodeType":"PlaceholderStatement","src":"1156:1:12"}]},"id":2889,"name":"onlyAggregator","nameLocation":"1062:14:12","nodeType":"ModifierDefinition","parameters":{"id":2878,"nodeType":"ParameterList","parameters":[],"src":"1077:0:12"},"src":"1053:111:12","virtual":false,"visibility":"internal"},{"baseFunctions":[3868],"body":{"id":2996,"nodeType":"Block","src":"1739:1279:12","statements":[{"expression":{"arguments":[{"id":2914,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"1794:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2915,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"1802:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2916,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"1811:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2917,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"1827:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2918,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"1848:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2913,"name":"_handler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"1785:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,address,address,bytes32) view"}},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1785:80:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2920,"nodeType":"ExpressionStatement","src":"1785:80:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2922,"name":"_senderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"1944:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2923,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"1959:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2924,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3538,"src":"1969:18:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1959:28:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2926,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1958:30:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2927,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"1991:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1958:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1944:54:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53656e646572466565546f6f48696768","id":2930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2000:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","typeString":"literal_string \"SenderFeeTooHigh\""},"value":"SenderFeeTooHigh"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","typeString":"literal_string \"SenderFeeTooHigh\""}],"id":2921,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1936:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1936:83:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2932,"nodeType":"ExpressionStatement","src":"1936:83:12"},{"expression":{"arguments":[{"expression":{"id":2937,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2105:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2109:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2105:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2941,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2125:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_Paycrest_$3519","typeString":"contract Paycrest"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Paycrest_$3519","typeString":"contract Paycrest"}],"id":2940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2117:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2939,"name":"address","nodeType":"ElementaryTypeName","src":"2117:7:12","typeDescriptions":{}}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2117:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2943,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"2132:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2934,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"2084:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2933,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"2077:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2077:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2092:12:12","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2805,"src":"2077:27:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2077:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2945,"nodeType":"ExpressionStatement","src":"2077:63:12"},{"expression":{"id":2950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2206:21:12","subExpression":{"baseExpression":{"id":2946,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2840,"src":"2206:6:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2949,"indexExpression":{"expression":{"id":2947,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2213:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2217:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2213:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2206:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2951,"nodeType":"ExpressionStatement","src":"2206:21:12"},{"expression":{"id":2964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2952,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"2433:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":2956,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2464:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2468:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2464:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":2958,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2840,"src":"2476:6:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2961,"indexExpression":{"expression":{"id":2959,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2483:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2487:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2483:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2476:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2954,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2453:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2457:6:12","memberName":"encode","nodeType":"MemberAccess","src":"2453:10:12","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2453:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2953,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2443:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2443:53:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2433:63:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2965,"nodeType":"ExpressionStatement","src":"2433:63:12"},{"expression":{"id":2984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2966,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"2536:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":2968,"indexExpression":{"id":2967,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"2542:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2536:14:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2970,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2581:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2585:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2581:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2972,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"2612:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2973,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"2652:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2974,"name":"_senderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"2696:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2975,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2726:5:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"66616c7365","id":2976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2758:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":2977,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2792:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2980,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"2839:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2832:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":2978,"name":"uint64","nodeType":"ElementaryTypeName","src":"2832:6:12","typeDescriptions":{}}},"id":2981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":2982,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"2869:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2969,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"2553:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Order_$3844_storage_ptr_$","typeString":"type(struct IPaycrest.Order storage pointer)"}},"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["2573:6:12","2605:5:12","2632:18:12","2685:9:12","2720:4:12","2745:11:12","2777:13:12","2820:10:12","2861:6:12"],"names":["seller","token","senderFeeRecipient","senderFee","rate","isFulfilled","refundAddress","currentBPS","amount"],"nodeType":"FunctionCall","src":"2553:334:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_memory_ptr","typeString":"struct IPaycrest.Order memory"}},"src":"2536:351:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":2985,"nodeType":"ExpressionStatement","src":"2536:351:12"},{"eventCall":{"arguments":[{"id":2987,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"2940:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2988,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"2948:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2989,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"2957:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2990,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2966:5:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2991,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"2973:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2992,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"2991:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2993,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"2999:11:12","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":2986,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3780,"src":"2932:7:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes32,uint256,bytes32,bytes32,string memory)"}},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2932:79:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2995,"nodeType":"EmitStatement","src":"2927:84:12"}]},"documentation":{"id":2890,"nodeType":"StructuredDocumentation","src":"1365:40:12","text":"@dev See {createOrder-IPaycrest}. "},"functionSelector":"2654ec7e","id":2997,"implemented":true,"kind":"function","modifiers":[],"name":"createOrder","nameLocation":"1419:11:12","nodeType":"FunctionDefinition","parameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2892,"mutability":"mutable","name":"_token","nameLocation":"1448:6:12","nodeType":"VariableDeclaration","scope":2997,"src":"1440:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2891,"name":"address","nodeType":"ElementaryTypeName","src":"1440:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2894,"mutability":"mutable","name":"_amount","nameLocation":"1473:7:12","nodeType":"VariableDeclaration","scope":2997,"src":"1465:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2893,"name":"uint256","nodeType":"ElementaryTypeName","src":"1465:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2896,"mutability":"mutable","name":"_institutionCode","nameLocation":"1499:16:12","nodeType":"VariableDeclaration","scope":2997,"src":"1491:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2895,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1491:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2898,"mutability":"mutable","name":"_label","nameLocation":"1533:6:12","nodeType":"VariableDeclaration","scope":2997,"src":"1525:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2897,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1525:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2900,"mutability":"mutable","name":"_rate","nameLocation":"1556:5:12","nodeType":"VariableDeclaration","scope":2997,"src":"1549:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2899,"name":"uint96","nodeType":"ElementaryTypeName","src":"1549:6:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2902,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"1580:19:12","nodeType":"VariableDeclaration","scope":2997,"src":"1572:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2901,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2904,"mutability":"mutable","name":"_senderFee","nameLocation":"1617:10:12","nodeType":"VariableDeclaration","scope":2997,"src":"1609:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2903,"name":"uint256","nodeType":"ElementaryTypeName","src":"1609:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2906,"mutability":"mutable","name":"_refundAddress","nameLocation":"1645:14:12","nodeType":"VariableDeclaration","scope":2997,"src":"1637:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2905,"name":"address","nodeType":"ElementaryTypeName","src":"1637:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"messageHash","nameLocation":"1686:11:12","nodeType":"VariableDeclaration","scope":2997,"src":"1670:27:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":2907,"name":"string","nodeType":"ElementaryTypeName","src":"1670:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1430:273:12"},"returnParameters":{"id":2912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2911,"mutability":"mutable","name":"orderId","nameLocation":"1730:7:12","nodeType":"VariableDeclaration","scope":2997,"src":"1722:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1722:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1721:17:12"},"scope":3519,"src":"1410:1608:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3057,"nodeType":"Block","src":"3168:415:12","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3011,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"3235:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3013,"indexExpression":{"id":3012,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"3253:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3235:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e4e6f74537570706f72746564","id":3014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3262:19:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","typeString":"literal_string \"TokenNotSupported\""},"value":"TokenNotSupported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","typeString":"literal_string \"TokenNotSupported\""}],"id":3010,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3227:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3227:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3016,"nodeType":"ExpressionStatement","src":"3227:55:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3018,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3001,"src":"3300:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3310:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3300:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e7449735a65726f","id":3021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3313:14:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","typeString":"literal_string \"AmountIsZero\""},"value":"AmountIsZero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","typeString":"literal_string \"AmountIsZero\""}],"id":3017,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3292:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3292:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3023,"nodeType":"ExpressionStatement","src":"3292:36:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3025,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"3346:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3372:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3364:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3026,"name":"address","nodeType":"ElementaryTypeName","src":"3364:7:12","typeDescriptions":{}}},"id":3029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3364:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3346:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5468726f775a65726f41646472657373","id":3031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3376:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""},"value":"ThrowZeroAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""}],"id":3024,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3338:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3033,"nodeType":"ExpressionStatement","src":"3338:57:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3035,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3005,"src":"3413:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3444:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3436:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3036,"name":"address","nodeType":"ElementaryTypeName","src":"3436:7:12","typeDescriptions":{}}},"id":3039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3436:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3413:33:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5468726f775a65726f41646472657373","id":3041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3448:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""},"value":"ThrowZeroAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""}],"id":3034,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3405:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3405:62:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3043,"nodeType":"ExpressionStatement","src":"3405:62:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3045,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3567,"src":"3485:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3534_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3047,"indexExpression":{"id":3046,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"3513:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3485:45:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3534_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"id":3048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3531:4:12","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":3531,"src":"3485:50:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3547:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3539:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3539:7:12","typeDescriptions":{}}},"id":3052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3539:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3485:64:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964496e737469747574696f6e436f6465","id":3054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3551:24:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","typeString":"literal_string \"InvalidInstitutionCode\""},"value":"InvalidInstitutionCode"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","typeString":"literal_string \"InvalidInstitutionCode\""}],"id":3044,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3477:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3477:99:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3056,"nodeType":"ExpressionStatement","src":"3477:99:12"}]},"id":3058,"implemented":true,"kind":"function","modifiers":[],"name":"_handler","nameLocation":"3033:8:12","nodeType":"FunctionDefinition","parameters":{"id":3008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2999,"mutability":"mutable","name":"_token","nameLocation":"3050:6:12","nodeType":"VariableDeclaration","scope":3058,"src":"3042:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2998,"name":"address","nodeType":"ElementaryTypeName","src":"3042:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3001,"mutability":"mutable","name":"_amount","nameLocation":"3066:7:12","nodeType":"VariableDeclaration","scope":3058,"src":"3058:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3000,"name":"uint256","nodeType":"ElementaryTypeName","src":"3058:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3003,"mutability":"mutable","name":"_refundAddress","nameLocation":"3083:14:12","nodeType":"VariableDeclaration","scope":3058,"src":"3075:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3002,"name":"address","nodeType":"ElementaryTypeName","src":"3075:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3005,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"3107:19:12","nodeType":"VariableDeclaration","scope":3058,"src":"3099:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3004,"name":"address","nodeType":"ElementaryTypeName","src":"3099:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3007,"mutability":"mutable","name":"_institutionCode","nameLocation":"3136:16:12","nodeType":"VariableDeclaration","scope":3058,"src":"3128:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3128:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3041:112:12"},"returnParameters":{"id":3009,"nodeType":"ParameterList","parameters":[],"src":"3168:0:12"},"scope":3519,"src":"3024:559:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[3891],"body":{"id":3178,"nodeType":"Block","src":"4125:1318:12","statements":[{"expression":{"arguments":[{"id":3088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4200:28:12","subExpression":{"expression":{"baseExpression":{"id":3084,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4201:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3086,"indexExpression":{"id":3085,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4207:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4201:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4217:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3837,"src":"4201:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7264657246756c66696c6c6564","id":3089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4230:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""},"value":"OrderFulfilled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""}],"id":3083,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4192:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4192:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3091,"nodeType":"ExpressionStatement","src":"4192:55:12"},{"assignments":[3093],"declarations":[{"constant":false,"id":3093,"mutability":"mutable","name":"token","nameLocation":"4303:5:12","nodeType":"VariableDeclaration","scope":3178,"src":"4295:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3092,"name":"address","nodeType":"ElementaryTypeName","src":"4295:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3098,"initialValue":{"expression":{"baseExpression":{"id":3094,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4311:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3096,"indexExpression":{"id":3095,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4317:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4311:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3097,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4327:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3829,"src":"4311:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4295:37:12"},{"expression":{"id":3104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3099,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4411:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3101,"indexExpression":{"id":3100,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4417:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4411:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4427:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3841,"src":"4411:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3103,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"4441:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4411:44:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":3105,"nodeType":"ExpressionStatement","src":"4411:44:12"},{"assignments":[3108],"declarations":[{"constant":false,"id":3108,"mutability":"mutable","name":"_feeParams","nameLocation":"4608:10:12","nodeType":"VariableDeclaration","scope":3178,"src":"4597:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee"},"typeName":{"id":3107,"nodeType":"UserDefinedTypeName","pathNode":{"id":3106,"name":"fee","nameLocations":["4597:3:12"],"nodeType":"IdentifierPath","referencedDeclaration":2831,"src":"4597:3:12"},"referencedDeclaration":2831,"src":"4597:3:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_storage_ptr","typeString":"struct Paycrest.fee"}},"visibility":"internal"}],"id":3114,"initialValue":{"arguments":[{"id":3110,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4639:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3111,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"4649:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3112,"name":"_isPartner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3074,"src":"4665:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3109,"name":"_calculateFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"4624:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint96_$_t_bool_$returns$_t_struct$_fee_$2831_memory_ptr_$","typeString":"function (bytes32,uint96,bool) view returns (struct Paycrest.fee memory)"}},"id":3113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4624:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"nodeType":"VariableDeclarationStatement","src":"4595:81:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":3120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3115,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4689:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3117,"indexExpression":{"id":3116,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4695:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4689:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3118,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4705:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3841,"src":"4689:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4689:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3141,"nodeType":"IfStatement","src":"4686:296:12","trueBody":{"id":3140,"nodeType":"Block","src":"4722:260:12","statements":[{"expression":{"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3121,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4790:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3123,"indexExpression":{"id":3122,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4796:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4790:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3124,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4806:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3837,"src":"4790:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4820:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4790:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3127,"nodeType":"ExpressionStatement","src":"4790:34:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3128,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4842:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3130,"indexExpression":{"id":3129,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4848:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4842:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4858:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3833,"src":"4842:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4870:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4842:29:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3139,"nodeType":"IfStatement","src":"4838:134:12","trueBody":{"id":3138,"nodeType":"Block","src":"4873:99:12","statements":[{"expression":{"arguments":[{"id":3135,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4948:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3134,"name":"transferSenderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"4930:17:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":3136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4930:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3137,"nodeType":"ExpressionStatement","src":"4930:27:12"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3142,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"5004:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5015:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"5004:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5029:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5004:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3156,"nodeType":"IfStatement","src":"5000:154:12","trueBody":{"id":3155,"nodeType":"Block","src":"5032:122:12","statements":[{"expression":{"arguments":[{"id":3150,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3540,"src":"5106:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3151,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"5120:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5131:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"5120:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3147,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"5090:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3146,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5083:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5083:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5097:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5083:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5083:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3154,"nodeType":"ExpressionStatement","src":"5083:60:12"}]}},{"expression":{"arguments":[{"id":3161,"name":"_liquidityProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"5232:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3162,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"5252:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5263:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"5252:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3158,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"5216:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3157,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5209:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5209:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5223:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5209:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5209:78:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3165,"nodeType":"ExpressionStatement","src":"5209:78:12"},{"eventCall":{"arguments":[{"id":3167,"name":"_splitOrderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3061,"src":"5333:13:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3168,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"5348:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3169,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"5358:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3170,"name":"_liquidityProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"5367:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3171,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"5387:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3166,"name":"Settled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"5325:7:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint96_$returns$__$","typeString":"function (bytes32,bytes32,bytes32,address,uint96)"}},"id":3172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5325:77:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3173,"nodeType":"EmitStatement","src":"5320:82:12"},{"expression":{"components":[{"id":3174,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"5420:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3175,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"5430:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3176,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5419:17:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$","typeString":"tuple(bytes32,address)"}},"functionReturnParameters":3082,"id":3177,"nodeType":"Return","src":"5412:24:12"}]},"documentation":{"id":3059,"nodeType":"StructuredDocumentation","src":"3790:35:12","text":"@dev See {settle-IPaycrest}. "},"functionSelector":"137764fb","id":3179,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":3077,"kind":"modifierInvocation","modifierName":{"id":3076,"name":"onlyAggregator","nameLocations":["4082:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":2889,"src":"4082:14:12"},"nodeType":"ModifierInvocation","src":"4082:16:12"}],"name":"settle","nameLocation":"3839:6:12","nodeType":"FunctionDefinition","parameters":{"id":3075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3061,"mutability":"mutable","name":"_splitOrderId","nameLocation":"3863:13:12","nodeType":"VariableDeclaration","scope":3179,"src":"3855:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3060,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3855:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3063,"mutability":"mutable","name":"_orderId","nameLocation":"3894:8:12","nodeType":"VariableDeclaration","scope":3179,"src":"3886:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3886:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3065,"mutability":"mutable","name":"_label","nameLocation":"3921:6:12","nodeType":"VariableDeclaration","scope":3179,"src":"3913:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3064,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3913:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3068,"mutability":"mutable","name":"_validators","nameLocation":"3956:11:12","nodeType":"VariableDeclaration","scope":3179,"src":"3937:30:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3066,"name":"address","nodeType":"ElementaryTypeName","src":"3937:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3067,"nodeType":"ArrayTypeName","src":"3937:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3070,"mutability":"mutable","name":"_liquidityProvider","nameLocation":"3986:18:12","nodeType":"VariableDeclaration","scope":3179,"src":"3978:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3069,"name":"address","nodeType":"ElementaryTypeName","src":"3978:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3072,"mutability":"mutable","name":"_settlePercent","nameLocation":"4022:14:12","nodeType":"VariableDeclaration","scope":3179,"src":"4015:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3071,"name":"uint64","nodeType":"ElementaryTypeName","src":"4015:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3074,"mutability":"mutable","name":"_isPartner","nameLocation":"4051:10:12","nodeType":"VariableDeclaration","scope":3179,"src":"4046:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3073,"name":"bool","nodeType":"ElementaryTypeName","src":"4046:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3845:226:12"},"returnParameters":{"id":3082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3079,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3179,"src":"4107:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3078,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4107:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3179,"src":"4116:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3080,"name":"address","nodeType":"ElementaryTypeName","src":"4116:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4106:18:12"},"scope":3519,"src":"3830:1613:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3214,"nodeType":"Block","src":"5503:289:12","statements":[{"assignments":[3185],"declarations":[{"constant":false,"id":3185,"mutability":"mutable","name":"recipient","nameLocation":"5521:9:12","nodeType":"VariableDeclaration","scope":3214,"src":"5513:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3184,"name":"address","nodeType":"ElementaryTypeName","src":"5513:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3190,"initialValue":{"expression":{"baseExpression":{"id":3186,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"5533:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3188,"indexExpression":{"id":3187,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"5539:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5533:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5549:18:12","memberName":"senderFeeRecipient","nodeType":"MemberAccess","referencedDeclaration":3831,"src":"5533:34:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5513:54:12"},{"assignments":[3192],"declarations":[{"constant":false,"id":3192,"mutability":"mutable","name":"_fee","nameLocation":"5585:4:12","nodeType":"VariableDeclaration","scope":3214,"src":"5577:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3191,"name":"uint256","nodeType":"ElementaryTypeName","src":"5577:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3197,"initialValue":{"expression":{"baseExpression":{"id":3193,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"5592:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3195,"indexExpression":{"id":3194,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"5598:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5592:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5608:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3833,"src":"5592:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5577:40:12"},{"expression":{"arguments":[{"id":3205,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"5697:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3206,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"5708:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":3199,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"5665:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3201,"indexExpression":{"id":3200,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"5671:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5665:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5681:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3829,"src":"5665:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3198,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5658:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5658:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5688:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5658:38:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5658:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3208,"nodeType":"ExpressionStatement","src":"5658:55:12"},{"eventCall":{"arguments":[{"id":3210,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"5769:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3211,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"5780:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3209,"name":"TransferSenderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"5751:17:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5751:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3213,"nodeType":"EmitStatement","src":"5746:39:12"}]},"id":3215,"implemented":true,"kind":"function","modifiers":[],"name":"transferSenderFee","nameLocation":"5458:17:12","nodeType":"FunctionDefinition","parameters":{"id":3182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3181,"mutability":"mutable","name":"_orderId","nameLocation":"5484:8:12","nodeType":"VariableDeclaration","scope":3215,"src":"5476:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3180,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5476:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5475:18:12"},"returnParameters":{"id":3183,"nodeType":"ParameterList","parameters":[],"src":"5503:0:12"},"scope":3519,"src":"5449:343:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3901],"body":{"id":3274,"nodeType":"Block","src":"5929:455:12","statements":[{"expression":{"arguments":[{"id":3232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6004:28:12","subExpression":{"expression":{"baseExpression":{"id":3228,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6005:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3230,"indexExpression":{"id":3229,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"6011:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6005:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6021:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3837,"src":"6005:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7264657246756c66696c6c6564","id":3233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6034:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""},"value":"OrderFulfilled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""}],"id":3227,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5996:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5996:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3235,"nodeType":"ExpressionStatement","src":"5996:55:12"},{"expression":{"id":3241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3236,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6091:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3238,"indexExpression":{"id":3237,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"6097:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6091:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6107:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3837,"src":"6091:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6121:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6091:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3242,"nodeType":"ExpressionStatement","src":"6091:34:12"},{"expression":{"id":3248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3243,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6135:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3245,"indexExpression":{"id":3244,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"6141:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6135:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3246,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6151:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3841,"src":"6135:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6164:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6135:30:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":3249,"nodeType":"ExpressionStatement","src":"6135:30:12"},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":3257,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6245:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3259,"indexExpression":{"id":3258,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"6251:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6245:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6261:13:12","memberName":"refundAddress","nodeType":"MemberAccess","referencedDeclaration":3839,"src":"6245:29:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":3261,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6276:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3263,"indexExpression":{"id":3262,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"6282:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6276:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6292:6:12","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3843,"src":"6276:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":3251,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6213:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3253,"indexExpression":{"id":3252,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"6219:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6213:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6229:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3829,"src":"6213:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3250,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"6206:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6206:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6236:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"6206:38:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6206:93:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3266,"nodeType":"ExpressionStatement","src":"6206:93:12"},{"eventCall":{"arguments":[{"id":3268,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"6339:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3269,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3220,"src":"6349:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3267,"name":"Refunded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3800,"src":"6330:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":3270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6330:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3271,"nodeType":"EmitStatement","src":"6325:31:12"},{"expression":{"hexValue":"74727565","id":3272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6373:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3226,"id":3273,"nodeType":"Return","src":"6366:11:12"}]},"documentation":{"id":3216,"nodeType":"StructuredDocumentation","src":"5798:35:12","text":"@dev See {refund-IPaycrest}. "},"functionSelector":"e4683a79","id":3275,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":3223,"kind":"modifierInvocation","modifierName":{"id":3222,"name":"onlyAggregator","nameLocations":["5898:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":2889,"src":"5898:14:12"},"nodeType":"ModifierInvocation","src":"5898:16:12"}],"name":"refund","nameLocation":"5847:6:12","nodeType":"FunctionDefinition","parameters":{"id":3221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3218,"mutability":"mutable","name":"_orderId","nameLocation":"5862:8:12","nodeType":"VariableDeclaration","scope":3275,"src":"5854:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5854:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3220,"mutability":"mutable","name":"_label","nameLocation":"5880:6:12","nodeType":"VariableDeclaration","scope":3275,"src":"5872:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3219,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5872:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5853:34:12"},"returnParameters":{"id":3226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3275,"src":"5923:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3224,"name":"bool","nodeType":"ElementaryTypeName","src":"5923:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5922:6:12"},"scope":3519,"src":"5838:546:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3353,"nodeType":"Block","src":"6517:982:12","statements":[{"assignments":[3288],"declarations":[{"constant":false,"id":3288,"mutability":"mutable","name":"amount","nameLocation":"6595:6:12","nodeType":"VariableDeclaration","scope":3353,"src":"6587:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3287,"name":"uint256","nodeType":"ElementaryTypeName","src":"6587:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3293,"initialValue":{"expression":{"baseExpression":{"id":3289,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6604:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3291,"indexExpression":{"id":3290,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"6610:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6604:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6620:6:12","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3843,"src":"6604:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6587:39:12"},{"expression":{"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3294,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"6674:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3295,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"6683:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"baseExpression":{"id":3296,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6692:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3298,"indexExpression":{"id":3297,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"6698:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6692:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6708:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3833,"src":"6692:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6683:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6674:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3302,"nodeType":"ExpressionStatement","src":"6674:43:12"},{"expression":{"id":3312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3303,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"6796:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6807:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"6796:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3306,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"6834:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3307,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3279,"src":"6843:14:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"6834:23:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3309,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6833:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3310,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"6861:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6833:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6796:72:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3313,"nodeType":"ExpressionStatement","src":"6796:72:12"},{"expression":{"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3314,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"6936:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6947:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"6936:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3317,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"6962:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3318,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6973:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"6962:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3319,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3538,"src":"6999:18:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6962:55:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3321,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6961:57:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3322,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"7021:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6961:67:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6936:92:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3325,"nodeType":"ExpressionStatement","src":"6936:92:12"},{"expression":{"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3326,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"7126:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7137:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7126:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3329,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"7164:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7175:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7164:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":3331,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"7201:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3332,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7212:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7201:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7164:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3334,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7163:61:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7126:98:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3336,"nodeType":"ExpressionStatement","src":"7126:98:12"},{"condition":{"id":3337,"name":"_isPartner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"7356:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3352,"nodeType":"IfStatement","src":"7352:141:12","trueBody":{"id":3351,"nodeType":"Block","src":"7368:125:12","statements":[{"expression":{"id":3343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3338,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"7382:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7393:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7382:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":3341,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"7420:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7431:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7420:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7382:60:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3344,"nodeType":"ExpressionStatement","src":"7382:60:12"},{"expression":{"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3345,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"7456:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7467:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7456:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7481:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7456:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3350,"nodeType":"ExpressionStatement","src":"7456:26:12"}]}}]},"id":3354,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateFees","nameLocation":"6399:14:12","nodeType":"FunctionDefinition","parameters":{"id":3282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3277,"mutability":"mutable","name":"_orderId","nameLocation":"6422:8:12","nodeType":"VariableDeclaration","scope":3354,"src":"6414:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3276,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6414:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3279,"mutability":"mutable","name":"_settlePercent","nameLocation":"6439:14:12","nodeType":"VariableDeclaration","scope":3354,"src":"6432:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3278,"name":"uint96","nodeType":"ElementaryTypeName","src":"6432:6:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3281,"mutability":"mutable","name":"_isPartner","nameLocation":"6460:10:12","nodeType":"VariableDeclaration","scope":3354,"src":"6455:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3280,"name":"bool","nodeType":"ElementaryTypeName","src":"6455:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6413:58:12"},"returnParameters":{"id":3286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3285,"mutability":"mutable","name":"_feeParams","nameLocation":"6504:10:12","nodeType":"VariableDeclaration","scope":3354,"src":"6493:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee"},"typeName":{"id":3284,"nodeType":"UserDefinedTypeName","pathNode":{"id":3283,"name":"fee","nameLocations":["6493:3:12"],"nodeType":"IdentifierPath","referencedDeclaration":2831,"src":"6493:3:12"},"referencedDeclaration":2831,"src":"6493:3:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_storage_ptr","typeString":"struct Paycrest.fee"}},"visibility":"internal"}],"src":"6492:24:12"},"scope":3519,"src":"6390:1109:12","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[3918],"body":{"id":3367,"nodeType":"Block","src":"7822:39:12","statements":[{"expression":{"baseExpression":{"id":3363,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7839:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3844_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3365,"indexExpression":{"id":3364,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3357,"src":"7845:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7839:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage","typeString":"struct IPaycrest.Order storage ref"}},"functionReturnParameters":3362,"id":3366,"nodeType":"Return","src":"7832:22:12"}]},"documentation":{"id":3355,"nodeType":"StructuredDocumentation","src":"7700:41:12","text":"@dev See {getOrderInfo-IPaycrest}. "},"functionSelector":"768c6ec0","id":3368,"implemented":true,"kind":"function","modifiers":[],"name":"getOrderInfo","nameLocation":"7755:12:12","nodeType":"FunctionDefinition","parameters":{"id":3358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3357,"mutability":"mutable","name":"_orderId","nameLocation":"7776:8:12","nodeType":"VariableDeclaration","scope":3368,"src":"7768:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3356,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7768:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7767:18:12"},"returnParameters":{"id":3362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3368,"src":"7808:12:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_memory_ptr","typeString":"struct IPaycrest.Order"},"typeName":{"id":3360,"nodeType":"UserDefinedTypeName","pathNode":{"id":3359,"name":"Order","nameLocations":["7808:5:12"],"nodeType":"IdentifierPath","referencedDeclaration":3844,"src":"7808:5:12"},"referencedDeclaration":3844,"src":"7808:5:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage_ptr","typeString":"struct IPaycrest.Order"}},"visibility":"internal"}],"src":"7807:14:12"},"scope":3519,"src":"7746:115:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3909],"body":{"id":3380,"nodeType":"Block","src":"7987:49:12","statements":[{"expression":{"baseExpression":{"id":3376,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"8004:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3378,"indexExpression":{"id":3377,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"8022:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8004:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3375,"id":3379,"nodeType":"Return","src":"7997:32:12"}]},"documentation":{"id":3369,"nodeType":"StructuredDocumentation","src":"7867:45:12","text":"@dev See {isTokenSupported-IPaycrest}. "},"functionSelector":"75151b63","id":3381,"implemented":true,"kind":"function","modifiers":[],"name":"isTokenSupported","nameLocation":"7926:16:12","nodeType":"FunctionDefinition","parameters":{"id":3372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3371,"mutability":"mutable","name":"_token","nameLocation":"7951:6:12","nodeType":"VariableDeclaration","scope":3381,"src":"7943:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3370,"name":"address","nodeType":"ElementaryTypeName","src":"7943:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7942:16:12"},"returnParameters":{"id":3375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3381,"src":"7981:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3373,"name":"bool","nodeType":"ElementaryTypeName","src":"7981:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7980:6:12"},"scope":3519,"src":"7917:119:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3394,"nodeType":"Block","src":"8203:57:12","statements":[{"expression":{"baseExpression":{"id":3390,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3567,"src":"8220:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3534_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3392,"indexExpression":{"id":3391,"name":"code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"8248:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8220:33:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3534_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"functionReturnParameters":3389,"id":3393,"nodeType":"Return","src":"8213:40:12"}]},"documentation":{"id":3382,"nodeType":"StructuredDocumentation","src":"8042:56:12","text":"@dev See {getSupportedInstitutionName-IPaycrest}. "},"functionSelector":"87490d86","id":3395,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInstitutionName","nameLocation":"8112:27:12","nodeType":"FunctionDefinition","parameters":{"id":3385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3384,"mutability":"mutable","name":"code","nameLocation":"8148:4:12","nodeType":"VariableDeclaration","scope":3395,"src":"8140:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3383,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8140:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8139:14:12"},"returnParameters":{"id":3389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3395,"src":"8177:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3534_memory_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"},"typeName":{"id":3387,"nodeType":"UserDefinedTypeName","pathNode":{"id":3386,"name":"InstitutionByCode","nameLocations":["8177:17:12"],"nodeType":"IdentifierPath","referencedDeclaration":3534,"src":"8177:17:12"},"referencedDeclaration":3534,"src":"8177:17:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3534_storage_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"}},"visibility":"internal"}],"src":"8176:26:12"},"scope":3519,"src":"8103:157:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3453,"nodeType":"Block","src":"8363:390:12","statements":[{"assignments":[3408],"declarations":[{"constant":false,"id":3408,"mutability":"mutable","name":"institutions","nameLocation":"8394:12:12","nodeType":"VariableDeclaration","scope":3453,"src":"8373:33:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3406,"nodeType":"UserDefinedTypeName","pathNode":{"id":3405,"name":"Institution","nameLocations":["8373:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3529,"src":"8373:11:12"},"referencedDeclaration":3529,"src":"8373:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3407,"nodeType":"ArrayTypeName","src":"8373:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"id":3412,"initialValue":{"baseExpression":{"id":3409,"name":"supportedInstitutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"8409:21:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution storage ref[] storage ref)"}},"id":3411,"indexExpression":{"id":3410,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3397,"src":"8431:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8409:31:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_storage_$dyn_storage","typeString":"struct PaycrestSettingManager.Institution storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8373:67:12"},{"assignments":[3414],"declarations":[{"constant":false,"id":3414,"mutability":"mutable","name":"length","nameLocation":"8458:6:12","nodeType":"VariableDeclaration","scope":3453,"src":"8450:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3413,"name":"uint256","nodeType":"ElementaryTypeName","src":"8450:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3417,"initialValue":{"expression":{"id":3415,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3408,"src":"8467:12:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8480:6:12","memberName":"length","nodeType":"MemberAccess","src":"8467:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8450:36:12"},{"assignments":[3422],"declarations":[{"constant":false,"id":3422,"mutability":"mutable","name":"result","nameLocation":"8517:6:12","nodeType":"VariableDeclaration","scope":3453,"src":"8496:27:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3420,"nodeType":"UserDefinedTypeName","pathNode":{"id":3419,"name":"Institution","nameLocations":["8496:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3529,"src":"8496:11:12"},"referencedDeclaration":3529,"src":"8496:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3421,"nodeType":"ArrayTypeName","src":"8496:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"id":3429,"initialValue":{"arguments":[{"id":3427,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3414,"src":"8544:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8526:17:12","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct PaycrestSettingManager.Institution memory[] memory)"},"typeName":{"baseType":{"id":3424,"nodeType":"UserDefinedTypeName","pathNode":{"id":3423,"name":"Institution","nameLocations":["8530:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3529,"src":"8530:11:12"},"referencedDeclaration":3529,"src":"8530:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3425,"nodeType":"ArrayTypeName","src":"8530:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}}},"id":3428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8526:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8496:55:12"},{"body":{"id":3449,"nodeType":"Block","src":"8604:111:12","statements":[{"expression":{"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3437,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3422,"src":"8618:6:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3439,"indexExpression":{"id":3438,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"8625:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8618:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3440,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3408,"src":"8630:12:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3442,"indexExpression":{"id":3441,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"8643:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8630:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"src":"8618:27:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3444,"nodeType":"ExpressionStatement","src":"8618:27:12"},{"id":3448,"nodeType":"UncheckedBlock","src":"8659:46:12","statements":[{"expression":{"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8687:3:12","subExpression":{"id":3445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"8687:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3447,"nodeType":"ExpressionStatement","src":"8687:3:12"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3434,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"8590:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3435,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3414,"src":"8594:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8590:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3450,"initializationExpression":{"assignments":[3431],"declarations":[{"constant":false,"id":3431,"mutability":"mutable","name":"i","nameLocation":"8583:1:12","nodeType":"VariableDeclaration","scope":3450,"src":"8575:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3430,"name":"uint256","nodeType":"ElementaryTypeName","src":"8575:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3433,"initialValue":{"hexValue":"30","id":3432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8587:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8575:13:12"},"nodeType":"ForStatement","src":"8570:145:12"},{"expression":{"id":3451,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3422,"src":"8740:6:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"functionReturnParameters":3403,"id":3452,"nodeType":"Return","src":"8733:13:12"}]},"functionSelector":"02621338","id":3454,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInstitutions","nameLocation":"8275:24:12","nodeType":"FunctionDefinition","parameters":{"id":3398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3397,"mutability":"mutable","name":"currency","nameLocation":"8308:8:12","nodeType":"VariableDeclaration","scope":3454,"src":"8300:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3396,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8300:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8299:18:12"},"returnParameters":{"id":3403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3402,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3454,"src":"8341:20:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3400,"nodeType":"UserDefinedTypeName","pathNode":{"id":3399,"name":"Institution","nameLocations":["8341:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3529,"src":"8341:11:12"},"referencedDeclaration":3529,"src":"8341:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3401,"nodeType":"ArrayTypeName","src":"8341:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"src":"8340:22:12"},"scope":3519,"src":"8266:487:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3926],"body":{"id":3466,"nodeType":"Block","src":"8893:52:12","statements":[{"expression":{"components":[{"id":3462,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3538,"src":"8910:18:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3463,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3536,"src":"8930:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3464,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8909:29:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint64_$_t_uint256_$","typeString":"tuple(uint64,uint256)"}},"functionReturnParameters":3461,"id":3465,"nodeType":"Return","src":"8903:35:12"}]},"documentation":{"id":3455,"nodeType":"StructuredDocumentation","src":"8759:42:12","text":"@dev See {getFeeDetails-IPaycrest}. "},"functionSelector":"b810c636","id":3467,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"8815:13:12","nodeType":"FunctionDefinition","parameters":{"id":3456,"nodeType":"ParameterList","parameters":[],"src":"8828:2:12"},"returnParameters":{"id":3461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3458,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3467,"src":"8862:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3457,"name":"uint64","nodeType":"ElementaryTypeName","src":"8862:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3467,"src":"8879:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3459,"name":"uint256","nodeType":"ElementaryTypeName","src":"8879:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8852:40:12"},"scope":3519,"src":"8806:139:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3932],"body":{"id":3475,"nodeType":"Block","src":"9068:42:12","statements":[{"expression":{"id":3473,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3542,"src":"9085:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3472,"id":3474,"nodeType":"Return","src":"9078:25:12"}]},"documentation":{"id":3468,"nodeType":"StructuredDocumentation","src":"8951:49:12","text":"@dev See {getAggregatorAddress-IPaycrest}. "},"functionSelector":"e8d6e0de","id":3476,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregatorAddress","nameLocation":"9014:20:12","nodeType":"FunctionDefinition","parameters":{"id":3469,"nodeType":"ParameterList","parameters":[],"src":"9034:2:12"},"returnParameters":{"id":3472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3471,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3476,"src":"9059:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3470,"name":"address","nodeType":"ElementaryTypeName","src":"9059:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9058:9:12"},"scope":3519,"src":"9005:105:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3946],"body":{"id":3488,"nodeType":"Block","src":"9244:46:12","statements":[{"expression":{"baseExpression":{"id":3484,"name":"_isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3556,"src":"9261:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3486,"indexExpression":{"id":3485,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3479,"src":"9276:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9261:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3483,"id":3487,"nodeType":"Return","src":"9254:29:12"}]},"documentation":{"id":3477,"nodeType":"StructuredDocumentation","src":"9116:49:12","text":"@dev See {getWhitelistedStatus-IPaycrest}. "},"functionSelector":"d8e8de34","id":3489,"implemented":true,"kind":"function","modifiers":[],"name":"getWhitelistedStatus","nameLocation":"9179:20:12","nodeType":"FunctionDefinition","parameters":{"id":3480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3479,"mutability":"mutable","name":"sender","nameLocation":"9208:6:12","nodeType":"VariableDeclaration","scope":3489,"src":"9200:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3478,"name":"address","nodeType":"ElementaryTypeName","src":"9200:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9199:16:12"},"returnParameters":{"id":3483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3482,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3489,"src":"9238:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3481,"name":"bool","nodeType":"ElementaryTypeName","src":"9238:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9237:6:12"},"scope":3519,"src":"9170:120:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3938],"body":{"id":3497,"nodeType":"Block","src":"9404:35:12","statements":[{"expression":{"id":3495,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"9421:11:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":3494,"id":3496,"nodeType":"Return","src":"9414:18:12"}]},"documentation":{"id":3490,"nodeType":"StructuredDocumentation","src":"9296:42:12","text":"@dev See {getAggregator-IPaycrest}. "},"functionSelector":"3ad59dbc","id":3498,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregator","nameLocation":"9352:13:12","nodeType":"FunctionDefinition","parameters":{"id":3491,"nodeType":"ParameterList","parameters":[],"src":"9365:2:12"},"returnParameters":{"id":3494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3493,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3498,"src":"9390:12:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3492,"name":"bytes","nodeType":"ElementaryTypeName","src":"9390:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9389:14:12"},"scope":3519,"src":"9343:96:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3517,"nodeType":"Block","src":"9626:61:12","statements":[{"expression":{"arguments":[{"id":3513,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3502,"src":"9660:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3514,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"9672:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3510,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"9643:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3509,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"9636:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9636:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9651:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"9636:23:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9636:44:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3516,"nodeType":"ExpressionStatement","src":"9636:44:12"}]},"functionSelector":"d9caed12","id":3518,"implemented":true,"kind":"function","modifiers":[{"id":3507,"kind":"modifierInvocation","modifierName":{"id":3506,"name":"onlyOwner","nameLocations":["9616:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"9616:9:12"},"nodeType":"ModifierInvocation","src":"9616:9:12"}],"name":"withdraw","nameLocation":"9545:8:12","nodeType":"FunctionDefinition","parameters":{"id":3505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3500,"mutability":"mutable","name":"_token","nameLocation":"9562:6:12","nodeType":"VariableDeclaration","scope":3518,"src":"9554:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3499,"name":"address","nodeType":"ElementaryTypeName","src":"9554:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3502,"mutability":"mutable","name":"_recipient","nameLocation":"9578:10:12","nodeType":"VariableDeclaration","scope":3518,"src":"9570:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3501,"name":"address","nodeType":"ElementaryTypeName","src":"9570:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3504,"mutability":"mutable","name":"_amount","nameLocation":"9598:7:12","nodeType":"VariableDeclaration","scope":3518,"src":"9590:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3503,"name":"uint256","nodeType":"ElementaryTypeName","src":"9590:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9553:53:12"},"returnParameters":{"id":3508,"nodeType":"ParameterList","parameters":[],"src":"9626:0:12"},"scope":3519,"src":"9536:151:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3520,"src":"367:9323:12","usedErrors":[]}],"src":"38:9653:12"},"id":12},"contracts/PaycrestSettingManager.sol":{"ast":{"absolutePath":"contracts/PaycrestSettingManager.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300],"OwnableUpgradeable":[131],"PaycrestSettingManager":[3758]},"id":3759,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3521,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:13"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":3522,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3759,"sourceUnit":132,"src":"62:75:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3523,"name":"OwnableUpgradeable","nameLocations":["174:18:13"],"nodeType":"IdentifierPath","referencedDeclaration":131,"src":"174:18:13"},"id":3524,"nodeType":"InheritanceSpecifier","src":"174:18:13"}],"canonicalName":"PaycrestSettingManager","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3758,"linearizedBaseContracts":[3758,131,1162,300],"name":"PaycrestSettingManager","nameLocation":"148:22:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"PaycrestSettingManager.Institution","id":3529,"members":[{"constant":false,"id":3526,"mutability":"mutable","name":"code","nameLocation":"237:4:13","nodeType":"VariableDeclaration","scope":3529,"src":"229:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3525,"name":"bytes32","nodeType":"ElementaryTypeName","src":"229:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3528,"mutability":"mutable","name":"name","nameLocation":"294:4:13","nodeType":"VariableDeclaration","scope":3529,"src":"286:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3527,"name":"bytes32","nodeType":"ElementaryTypeName","src":"286:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Institution","nameLocation":"207:11:13","nodeType":"StructDefinition","scope":3758,"src":"200:109:13","visibility":"public"},{"canonicalName":"PaycrestSettingManager.InstitutionByCode","id":3534,"members":[{"constant":false,"id":3531,"mutability":"mutable","name":"name","nameLocation":"357:4:13","nodeType":"VariableDeclaration","scope":3534,"src":"349:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3530,"name":"bytes32","nodeType":"ElementaryTypeName","src":"349:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3533,"mutability":"mutable","name":"currency","nameLocation":"379:8:13","nodeType":"VariableDeclaration","scope":3534,"src":"371:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3532,"name":"bytes32","nodeType":"ElementaryTypeName","src":"371:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"InstitutionByCode","nameLocation":"321:17:13","nodeType":"StructDefinition","scope":3758,"src":"314:80:13","visibility":"public"},{"constant":false,"id":3536,"mutability":"mutable","name":"MAX_BPS","nameLocation":"416:7:13","nodeType":"VariableDeclaration","scope":3758,"src":"399:24:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3535,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3538,"mutability":"mutable","name":"protocolFeePercent","nameLocation":"445:18:13","nodeType":"VariableDeclaration","scope":3758,"src":"429:34:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3537,"name":"uint64","nodeType":"ElementaryTypeName","src":"429:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3540,"mutability":"mutable","name":"feeRecipient","nameLocation":"492:12:13","nodeType":"VariableDeclaration","scope":3758,"src":"475:29:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3539,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3542,"mutability":"mutable","name":"_aggregatorAddress","nameLocation":"527:18:13","nodeType":"VariableDeclaration","scope":3758,"src":"510:35:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3541,"name":"address","nodeType":"ElementaryTypeName","src":"510:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3544,"mutability":"mutable","name":"_aggregator","nameLocation":"566:11:13","nodeType":"VariableDeclaration","scope":3758,"src":"551:26:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes"},"typeName":{"id":3543,"name":"bytes","nodeType":"ElementaryTypeName","src":"551:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3548,"mutability":"mutable","name":"__gap","nameLocation":"717:5:13","nodeType":"VariableDeclaration","scope":3758,"src":"697:25:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":3545,"name":"uint256","nodeType":"ElementaryTypeName","src":"697:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3547,"length":{"hexValue":"3530","id":3546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"705:2:13","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"697:11:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"},{"constant":false,"id":3552,"mutability":"mutable","name":"_isTokenSupported","nameLocation":"763:17:13","nodeType":"VariableDeclaration","scope":3758,"src":"729:51:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3551,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3549,"name":"address","nodeType":"ElementaryTypeName","src":"737:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"729:24:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3550,"name":"bool","nodeType":"ElementaryTypeName","src":"748:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":3556,"mutability":"mutable","name":"_isWhitelisted","nameLocation":"820:14:13","nodeType":"VariableDeclaration","scope":3758,"src":"786:48:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3555,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3553,"name":"address","nodeType":"ElementaryTypeName","src":"794:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"786:24:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3554,"name":"bool","nodeType":"ElementaryTypeName","src":"805:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":3562,"mutability":"mutable","name":"supportedInstitutions","nameLocation":"884:21:13","nodeType":"VariableDeclaration","scope":3758,"src":"841:64:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])"},"typeName":{"id":3561,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3557,"name":"bytes32","nodeType":"ElementaryTypeName","src":"849:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"841:33:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":3559,"nodeType":"UserDefinedTypeName","pathNode":{"id":3558,"name":"Institution","nameLocations":["860:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":3529,"src":"860:11:13"},"referencedDeclaration":3529,"src":"860:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3560,"nodeType":"ArrayTypeName","src":"860:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}}},"visibility":"internal"},{"constant":false,"id":3567,"mutability":"mutable","name":"supportedInstitutionsByCode","nameLocation":"958:27:13","nodeType":"VariableDeclaration","scope":3758,"src":"911:74:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3534_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)"},"typeName":{"id":3566,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"919:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"911:37:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3534_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3565,"nodeType":"UserDefinedTypeName","pathNode":{"id":3564,"name":"InstitutionByCode","nameLocations":["930:17:13"],"nodeType":"IdentifierPath","referencedDeclaration":3534,"src":"930:17:13"},"referencedDeclaration":3534,"src":"930:17:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3534_storage_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"}}},"visibility":"internal"},{"anonymous":false,"eventSelector":"e22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace930","id":3575,"name":"SettingManagerBool","nameLocation":"998:18:13","nodeType":"EventDefinition","parameters":{"id":3574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3569,"indexed":false,"mutability":"mutable","name":"what","nameLocation":"1025:4:13","nodeType":"VariableDeclaration","scope":3575,"src":"1017:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3568,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1017:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3571,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1039:5:13","nodeType":"VariableDeclaration","scope":3575,"src":"1031:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3570,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3573,"indexed":false,"mutability":"mutable","name":"status","nameLocation":"1051:6:13","nodeType":"VariableDeclaration","scope":3575,"src":"1046:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3572,"name":"bool","nodeType":"ElementaryTypeName","src":"1046:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1016:42:13"},"src":"992:67:13"},{"anonymous":false,"eventSelector":"c8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a9","id":3579,"name":"PaycrestFees","nameLocation":"1070:12:13","nodeType":"EventDefinition","parameters":{"id":3578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3577,"indexed":false,"mutability":"mutable","name":"protocolFee","nameLocation":"1090:11:13","nodeType":"VariableDeclaration","scope":3579,"src":"1083:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3576,"name":"uint64","nodeType":"ElementaryTypeName","src":"1083:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1082:20:13"},"src":"1064:39:13"},{"anonymous":false,"eventSelector":"6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef","id":3583,"name":"SetAggregator","nameLocation":"1114:13:13","nodeType":"EventDefinition","parameters":{"id":3582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3581,"indexed":false,"mutability":"mutable","name":"aggregator","nameLocation":"1134:10:13","nodeType":"VariableDeclaration","scope":3583,"src":"1128:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3580,"name":"bytes","nodeType":"ElementaryTypeName","src":"1128:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1127:18:13"},"src":"1108:38:13"},{"anonymous":false,"eventSelector":"2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a73","id":3587,"name":"SetFeeRecipient","nameLocation":"1157:15:13","nodeType":"EventDefinition","parameters":{"id":3586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3585,"indexed":false,"mutability":"mutable","name":"feeRecipient","nameLocation":"1181:12:13","nodeType":"VariableDeclaration","scope":3587,"src":"1173:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3584,"name":"address","nodeType":"ElementaryTypeName","src":"1173:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1172:22:13"},"src":"1151:44:13"},{"body":{"id":3634,"nodeType":"Block","src":"1490:255:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3599,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"1508:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1525:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1517:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3600,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:13","typeDescriptions":{}}},"id":3603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1517:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1508:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50617963726573743a207a65726f2061646472657373","id":3605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1529:24:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""},"value":"Paycrest: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""}],"id":3598,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1500:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1500:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3607,"nodeType":"ExpressionStatement","src":"1500:54:13"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3608,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"1568:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"746f6b656e","id":3609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1576:7:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b9b0454cadcb5884dd3faa6ba975da4d2459aa3f11d31291a25a8358f84946d","typeString":"literal_string \"token\""},"value":"token"},"src":"1568:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3617,"nodeType":"IfStatement","src":"1564:54:13","trueBody":{"expression":{"id":3615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3611,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3552,"src":"1585:17:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3613,"indexExpression":{"id":3612,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"1603:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1585:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3614,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"1612:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1585:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3616,"nodeType":"ExpressionStatement","src":"1585:33:13"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3618,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"1632:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"77686974656c697374","id":3619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1640:11:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_54c80de7e611b57d6d38523e3c0c59a6a3e72cddf62c95cf51a204e52c1a86ad","typeString":"literal_string \"whitelist\""},"value":"whitelist"},"src":"1632:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3627,"nodeType":"IfStatement","src":"1628:55:13","trueBody":{"expression":{"id":3625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3621,"name":"_isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3556,"src":"1653:14:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3623,"indexExpression":{"id":3622,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"1668:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1653:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3624,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"1677:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1653:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3626,"nodeType":"ExpressionStatement","src":"1653:30:13"}},{"eventCall":{"arguments":[{"id":3629,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"1718:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3630,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"1724:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3631,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"1731:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3628,"name":"SettingManagerBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3575,"src":"1699:18:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bool)"}},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1699:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3633,"nodeType":"EmitStatement","src":"1694:44:13"}]},"functionSelector":"99e3c0b4","id":3635,"implemented":true,"kind":"function","modifiers":[{"id":3596,"kind":"modifierInvocation","modifierName":{"id":3595,"name":"onlyOwner","nameLocations":["1480:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"1480:9:13"},"nodeType":"ModifierInvocation","src":"1480:9:13"}],"name":"settingManagerBool","nameLocation":"1410:18:13","nodeType":"FunctionDefinition","parameters":{"id":3594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3589,"mutability":"mutable","name":"what","nameLocation":"1437:4:13","nodeType":"VariableDeclaration","scope":3635,"src":"1429:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3588,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1429:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3591,"mutability":"mutable","name":"value","nameLocation":"1451:5:13","nodeType":"VariableDeclaration","scope":3635,"src":"1443:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3590,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3593,"mutability":"mutable","name":"status","nameLocation":"1463:6:13","nodeType":"VariableDeclaration","scope":3635,"src":"1458:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3592,"name":"bool","nodeType":"ElementaryTypeName","src":"1458:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1428:42:13"},"returnParameters":{"id":3597,"nodeType":"ParameterList","parameters":[],"src":"1490:0:13"},"scope":3758,"src":"1401:344:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3688,"nodeType":"Block","src":"1857:394:13","statements":[{"assignments":[3647],"declarations":[{"constant":false,"id":3647,"mutability":"mutable","name":"length","nameLocation":"1876:6:13","nodeType":"VariableDeclaration","scope":3688,"src":"1868:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3646,"name":"uint256","nodeType":"ElementaryTypeName","src":"1868:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3650,"initialValue":{"expression":{"id":3648,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3641,"src":"1885:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1898:6:13","memberName":"length","nodeType":"MemberAccess","src":"1885:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1868:36:13"},{"body":{"id":3686,"nodeType":"Block","src":"1945:300:13","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3662,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3641,"src":"1996:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3664,"indexExpression":{"id":3663,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3652,"src":"2009:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1996:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Institution_$3529_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}],"expression":{"baseExpression":{"id":3658,"name":"supportedInstitutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"1959:21:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution storage ref[] storage ref)"}},"id":3660,"indexExpression":{"id":3659,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3637,"src":"1981:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1959:31:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_storage_$dyn_storage","typeString":"struct PaycrestSettingManager.Institution storage ref[] storage ref"}},"id":3661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1991:4:13","memberName":"push","nodeType":"MemberAccess","src":"1959:36:13","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_ptr_$_t_struct$_Institution_$3529_storage_$returns$__$attached_to$_t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_ptr_$","typeString":"function (struct PaycrestSettingManager.Institution storage ref[] storage pointer,struct PaycrestSettingManager.Institution storage ref)"}},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1959:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3666,"nodeType":"ExpressionStatement","src":"1959:53:13"},{"expression":{"id":3680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3667,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3567,"src":"2026:27:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3534_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3672,"indexExpression":{"expression":{"baseExpression":{"id":3668,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3641,"src":"2054:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3670,"indexExpression":{"id":3669,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3652,"src":"2067:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2054:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2070:4:13","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":3526,"src":"2054:20:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2026:49:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3534_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"baseExpression":{"id":3674,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3641,"src":"2120:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3676,"indexExpression":{"id":3675,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3652,"src":"2133:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2120:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2136:4:13","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":3528,"src":"2120:20:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3678,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3637,"src":"2152:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3673,"name":"InstitutionByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"2078:17:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_InstitutionByCode_$3534_storage_ptr_$","typeString":"type(struct PaycrestSettingManager.InstitutionByCode storage pointer)"}},"id":3679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["2114:4:13","2142:8:13"],"names":["name","currency"],"nodeType":"FunctionCall","src":"2078:97:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3534_memory_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode memory"}},"src":"2026:149:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3534_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"id":3681,"nodeType":"ExpressionStatement","src":"2026:149:13"},{"id":3685,"nodeType":"UncheckedBlock","src":"2189:46:13","statements":[{"expression":{"id":3683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2217:3:13","subExpression":{"id":3682,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3652,"src":"2217:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3684,"nodeType":"ExpressionStatement","src":"2217:3:13"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3655,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3652,"src":"1931:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3656,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3647,"src":"1935:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1931:10:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3687,"initializationExpression":{"assignments":[3652],"declarations":[{"constant":false,"id":3652,"mutability":"mutable","name":"i","nameLocation":"1924:1:13","nodeType":"VariableDeclaration","scope":3687,"src":"1919:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3651,"name":"uint","nodeType":"ElementaryTypeName","src":"1919:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3654,"initialValue":{"hexValue":"30","id":3653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1928:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1919:10:13"},"nodeType":"ForStatement","src":"1914:331:13"}]},"functionSelector":"32200882","id":3689,"implemented":true,"kind":"function","modifiers":[{"id":3644,"kind":"modifierInvocation","modifierName":{"id":3643,"name":"onlyOwner","nameLocations":["1847:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"1847:9:13"},"nodeType":"ModifierInvocation","src":"1847:9:13"}],"name":"setSupportedInstitutions","nameLocation":"1760:24:13","nodeType":"FunctionDefinition","parameters":{"id":3642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3637,"mutability":"mutable","name":"currency","nameLocation":"1793:8:13","nodeType":"VariableDeclaration","scope":3689,"src":"1785:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3636,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1785:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3641,"mutability":"mutable","name":"institutions","nameLocation":"1824:12:13","nodeType":"VariableDeclaration","scope":3689,"src":"1803:33:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3639,"nodeType":"UserDefinedTypeName","pathNode":{"id":3638,"name":"Institution","nameLocations":["1803:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":3529,"src":"1803:11:13"},"referencedDeclaration":3529,"src":"1803:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3529_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3640,"nodeType":"ArrayTypeName","src":"1803:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3529_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"src":"1784:53:13"},"returnParameters":{"id":3645,"nodeType":"ParameterList","parameters":[],"src":"1857:0:13"},"scope":3758,"src":"1751:500:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3704,"nodeType":"Block","src":"2332:105:13","statements":[{"expression":{"id":3698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3696,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3538,"src":"2342:18:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3697,"name":"_protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3691,"src":"2363:19:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2342:40:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3699,"nodeType":"ExpressionStatement","src":"2342:40:13"},{"eventCall":{"arguments":[{"id":3701,"name":"_protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3691,"src":"2410:19:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3700,"name":"PaycrestFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3579,"src":"2397:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":3702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2397:33:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3703,"nodeType":"EmitStatement","src":"2392:38:13"}]},"functionSelector":"84630736","id":3705,"implemented":true,"kind":"function","modifiers":[{"id":3694,"kind":"modifierInvocation","modifierName":{"id":3693,"name":"onlyOwner","nameLocations":["2322:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2322:9:13"},"nodeType":"ModifierInvocation","src":"2322:9:13"}],"name":"updateProtocolFees","nameLocation":"2266:18:13","nodeType":"FunctionDefinition","parameters":{"id":3692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3691,"mutability":"mutable","name":"_protocolFeePercent","nameLocation":"2292:19:13","nodeType":"VariableDeclaration","scope":3705,"src":"2285:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3690,"name":"uint64","nodeType":"ElementaryTypeName","src":"2285:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2284:28:13"},"returnParameters":{"id":3695,"nodeType":"ParameterList","parameters":[],"src":"2332:0:13"},"scope":3758,"src":"2257:180:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3740,"nodeType":"Block","src":"2524:182:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3715,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3709,"src":"2542:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2559:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2551:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3716,"name":"address","nodeType":"ElementaryTypeName","src":"2551:7:13","typeDescriptions":{}}},"id":3719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2551:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2542:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50617963726573743a207a65726f2061646472657373","id":3721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2563:24:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""},"value":"Paycrest: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""}],"id":3714,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2534:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2534:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3723,"nodeType":"ExpressionStatement","src":"2534:54:13"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3724,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"2602:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"666565","id":3725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2610:5:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_833b9f6abf0b529613680afe2a00fa663cc95cbdc47d726d85a044462eabbf02","typeString":"literal_string \"fee\""},"value":"fee"},"src":"2602:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3731,"nodeType":"IfStatement","src":"2598:39:13","trueBody":{"expression":{"id":3729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3727,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3540,"src":"2617:12:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3728,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3709,"src":"2632:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2617:20:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3730,"nodeType":"ExpressionStatement","src":"2617:20:13"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3732,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"2651:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"61676772656761746f72","id":3733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2659:12:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_e124d7cc79a19705865fa21b784ba187cd393559e960c0c071132cb60354d1a3","typeString":"literal_string \"aggregator\""},"value":"aggregator"},"src":"2651:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3739,"nodeType":"IfStatement","src":"2647:52:13","trueBody":{"expression":{"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3735,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3542,"src":"2673:18:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3736,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3709,"src":"2694:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2673:26:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3738,"nodeType":"ExpressionStatement","src":"2673:26:13"}}]},"functionSelector":"79a0effb","id":3741,"implemented":true,"kind":"function","modifiers":[{"id":3712,"kind":"modifierInvocation","modifierName":{"id":3711,"name":"onlyOwner","nameLocations":["2514:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2514:9:13"},"nodeType":"ModifierInvocation","src":"2514:9:13"}],"name":"updateProtocolAddresses","nameLocation":"2452:23:13","nodeType":"FunctionDefinition","parameters":{"id":3710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3707,"mutability":"mutable","name":"what","nameLocation":"2484:4:13","nodeType":"VariableDeclaration","scope":3741,"src":"2476:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3706,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2476:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3709,"mutability":"mutable","name":"value","nameLocation":"2498:5:13","nodeType":"VariableDeclaration","scope":3741,"src":"2490:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3708,"name":"address","nodeType":"ElementaryTypeName","src":"2490:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2475:29:13"},"returnParameters":{"id":3713,"nodeType":"ParameterList","parameters":[],"src":"2524:0:13"},"scope":3758,"src":"2443:263:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3756,"nodeType":"Block","src":"2792:81:13","statements":[{"expression":{"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3748,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"2802:11:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3749,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"2816:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"2802:24:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":3751,"nodeType":"ExpressionStatement","src":"2802:24:13"},{"eventCall":{"arguments":[{"id":3753,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"2855:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3752,"name":"SetAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3583,"src":"2841:13:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2841:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3755,"nodeType":"EmitStatement","src":"2836:30:13"}]},"functionSelector":"cb79455b","id":3757,"implemented":true,"kind":"function","modifiers":[{"id":3746,"kind":"modifierInvocation","modifierName":{"id":3745,"name":"onlyOwner","nameLocations":["2782:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2782:9:13"},"nodeType":"ModifierInvocation","src":"2782:9:13"}],"name":"updateProtocolAggregator","nameLocation":"2721:24:13","nodeType":"FunctionDefinition","parameters":{"id":3744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3743,"mutability":"mutable","name":"aggregator","nameLocation":"2761:10:13","nodeType":"VariableDeclaration","scope":3757,"src":"2746:25:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3742,"name":"bytes","nodeType":"ElementaryTypeName","src":"2746:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2745:27:13"},"returnParameters":{"id":3747,"nodeType":"ParameterList","parameters":[],"src":"2792:0:13"},"scope":3758,"src":"2712:161:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3759,"src":"139:2737:13","usedErrors":[]}],"src":"38:2839:13"},"id":13},"contracts/interface/IPaycrest.sol":{"ast":{"absolutePath":"contracts/interface/IPaycrest.sol","exportedSymbols":{"IERC20":[2806],"IPaycrest":[3947]},"id":3948,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3760,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:14"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3762,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3948,"sourceUnit":2807,"src":"63:70:14","symbolAliases":[{"foreign":{"id":3761,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"71:6:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPaycrest","contractDependencies":[],"contractKind":"interface","documentation":{"id":3763,"nodeType":"StructuredDocumentation","src":"134:130:14","text":" @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\n Factory and global config params"},"fullyImplemented":false,"id":3947,"linearizedBaseContracts":[3947],"name":"IPaycrest","nameLocation":"275:9:14","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3764,"nodeType":"StructuredDocumentation","src":"483:38:14","text":"@dev Emitted when deposit is made."},"eventSelector":"2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b","id":3780,"name":"Deposit","nameLocation":"532:7:14","nodeType":"EventDefinition","parameters":{"id":3779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3766,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"556:5:14","nodeType":"VariableDeclaration","scope":3780,"src":"540:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3765,"name":"address","nodeType":"ElementaryTypeName","src":"540:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3768,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"579:6:14","nodeType":"VariableDeclaration","scope":3780,"src":"563:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3767,"name":"uint256","nodeType":"ElementaryTypeName","src":"563:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3770,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"603:7:14","nodeType":"VariableDeclaration","scope":3780,"src":"587:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3769,"name":"bytes32","nodeType":"ElementaryTypeName","src":"587:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3772,"indexed":false,"mutability":"mutable","name":"rate","nameLocation":"620:4:14","nodeType":"VariableDeclaration","scope":3780,"src":"612:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3771,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3774,"indexed":false,"mutability":"mutable","name":"institutionCode","nameLocation":"634:15:14","nodeType":"VariableDeclaration","scope":3780,"src":"626:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3773,"name":"bytes32","nodeType":"ElementaryTypeName","src":"626:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3776,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"659:5:14","nodeType":"VariableDeclaration","scope":3780,"src":"651:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3775,"name":"bytes32","nodeType":"ElementaryTypeName","src":"651:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3778,"indexed":false,"mutability":"mutable","name":"messageHash","nameLocation":"673:11:14","nodeType":"VariableDeclaration","scope":3780,"src":"666:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3777,"name":"string","nodeType":"ElementaryTypeName","src":"666:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:146:14"},"src":"526:160:14"},{"anonymous":false,"documentation":{"id":3781,"nodeType":"StructuredDocumentation","src":"691:52:14","text":"@dev Emitted when aggregator settle transaction."},"eventSelector":"f26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c05326","id":3793,"name":"Settled","nameLocation":"754:7:14","nodeType":"EventDefinition","parameters":{"id":3792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3783,"indexed":false,"mutability":"mutable","name":"_splitOrderId","nameLocation":"770:13:14","nodeType":"VariableDeclaration","scope":3793,"src":"762:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3782,"name":"bytes32","nodeType":"ElementaryTypeName","src":"762:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3785,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"801:7:14","nodeType":"VariableDeclaration","scope":3793,"src":"785:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3784,"name":"bytes32","nodeType":"ElementaryTypeName","src":"785:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3787,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"818:5:14","nodeType":"VariableDeclaration","scope":3793,"src":"810:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3786,"name":"bytes32","nodeType":"ElementaryTypeName","src":"810:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3789,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nameLocation":"841:17:14","nodeType":"VariableDeclaration","scope":3793,"src":"825:33:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3788,"name":"address","nodeType":"ElementaryTypeName","src":"825:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3791,"indexed":false,"mutability":"mutable","name":"settlePercent","nameLocation":"867:13:14","nodeType":"VariableDeclaration","scope":3793,"src":"860:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3790,"name":"uint96","nodeType":"ElementaryTypeName","src":"860:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"761:120:14"},"src":"748:134:14"},{"anonymous":false,"documentation":{"id":3794,"nodeType":"StructuredDocumentation","src":"887:52:14","text":"@dev Emitted when aggregator refund transaction."},"eventSelector":"007c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f","id":3800,"name":"Refunded","nameLocation":"950:8:14","nodeType":"EventDefinition","parameters":{"id":3799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3796,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"975:7:14","nodeType":"VariableDeclaration","scope":3800,"src":"959:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3795,"name":"bytes32","nodeType":"ElementaryTypeName","src":"959:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3798,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"992:5:14","nodeType":"VariableDeclaration","scope":3800,"src":"984:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3797,"name":"bytes32","nodeType":"ElementaryTypeName","src":"984:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"958:40:14"},"src":"944:55:14"},{"anonymous":false,"documentation":{"id":3801,"nodeType":"StructuredDocumentation","src":"1004:48:14","text":"@dev Emitted when sender get therir rewards."},"eventSelector":"96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c2","id":3807,"name":"TransferSenderFee","nameLocation":"1063:17:14","nodeType":"EventDefinition","parameters":{"id":3806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3803,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1097:6:14","nodeType":"VariableDeclaration","scope":3807,"src":"1081:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3802,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3805,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1121:6:14","nodeType":"VariableDeclaration","scope":3807,"src":"1105:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3804,"name":"uint256","nodeType":"ElementaryTypeName","src":"1105:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1080:48:14"},"src":"1057:72:14"},{"anonymous":false,"documentation":{"id":3808,"nodeType":"StructuredDocumentation","src":"1134:59:14","text":"@dev Emitted when primary validator get therir rewards."},"eventSelector":"61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c2","id":3814,"name":"RewardValidator","nameLocation":"1204:15:14","nodeType":"EventDefinition","parameters":{"id":3813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3810,"indexed":true,"mutability":"mutable","name":"validator","nameLocation":"1236:9:14","nodeType":"VariableDeclaration","scope":3814,"src":"1220:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3809,"name":"address","nodeType":"ElementaryTypeName","src":"1220:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3812,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1263:6:14","nodeType":"VariableDeclaration","scope":3814,"src":"1247:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3811,"name":"uint256","nodeType":"ElementaryTypeName","src":"1247:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:51:14"},"src":"1198:73:14"},{"canonicalName":"IPaycrest.TransactionMetadata","id":3825,"members":[{"constant":false,"id":3816,"mutability":"mutable","name":"identifier","nameLocation":"1509:10:14","nodeType":"VariableDeclaration","scope":3825,"src":"1502:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3815,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1502:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3818,"mutability":"mutable","name":"institution","nameLocation":"1628:11:14","nodeType":"VariableDeclaration","scope":3825,"src":"1621:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3817,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1621:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3820,"mutability":"mutable","name":"name","nameLocation":"1747:4:14","nodeType":"VariableDeclaration","scope":3825,"src":"1740:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3819,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1740:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3822,"mutability":"mutable","name":"currency","nameLocation":"1866:8:14","nodeType":"VariableDeclaration","scope":3825,"src":"1859:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3821,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1859:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3824,"mutability":"mutable","name":"liquidityProviderID","nameLocation":"1986:19:14","nodeType":"VariableDeclaration","scope":3825,"src":"1978:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3823,"name":"uint256","nodeType":"ElementaryTypeName","src":"1978:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"TransactionMetadata","nameLocation":"1472:19:14","nodeType":"StructDefinition","scope":3947,"src":"1465:629:14","visibility":"public"},{"canonicalName":"IPaycrest.Order","id":3844,"members":[{"constant":false,"id":3827,"mutability":"mutable","name":"seller","nameLocation":"2131:6:14","nodeType":"VariableDeclaration","scope":3844,"src":"2123:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3826,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3829,"mutability":"mutable","name":"token","nameLocation":"2251:5:14","nodeType":"VariableDeclaration","scope":3844,"src":"2243:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3828,"name":"address","nodeType":"ElementaryTypeName","src":"2243:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3831,"mutability":"mutable","name":"senderFeeRecipient","nameLocation":"2371:18:14","nodeType":"VariableDeclaration","scope":3844,"src":"2363:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3830,"name":"address","nodeType":"ElementaryTypeName","src":"2363:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3833,"mutability":"mutable","name":"senderFee","nameLocation":"2407:9:14","nodeType":"VariableDeclaration","scope":3844,"src":"2399:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3832,"name":"uint256","nodeType":"ElementaryTypeName","src":"2399:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3835,"mutability":"mutable","name":"rate","nameLocation":"2433:4:14","nodeType":"VariableDeclaration","scope":3844,"src":"2426:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3834,"name":"uint96","nodeType":"ElementaryTypeName","src":"2426:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3837,"mutability":"mutable","name":"isFulfilled","nameLocation":"2551:11:14","nodeType":"VariableDeclaration","scope":3844,"src":"2546:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3836,"name":"bool","nodeType":"ElementaryTypeName","src":"2546:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3839,"mutability":"mutable","name":"refundAddress","nameLocation":"2695:13:14","nodeType":"VariableDeclaration","scope":3844,"src":"2687:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3838,"name":"address","nodeType":"ElementaryTypeName","src":"2687:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3841,"mutability":"mutable","name":"currentBPS","nameLocation":"2835:10:14","nodeType":"VariableDeclaration","scope":3844,"src":"2828:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3840,"name":"uint96","nodeType":"ElementaryTypeName","src":"2828:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3843,"mutability":"mutable","name":"amount","nameLocation":"2959:6:14","nodeType":"VariableDeclaration","scope":3844,"src":"2951:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3842,"name":"uint256","nodeType":"ElementaryTypeName","src":"2951:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Order","nameLocation":"2107:5:14","nodeType":"StructDefinition","scope":3947,"src":"2100:968:14","visibility":"public"},{"documentation":{"id":3845,"nodeType":"StructuredDocumentation","src":"3270:1232:14","text":"@notice lock sender `_amount` of `token` into Paycrest.\n Requirements:\n `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\n `_token` must be an acceptable token. @dev See {isTokenSupported}.\n `amount` must be greater than minimum\n `_refundable` refundable address must not be zero address\n @param _token address of the token.\n @param _amount amount in the decimal of `_token` above.\n @param _institutionCode institution code of the sender.\n @param _label reference of the sender.\n @param _rate rate at which sender intended to sell `_amount` of `_token`.\n @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\n @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\n @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\n @param messageHash hash must be the result of a hash operation for the verification to be secure. message\n @return _orderId the bytes20 which is the orderId"},"functionSelector":"2654ec7e","id":3868,"implemented":false,"kind":"function","modifiers":[],"name":"createOrder","nameLocation":"4516:11:14","nodeType":"FunctionDefinition","parameters":{"id":3864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3847,"mutability":"mutable","name":"_token","nameLocation":"4545:6:14","nodeType":"VariableDeclaration","scope":3868,"src":"4537:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3846,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3849,"mutability":"mutable","name":"_amount","nameLocation":"4570:7:14","nodeType":"VariableDeclaration","scope":3868,"src":"4562:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3848,"name":"uint256","nodeType":"ElementaryTypeName","src":"4562:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3851,"mutability":"mutable","name":"_institutionCode","nameLocation":"4596:16:14","nodeType":"VariableDeclaration","scope":3868,"src":"4588:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3850,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4588:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3853,"mutability":"mutable","name":"_label","nameLocation":"4630:6:14","nodeType":"VariableDeclaration","scope":3868,"src":"4622:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3852,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4622:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3855,"mutability":"mutable","name":"_rate","nameLocation":"4653:5:14","nodeType":"VariableDeclaration","scope":3868,"src":"4646:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3854,"name":"uint96","nodeType":"ElementaryTypeName","src":"4646:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3857,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"4677:19:14","nodeType":"VariableDeclaration","scope":3868,"src":"4669:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3856,"name":"address","nodeType":"ElementaryTypeName","src":"4669:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3859,"mutability":"mutable","name":"_senderFee","nameLocation":"4714:10:14","nodeType":"VariableDeclaration","scope":3868,"src":"4706:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3858,"name":"uint256","nodeType":"ElementaryTypeName","src":"4706:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3861,"mutability":"mutable","name":"_refundAddress","nameLocation":"4742:14:14","nodeType":"VariableDeclaration","scope":3868,"src":"4734:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3860,"name":"address","nodeType":"ElementaryTypeName","src":"4734:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3863,"mutability":"mutable","name":"messageHash","nameLocation":"4783:11:14","nodeType":"VariableDeclaration","scope":3868,"src":"4767:27:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":3862,"name":"string","nodeType":"ElementaryTypeName","src":"4767:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4527:268:14"},"returnParameters":{"id":3867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3866,"mutability":"mutable","name":"_orderId","nameLocation":"4822:8:14","nodeType":"VariableDeclaration","scope":3868,"src":"4814:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3865,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4814:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4813:18:14"},"scope":3947,"src":"4507:325:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3869,"nodeType":"StructuredDocumentation","src":"4838:891:14","text":"@notice settle transaction and distribute rewards accordingly.\n Requirements:\n {only aggregators call}.\n `_orderId` it must be less than total ids.\n `_orderId` it must be an open Id.\n `_primaryValidator` must have stake on the Paycrest staking platform.\n `_secondaryValidators` must have stake on the Paycrest staking platform.\n `amount` must be greater than minimum\n `_refundable` refundable address must not be zero address\n @param _orderId transaction Id.\n @param _label reference of the sender.\n @param _validators arrays of secondary validators.\n @param _liquidityProvider address of the liquidity provider.\n @param _settlePercent rate at which the transaction is settled.\n @param _isPartner is the liquidity provider a partner.\n @return return the status of transaction {bool}"},"functionSelector":"137764fb","id":3891,"implemented":false,"kind":"function","modifiers":[],"name":"settle","nameLocation":"5743:6:14","nodeType":"FunctionDefinition","parameters":{"id":3885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3871,"mutability":"mutable","name":"_splitOrderId","nameLocation":"5758:13:14","nodeType":"VariableDeclaration","scope":3891,"src":"5750:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3870,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5750:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3873,"mutability":"mutable","name":"_orderId","nameLocation":"5781:8:14","nodeType":"VariableDeclaration","scope":3891,"src":"5773:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3872,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5773:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3875,"mutability":"mutable","name":"_label","nameLocation":"5799:6:14","nodeType":"VariableDeclaration","scope":3891,"src":"5791:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3874,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5791:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3878,"mutability":"mutable","name":"_validators","nameLocation":"5826:11:14","nodeType":"VariableDeclaration","scope":3891,"src":"5807:30:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3876,"name":"address","nodeType":"ElementaryTypeName","src":"5807:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3877,"nodeType":"ArrayTypeName","src":"5807:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3880,"mutability":"mutable","name":"_liquidityProvider","nameLocation":"5847:18:14","nodeType":"VariableDeclaration","scope":3891,"src":"5839:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3879,"name":"address","nodeType":"ElementaryTypeName","src":"5839:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3882,"mutability":"mutable","name":"_settlePercent","nameLocation":"5874:14:14","nodeType":"VariableDeclaration","scope":3891,"src":"5867:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3881,"name":"uint64","nodeType":"ElementaryTypeName","src":"5867:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3884,"mutability":"mutable","name":"_isPartner","nameLocation":"5895:10:14","nodeType":"VariableDeclaration","scope":3891,"src":"5890:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3883,"name":"bool","nodeType":"ElementaryTypeName","src":"5890:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5749:157:14"},"returnParameters":{"id":3890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3891,"src":"5925:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3886,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5925:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3891,"src":"5934:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3888,"name":"address","nodeType":"ElementaryTypeName","src":"5934:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5924:18:14"},"scope":3947,"src":"5734:209:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3892,"nodeType":"StructuredDocumentation","src":"5949:383:14","text":"@notice refund to the specified refundable address.\n Requirements:\n {only aggregators call}.\n `_orderId` it must be less than total ids.\n `_orderId` it must be an open Id.\n `isFulfilled` must be false.\n @param _orderId transaction Id.\n @param _label reference of the sender.\n @return return the status of transaction {bool}"},"functionSelector":"e4683a79","id":3901,"implemented":false,"kind":"function","modifiers":[],"name":"refund","nameLocation":"6346:6:14","nodeType":"FunctionDefinition","parameters":{"id":3897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3894,"mutability":"mutable","name":"_orderId","nameLocation":"6361:8:14","nodeType":"VariableDeclaration","scope":3901,"src":"6353:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3893,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6353:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3896,"mutability":"mutable","name":"_label","nameLocation":"6379:6:14","nodeType":"VariableDeclaration","scope":3901,"src":"6371:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3895,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6371:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6352:34:14"},"returnParameters":{"id":3900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3901,"src":"6405:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3898,"name":"bool","nodeType":"ElementaryTypeName","src":"6405:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6404:6:14"},"scope":3947,"src":"6337:74:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3902,"nodeType":"StructuredDocumentation","src":"6417:152:14","text":"@notice get supported token from Paycrest.\n @param _token address of the token to check.\n @return return the status of `_token` {bool}"},"functionSelector":"75151b63","id":3909,"implemented":false,"kind":"function","modifiers":[],"name":"isTokenSupported","nameLocation":"6583:16:14","nodeType":"FunctionDefinition","parameters":{"id":3905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3904,"mutability":"mutable","name":"_token","nameLocation":"6608:6:14","nodeType":"VariableDeclaration","scope":3909,"src":"6600:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3903,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6599:16:14"},"returnParameters":{"id":3908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3909,"src":"6638:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3906,"name":"bool","nodeType":"ElementaryTypeName","src":"6638:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6637:6:14"},"scope":3947,"src":"6574:70:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3910,"nodeType":"StructuredDocumentation","src":"6650:70:14","text":"@notice get order details.\n @param _orderId transaction Id."},"functionSelector":"768c6ec0","id":3918,"implemented":false,"kind":"function","modifiers":[],"name":"getOrderInfo","nameLocation":"6734:12:14","nodeType":"FunctionDefinition","parameters":{"id":3913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3912,"mutability":"mutable","name":"_orderId","nameLocation":"6755:8:14","nodeType":"VariableDeclaration","scope":3918,"src":"6747:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3911,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6747:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6746:18:14"},"returnParameters":{"id":3917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3916,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3918,"src":"6787:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_memory_ptr","typeString":"struct IPaycrest.Order"},"typeName":{"id":3915,"nodeType":"UserDefinedTypeName","pathNode":{"id":3914,"name":"Order","nameLocations":["6787:5:14"],"nodeType":"IdentifierPath","referencedDeclaration":3844,"src":"6787:5:14"},"referencedDeclaration":3844,"src":"6787:5:14","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3844_storage_ptr","typeString":"struct IPaycrest.Order"}},"visibility":"internal"}],"src":"6786:14:14"},"scope":3947,"src":"6725:76:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3919,"nodeType":"StructuredDocumentation","src":"6807:204:14","text":"@notice get every rewards and address on Paycrest.\n @return protocolReward amount that will be taken in percentage on all trade.\n @return max_bps maximum amount in bps \"100% == 100_000\"."},"functionSelector":"b810c636","id":3926,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"7025:13:14","nodeType":"FunctionDefinition","parameters":{"id":3920,"nodeType":"ParameterList","parameters":[],"src":"7038:2:14"},"returnParameters":{"id":3925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3922,"mutability":"mutable","name":"protocolReward","nameLocation":"7079:14:14","nodeType":"VariableDeclaration","scope":3926,"src":"7072:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3921,"name":"uint64","nodeType":"ElementaryTypeName","src":"7072:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3924,"mutability":"mutable","name":"max_bps","nameLocation":"7112:7:14","nodeType":"VariableDeclaration","scope":3926,"src":"7104:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3923,"name":"uint256","nodeType":"ElementaryTypeName","src":"7104:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7062:63:14"},"scope":3947,"src":"7016:110:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3927,"nodeType":"StructuredDocumentation","src":"7132:89:14","text":"@notice get address of liquidity aggregator.\n @return address of `Aggregator`."},"functionSelector":"e8d6e0de","id":3932,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregatorAddress","nameLocation":"7235:20:14","nodeType":"FunctionDefinition","parameters":{"id":3928,"nodeType":"ParameterList","parameters":[],"src":"7255:2:14"},"returnParameters":{"id":3931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3932,"src":"7280:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3929,"name":"address","nodeType":"ElementaryTypeName","src":"7280:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7279:9:14"},"scope":3947,"src":"7226:63:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3933,"nodeType":"StructuredDocumentation","src":"7295:77:14","text":"@notice get aggregator public key.\n @return aggregator public key."},"functionSelector":"3ad59dbc","id":3938,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregator","nameLocation":"7386:13:14","nodeType":"FunctionDefinition","parameters":{"id":3934,"nodeType":"ParameterList","parameters":[],"src":"7399:2:14"},"returnParameters":{"id":3937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3938,"src":"7424:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3935,"name":"bytes","nodeType":"ElementaryTypeName","src":"7424:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7423:14:14"},"scope":3947,"src":"7377:61:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3939,"nodeType":"StructuredDocumentation","src":"7448:136:14","text":"@notice get address of sender whitelisting status.\n @param sender address of the sender.\n @return address of `status`."},"functionSelector":"d8e8de34","id":3946,"implemented":false,"kind":"function","modifiers":[],"name":"getWhitelistedStatus","nameLocation":"7598:20:14","nodeType":"FunctionDefinition","parameters":{"id":3942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3941,"mutability":"mutable","name":"sender","nameLocation":"7627:6:14","nodeType":"VariableDeclaration","scope":3946,"src":"7619:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3940,"name":"address","nodeType":"ElementaryTypeName","src":"7619:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7618:16:14"},"returnParameters":{"id":3945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3944,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3946,"src":"7657:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3943,"name":"bool","nodeType":"ElementaryTypeName","src":"7657:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7656:6:14"},"scope":3947,"src":"7589:74:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3948,"src":"265:7401:14","usedErrors":[]}],"src":"38:7629:14"},"id":14}},"contracts":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"OwnableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() { _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"IERC20Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":\"IERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"IERC20PermitUpgradeable":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.","kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":\"IERC20PermitUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"SafeERC20Upgradeable":{"abi":[],"devdoc":{"details":"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","kind":"dev","methods":{},"title":"SafeERC20","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220127eb4d243173cf9ac6ea39f737ccd926bf8210c3a138b2e7d70f40b43f8204564736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH31 0xB4D243173CF9AC6EA39F737CCD926BF8210C3A138B2E7D70F40B43F8204564 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"734:6366:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220127eb4d243173cf9ac6ea39f737ccd926bf8210c3a138b2e7d70f40b43f8204564736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH31 0xB4D243173CF9AC6EA39F737CCD926BF8210C3A138B2E7D70F40B43F8204564 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"734:6366:4:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_callOptionalReturn(contract IERC20Upgradeable,bytes memory)":"infinite","_callOptionalReturnBool(contract IERC20Upgradeable,bytes memory)":"infinite","forceApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeDecreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safeIncreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safePermit(contract IERC20PermitUpgradeable,address,address,uint256,uint256,uint8,bytes32,bytes32)":"infinite","safeTransfer(contract IERC20Upgradeable,address,uint256)":"infinite","safeTransferFrom(contract IERC20Upgradeable,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":\"SafeERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n /**\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n /**\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n */\\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n /**\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n }\\n\\n /**\\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n }\\n }\\n\\n /**\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\n */\\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n _callOptionalReturn(token, approvalCall);\\n }\\n }\\n\\n /**\\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n * Revert on invalid signature.\\n */\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n *\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n */\\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n // and not revert is the subcall reverts.\\n\\n (bool success, bytes memory returndata) = address(token).call(data);\\n return\\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220df70283ff728a1a88debad8b56cd6b31b858a143aff601e8f42a16699317e70d64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF PUSH17 0x283FF728A1A88DEBAD8B56CD6B31B858A1 NUMBER 0xAF 0xF6 ADD 0xE8 DELEGATECALL 0x2A AND PUSH10 0x9317E70D64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:9180:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220df70283ff728a1a88debad8b56cd6b31b858a143aff601e8f42a16699317e70d64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF PUSH17 0x283FF728A1A88DEBAD8B56CD6B31B858A1 NUMBER 0xAF 0xF6 ADD 0xE8 DELEGATECALL 0x2A AND PUSH10 0x9317E70D64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:9180:5:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"StringsUpgradeable":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3fb710f8a96e0067535a9f765fa3f89f59b6e06ba7186e35593d35f029926fa64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xFB PUSH18 0xF8A96E0067535A9F765FA3F89F59B6E06BA PUSH18 0x86E35593D35F029926FA64736F6C63430008 SLT STOP CALLER ","sourceMap":"242:2603:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3fb710f8a96e0067535a9f765fa3f89f59b6e06ba7186e35593d35f029926fa64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xFB PUSH18 0xF8A96E0067535A9F765FA3F89F59B6E06BA PUSH18 0x86E35593D35F029926FA64736F6C63430008 SLT STOP CALLER ","sourceMap":"242:2603:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":\"StringsUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ECDSAUpgradeable":{"abi":[],"devdoc":{"details":"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220717bce4509ab3c6d09fb52c5b26660a25a99945b32e0484c654da9bebac1986064736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x7BCE4509AB3C6D09FB52C5B26660A25A9994 JUMPDEST ORIGIN 0xE0 BASEFEE 0x4C PUSH6 0x4DA9BEBAC198 PUSH1 0x64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"380:8783:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220717bce4509ab3c6d09fb52c5b26660a25a99945b32e0484c654da9bebac1986064736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x7BCE4509AB3C6D09FB52C5B26660A25A9994 JUMPDEST ORIGIN 0xE0 BASEFEE 0x4C PUSH6 0x4DA9BEBAC198 PUSH1 0x64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"380:8783:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_throwError(enum ECDSAUpgradeable.RecoverError)":"infinite","recover(bytes32,bytes memory)":"infinite","recover(bytes32,bytes32,bytes32)":"infinite","recover(bytes32,uint8,bytes32,bytes32)":"infinite","toDataWithIntendedValidatorHash(address,bytes memory)":"infinite","toEthSignedMessageHash(bytes memory)":"infinite","toEthSignedMessageHash(bytes32)":"infinite","toTypedDataHash(bytes32,bytes32)":"infinite","tryRecover(bytes32,bytes memory)":"infinite","tryRecover(bytes32,bytes32,bytes32)":"infinite","tryRecover(bytes32,uint8,bytes32,bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":\"ECDSAUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n mstore(0x1c, hash)\\n message := keccak256(0x00, 0x3c)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n mstore(add(ptr, 0x02), domainSeparator)\\n mstore(add(ptr, 0x22), structHash)\\n data := keccak256(ptr, 0x42)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n * `validator` and `data` according to the version 0 of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n }\\n}\\n\",\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"MathUpgradeable":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b19238f22d888be15246afd45704547bf692f3a8d19f34db13095fb48eddd5264736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x19238F22D888BE15246AFD45 PUSH17 0x4547BF692F3A8D19F34DB13095FB48EDDD MSTORE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12593:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b19238f22d888be15246afd45704547bf692f3a8d19f34db13095fb48eddd5264736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x19238F22D888BE15246AFD45 PUSH17 0x4547BF692F3A8D19F34DB13095FB48EDDD MSTORE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12593:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum MathUpgradeable.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum MathUpgradeable.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum MathUpgradeable.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum MathUpgradeable.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum MathUpgradeable.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":\"MathUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"SignedMathUpgradeable":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70ce3cff074bb9f2b399f4851e008094b94d7fe429bd3afbf9c6f170d3375ce64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC 0xE3 0xCF CREATE PUSH21 0xBB9F2B399F4851E008094B94D7FE429BD3AFBF9C6F OR 0xD CALLER PUSH22 0xCE64736F6C6343000812003300000000000000000000 ","sourceMap":"215:1058:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70ce3cff074bb9f2b399f4851e008094b94d7fe429bd3afbf9c6f170d3375ce64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC 0xE3 0xCF CREATE PUSH21 0xBB9F2B399F4851E008094B94D7FE429BD3AFBF9C6F OR 0xD CALLER PUSH22 0xCE64736F6C6343000812003300000000000000000000 ","sourceMap":"215:1058:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":\"SignedMathUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/Paycrest.sol":{"Paycrest":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"institutionCode","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"string","name":"messageHash","type":"string"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"protocolFee","type":"uint64"}],"name":"PaycrestFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardValidator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"SetAggregator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SettingManagerBool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"uint96","name":"settlePercent","type":"uint96"}],"name":"Settled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSenderFee","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_institutionCode","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"uint96","name":"_rate","type":"uint96"},{"internalType":"address","name":"_senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"_senderFee","type":"uint256"},{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"string","name":"messageHash","type":"string"}],"name":"createOrder","outputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAggregator","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"name":"getOrderInfo","outputs":[{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"senderFee","type":"uint256"},{"internalType":"uint96","name":"rate","type":"uint96"},{"internalType":"bool","name":"isFulfilled","type":"bool"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint96","name":"currentBPS","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPaycrest.Order","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"code","type":"bytes32"}],"name":"getSupportedInstitutionName","outputs":[{"components":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"bytes32","name":"currency","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.InstitutionByCode","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"}],"name":"getSupportedInstitutions","outputs":[{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usdc","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"}],"name":"refund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"institutions","type":"tuple[]"}],"name":"setSupportedInstitutions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"settingManagerBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"address[]","name":"_validators","type":"address[]"},{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint64","name":"_settlePercent","type":"uint64"},{"internalType":"bool","name":"_isPartner","type":"bool"}],"name":"settle","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"updateProtocolAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"updateProtocolAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_protocolFeePercent","type":"uint64"}],"name":"updateProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)":{"details":"Emitted when deposit is made."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Refunded(bytes32,bytes32)":{"details":"Emitted when aggregator refund transaction."},"RewardValidator(address,uint256)":{"details":"Emitted when primary validator get therir rewards."},"Settled(bytes32,bytes32,bytes32,address,uint96)":{"details":"Emitted when aggregator settle transaction."},"TransferSenderFee(address,uint256)":{"details":"Emitted when sender get therir rewards."}},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"details":"See {createOrder-IPaycrest}. "},"getAggregator()":{"details":"See {getAggregator-IPaycrest}. "},"getAggregatorAddress()":{"details":"See {getAggregatorAddress-IPaycrest}. "},"getFeeDetails()":{"details":"See {getFeeDetails-IPaycrest}. "},"getOrderInfo(bytes32)":{"details":"See {getOrderInfo-IPaycrest}. "},"getSupportedInstitutionName(bytes32)":{"details":"See {getSupportedInstitutionName-IPaycrest}. "},"getWhitelistedStatus(address)":{"details":"See {getWhitelistedStatus-IPaycrest}. "},"isTokenSupported(address)":{"details":"See {isTokenSupported-IPaycrest}. "},"owner()":{"details":"Returns the address of the current owner."},"refund(bytes32,bytes32)":{"details":"See {refund-IPaycrest}. "},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":{"details":"See {settle-IPaycrest}. "},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2852":{"entryPoint":null,"id":2852,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_281":{"entryPoint":40,"id":281,"parameterSlots":0,"returnSlots":0},"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack":{"entryPoint":334,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":420,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":373,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":437,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":238,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":407,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a":{"entryPoint":255,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1638:15","statements":[{"body":{"nodeType":"YulBlock","src":"103:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"120:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"125:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"113:6:15"},"nodeType":"YulFunctionCall","src":"113:19:15"},"nodeType":"YulExpressionStatement","src":"113:19:15"},{"nodeType":"YulAssignment","src":"141:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"160:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"165:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"156:3:15"},"nodeType":"YulFunctionCall","src":"156:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"141:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"75:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"80:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"91:11:15","type":""}],"src":"7:169:15"},{"body":{"nodeType":"YulBlock","src":"288:120:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"310:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"318:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"306:3:15"},"nodeType":"YulFunctionCall","src":"306:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"322:34:15","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"299:6:15"},"nodeType":"YulFunctionCall","src":"299:58:15"},"nodeType":"YulExpressionStatement","src":"299:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"378:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"386:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"374:3:15"},"nodeType":"YulFunctionCall","src":"374:15:15"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"391:9:15","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"367:6:15"},"nodeType":"YulFunctionCall","src":"367:34:15"},"nodeType":"YulExpressionStatement","src":"367:34:15"}]},"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"280:6:15","type":""}],"src":"182:226:15"},{"body":{"nodeType":"YulBlock","src":"560:220:15","statements":[{"nodeType":"YulAssignment","src":"570:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"636:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"641:2:15","type":"","value":"39"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"577:58:15"},"nodeType":"YulFunctionCall","src":"577:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"570:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"742:3:15"}],"functionName":{"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nodeType":"YulIdentifier","src":"653:88:15"},"nodeType":"YulFunctionCall","src":"653:93:15"},"nodeType":"YulExpressionStatement","src":"653:93:15"},{"nodeType":"YulAssignment","src":"755:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"766:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"771:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"762:3:15"},"nodeType":"YulFunctionCall","src":"762:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"755:3:15"}]}]},"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"548:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"556:3:15","type":""}],"src":"414:366:15"},{"body":{"nodeType":"YulBlock","src":"957:248:15","statements":[{"nodeType":"YulAssignment","src":"967:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"979:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"990:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"975:3:15"},"nodeType":"YulFunctionCall","src":"975:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"967:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1014:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1025:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1010:3:15"},"nodeType":"YulFunctionCall","src":"1010:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1033:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"1039:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1029:3:15"},"nodeType":"YulFunctionCall","src":"1029:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1003:6:15"},"nodeType":"YulFunctionCall","src":"1003:47:15"},"nodeType":"YulExpressionStatement","src":"1003:47:15"},{"nodeType":"YulAssignment","src":"1059:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1193:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1067:124:15"},"nodeType":"YulFunctionCall","src":"1067:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1059:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"937:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"952:4:15","type":""}],"src":"786:419:15"},{"body":{"nodeType":"YulBlock","src":"1254:43:15","statements":[{"nodeType":"YulAssignment","src":"1264:27:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1279:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"1286:4:15","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1275:3:15"},"nodeType":"YulFunctionCall","src":"1275:16:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1264:7:15"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1236:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1246:7:15","type":""}],"src":"1211:86:15"},{"body":{"nodeType":"YulBlock","src":"1364:51:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1381:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1402:5:15"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"1386:15:15"},"nodeType":"YulFunctionCall","src":"1386:22:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1374:6:15"},"nodeType":"YulFunctionCall","src":"1374:35:15"},"nodeType":"YulExpressionStatement","src":"1374:35:15"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1352:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1359:3:15","type":""}],"src":"1303:112:15"},{"body":{"nodeType":"YulBlock","src":"1515:120:15","statements":[{"nodeType":"YulAssignment","src":"1525:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1537:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1548:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1533:3:15"},"nodeType":"YulFunctionCall","src":"1533:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1525:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1601:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1614:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1625:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1610:3:15"},"nodeType":"YulFunctionCall","src":"1610:17:15"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"1561:39:15"},"nodeType":"YulFunctionCall","src":"1561:67:15"},"nodeType":"YulExpressionStatement","src":"1561:67:15"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1487:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1499:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1510:4:15","type":""}],"src":"1421:214:15"}]},"contents":"{\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is initi\")\n\n mstore(add(memPtr, 32), \"alizing\")\n\n }\n\n function abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 39)\n store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d2565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000175565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620000ec5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e39190620001b5565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015d602783620000ee565b91506200016a82620000ff565b604082019050919050565b6000602082019050818103600083015262000190816200014e565b9050919050565b600060ff82169050919050565b620001af8162000197565b82525050565b6000602082019050620001cc6000830184620001a4565b92915050565b613e2b80620001e26000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806387490d86116100b8578063cb79455b1161007c578063cb79455b1461034e578063d8e8de341461036a578063d9caed121461039a578063e4683a79146103b6578063e8d6e0de146103e6578063f2fde38b1461040457610137565b806387490d86146102a95780638da5cb5b146102d957806399e3c0b4146102f7578063b810c63614610313578063c4d66de81461033257610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb14610271578063846307361461028d57610137565b8063026213381461013c578063137764fb1461016c5780632654ec7e1461019d57806332200882146101cd5780633ad59dbc146101e9575b600080fd5b610156600480360381019061015191906124c1565b610420565b60405161016391906125db565b60405180910390f35b61018660048036038101906101819190612738565b61055e565b604051610194929190612818565b60405180910390f35b6101b760048036038101906101b29190612911565b610959565b6040516101c491906129fc565b60405180910390f35b6101e760048036038101906101e29190612bbb565b610e21565b005b6101f1610f35565b6040516101fe9190612c96565b60405180910390f35b61020f610fc7565b005b61022b60048036038101906102269190612cb8565b610fdb565b6040516102389190612cf4565b60405180910390f35b61025b600480360381019061025691906124c1565b611031565b6040516102689190612e02565b60405180910390f35b61028b60048036038101906102869190612e1e565b611262565b005b6102a760048036038101906102a29190612e5e565b6113af565b005b6102c360048036038101906102be91906124c1565b61141a565b6040516102d09190612eba565b60405180910390f35b6102e161145b565b6040516102ee9190612ed5565b60405180910390f35b610311600480360381019061030c9190612ef0565b611485565b005b61031b61163a565b604051610329929190612f61565b60405180910390f35b61034c60048036038101906103479190612cb8565b61165f565b005b61036860048036038101906103639190612fe0565b61182b565b005b610384600480360381019061037f9190612cb8565b611882565b6040516103919190612cf4565b60405180910390f35b6103b460048036038101906103af919061302d565b6118d8565b005b6103d060048036038101906103cb9190613080565b611964565b6040516103dd9190612cf4565b60405180910390f35b6103ee611c11565b6040516103fb9190612ed5565b60405180910390f35b61041e60048036038101906104199190612cb8565b611c3b565b005b60606000609d6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049d57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610457565b50505050905060008151905060008167ffffffffffffffff8111156104c5576104c4612a28565b5b6040519080825280602002602001820160405280156104fe57816020015b6104eb61235b565b8152602001906001900390816104e35790505b50905060005b828110156105525783818151811061051f5761051e6130c0565b5b602002602001015182828151811061053a576105396130c0565b5b60200260200101819052508080600101915050610504565b50809350505050919050565b600080606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e89061314c565b60405180910390fd5b609f60008a8152602001908152602001600020600401600c9054906101000a900460ff1615610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064c906131b8565b60405180910390fd5b6000609f60008b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff16609f60008c815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff166106d79190613207565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600061071c8b8767ffffffffffffffff1687611cbe565b90506000609f60008d815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036107bb576001609f60008d8152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f60008d81526020019081526020016000206003015411156107ba576107b98b611dcf565b5b5b60008160000151111561086e578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606660089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b8152600401610829929190613247565b6020604051808303816000875af1158015610848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c9190613285565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b81526004016108ad929190613247565b6020604051808303816000875af11580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190613285565b508673ffffffffffffffffffffffffffffffffffffffff168b7ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268e8d8a60405161093c939291906132ed565b60405180910390a38a829350935050509850989650505050505050565b60006109688b8b86898d611f23565b606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168b6109979190613324565b6109a19190613395565b8511156109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90613412565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610a2093929190613432565b6020604051808303816000875af1158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a639190613285565b5060a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610ab490613469565b91905055503360a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610b0b929190613247565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b815250609f600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610e0b95949392919061351e565b60405180910390a49a9950505050505050505050565b610e29612132565b60008151905060005b81811015610f2f57609d6000858152602001908152602001600020838281518110610e6057610e5f6130c0565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610ec557610ec46130c0565b5b602002602001015160200151815260200185815250609e6000858481518110610ef157610ef06130c0565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610e32565b50505050565b606060688054610f449061359b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f709061359b565b8015610fbd5780601f10610f9257610100808354040283529160200191610fbd565b820191906000526020600020905b815481529060010190602001808311610fa057829003601f168201915b5050505050905090565b610fcf612132565b610fd960006121b0565b565b6000609b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61103961237b565b609f6000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b61126a612132565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090613618565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113425780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113ab5780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113b7612132565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a98160405161140f9190613638565b60405180910390a150565b61142261243d565b609e6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61148d612132565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390613618565b60405180910390fd5b7f746f6b656e000000000000000000000000000000000000000000000000000000830361157b5780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115fa5780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161162d93929190613653565b60405180910390a1505050565b600080606660009054906101000a900467ffffffffffffffff16606554915091509091565b60008060019054906101000a900460ff161590508080156116905750600160008054906101000a900460ff1660ff16105b806116bd575061169f30612276565b1580156116bc5750600160008054906101000a900460ff1660ff16145b5b6116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f3906136fc565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611739576001600060016101000a81548160ff0219169083151502179055505b6001609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506117ce612299565b80156118275760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161181e9190613764565b60405180910390a15b5050565b611833612132565b81816068918261184492919061392c565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051611876929190613a29565b60405180910390a15050565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118e0612132565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161191b929190613247565b6020604051808303816000875af115801561193a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195e9190613285565b50505050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed9061314c565b60405180910390fd5b609f6000848152602001908152602001600020600401600c9054906101000a900460ff1615611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a51906131b8565b60405180910390fd5b6001609f6000858152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb609f600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609f6000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611b8c929190613247565b6020604051808303816000875af1158015611bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcf9190613285565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611bff91906129fc565b60405180910390a26001905092915050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c43612132565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca990613abf565b60405180910390fd5b611cbb816121b0565b50565b611cc661245d565b6000609f6000868152602001908152602001600020600601549050609f60008681526020019081526020016000206003015481611d039190613adf565b9050606554846bffffffffffffffffffffffff1682611d229190613324565b611d2c9190613395565b826020018181525050606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168360200151611d689190613324565b611d729190613395565b82600001818152505081600001518260200151611d8f9190613adf565b8260200181815250508215611dc757816000015182602001818151611db49190613b13565b9150818152505060008260000181815250505b509392505050565b6000609f600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000609f6000848152602001908152602001600020600301549050609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611e96929190613247565b6020604051808303816000875af1158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190613285565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b609b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa690613b93565b60405180910390fd5b60008411611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe990613bff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205890613c6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c790613c6b565b60405180910390fd5b6000801b609e6000838152602001908152602001600020600001540361212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212290613cd7565b60405180910390fd5b5050505050565b61213a6122f2565b73ffffffffffffffffffffffffffffffffffffffff1661215861145b565b73ffffffffffffffffffffffffffffffffffffffff16146121ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a590613d43565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df90613dd5565b60405180910390fd5b6122f06122fa565b565b600033905090565b600060019054906101000a900460ff16612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234090613dd5565b60405180910390fd5b6123596123546122f2565b6121b0565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61249e8161248b565b81146124a957600080fd5b50565b6000813590506124bb81612495565b92915050565b6000602082840312156124d7576124d6612481565b5b60006124e5848285016124ac565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125238161248b565b82525050565b60408201600082015161253f600085018261251a565b506020820151612552602085018261251a565b50505050565b60006125648383612529565b60408301905092915050565b6000602082019050919050565b6000612588826124ee565b61259281856124f9565b935061259d8361250a565b8060005b838110156125ce5781516125b58882612558565b97506125c083612570565b9250506001810190506125a1565b5085935050505092915050565b600060208201905081810360008301526125f5818461257d565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612622576126216125fd565b5b8235905067ffffffffffffffff81111561263f5761263e612602565b5b60208301915083602082028301111561265b5761265a612607565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061268d82612662565b9050919050565b61269d81612682565b81146126a857600080fd5b50565b6000813590506126ba81612694565b92915050565b600067ffffffffffffffff82169050919050565b6126dd816126c0565b81146126e857600080fd5b50565b6000813590506126fa816126d4565b92915050565b60008115159050919050565b61271581612700565b811461272057600080fd5b50565b6000813590506127328161270c565b92915050565b60008060008060008060008060e0898b03121561275857612757612481565b5b60006127668b828c016124ac565b98505060206127778b828c016124ac565b97505060406127888b828c016124ac565b965050606089013567ffffffffffffffff8111156127a9576127a8612486565b5b6127b58b828c0161260c565b955095505060806127c88b828c016126ab565b93505060a06127d98b828c016126eb565b92505060c06127ea8b828c01612723565b9150509295985092959890939650565b6128038161248b565b82525050565b61281281612682565b82525050565b600060408201905061282d60008301856127fa565b61283a6020830184612809565b9392505050565b6000819050919050565b61285481612841565b811461285f57600080fd5b50565b6000813590506128718161284b565b92915050565b60006bffffffffffffffffffffffff82169050919050565b61289881612877565b81146128a357600080fd5b50565b6000813590506128b58161288f565b92915050565b60008083601f8401126128d1576128d06125fd565b5b8235905067ffffffffffffffff8111156128ee576128ed612602565b5b60208301915083600182028301111561290a57612909612607565b5b9250929050565b6000806000806000806000806000806101208b8d03121561293557612934612481565b5b60006129438d828e016126ab565b9a505060206129548d828e01612862565b99505060406129658d828e016124ac565b98505060606129768d828e016124ac565b97505060806129878d828e016128a6565b96505060a06129988d828e016126ab565b95505060c06129a98d828e01612862565b94505060e06129ba8d828e016126ab565b9350506101008b013567ffffffffffffffff8111156129dc576129db612486565b5b6129e88d828e016128bb565b92509250509295989b9194979a5092959850565b6000602082019050612a1160008301846127fa565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a6082612a17565b810181811067ffffffffffffffff82111715612a7f57612a7e612a28565b5b80604052505050565b6000612a92612477565b9050612a9e8282612a57565b919050565b600067ffffffffffffffff821115612abe57612abd612a28565b5b602082029050602081019050919050565b600080fd5b600060408284031215612aea57612ae9612acf565b5b612af46040612a88565b90506000612b04848285016124ac565b6000830152506020612b18848285016124ac565b60208301525092915050565b6000612b37612b3284612aa3565b612a88565b90508083825260208201905060408402830185811115612b5a57612b59612607565b5b835b81811015612b835780612b6f8882612ad4565b845260208401935050604081019050612b5c565b5050509392505050565b600082601f830112612ba257612ba16125fd565b5b8135612bb2848260208601612b24565b91505092915050565b60008060408385031215612bd257612bd1612481565b5b6000612be0858286016124ac565b925050602083013567ffffffffffffffff811115612c0157612c00612486565b5b612c0d85828601612b8d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c51578082015181840152602081019050612c36565b60008484015250505050565b6000612c6882612c17565b612c728185612c22565b9350612c82818560208601612c33565b612c8b81612a17565b840191505092915050565b60006020820190508181036000830152612cb08184612c5d565b905092915050565b600060208284031215612cce57612ccd612481565b5b6000612cdc848285016126ab565b91505092915050565b612cee81612700565b82525050565b6000602082019050612d096000830184612ce5565b92915050565b612d1881612682565b82525050565b612d2781612841565b82525050565b612d3681612877565b82525050565b612d4581612700565b82525050565b61012082016000820151612d626000850182612d0f565b506020820151612d756020850182612d0f565b506040820151612d886040850182612d0f565b506060820151612d9b6060850182612d1e565b506080820151612dae6080850182612d2d565b5060a0820151612dc160a0850182612d3c565b5060c0820151612dd460c0850182612d0f565b5060e0820151612de760e0850182612d2d565b50610100820151612dfc610100850182612d1e565b50505050565b600061012082019050612e186000830184612d4b565b92915050565b60008060408385031215612e3557612e34612481565b5b6000612e43858286016124ac565b9250506020612e54858286016126ab565b9150509250929050565b600060208284031215612e7457612e73612481565b5b6000612e82848285016126eb565b91505092915050565b604082016000820151612ea1600085018261251a565b506020820151612eb4602085018261251a565b50505050565b6000604082019050612ecf6000830184612e8b565b92915050565b6000602082019050612eea6000830184612809565b92915050565b600080600060608486031215612f0957612f08612481565b5b6000612f17868287016124ac565b9350506020612f28868287016126ab565b9250506040612f3986828701612723565b9150509250925092565b612f4c816126c0565b82525050565b612f5b81612841565b82525050565b6000604082019050612f766000830185612f43565b612f836020830184612f52565b9392505050565b60008083601f840112612fa057612f9f6125fd565b5b8235905067ffffffffffffffff811115612fbd57612fbc612602565b5b602083019150836001820283011115612fd957612fd8612607565b5b9250929050565b60008060208385031215612ff757612ff6612481565b5b600083013567ffffffffffffffff81111561301557613014612486565b5b61302185828601612f8a565b92509250509250929050565b60008060006060848603121561304657613045612481565b5b6000613054868287016126ab565b9350506020613065868287016126ab565b925050604061307686828701612862565b9150509250925092565b6000806040838503121561309757613096612481565b5b60006130a5858286016124ac565b92505060206130b6858286016124ac565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b6000613136600e836130ef565b915061314182613100565b602082019050919050565b6000602082019050818103600083015261316581613129565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b60006131a2600e836130ef565b91506131ad8261316c565b602082019050919050565b600060208201905081810360008301526131d181613195565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061321282612877565b915061321d83612877565b925082820390506bffffffffffffffffffffffff811115613241576132406131d8565b5b92915050565b600060408201905061325c6000830185612809565b6132696020830184612f52565b9392505050565b60008151905061327f8161270c565b92915050565b60006020828403121561329b5761329a612481565b5b60006132a984828501613270565b91505092915050565b6000819050919050565b60006132d76132d26132cd846126c0565b6132b2565b612877565b9050919050565b6132e7816132bc565b82525050565b600060608201905061330260008301866127fa565b61330f60208301856127fa565b61331c60408301846132de565b949350505050565b600061332f82612841565b915061333a83612841565b925082820261334881612841565b9150828204841483151761335f5761335e6131d8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133a082612841565b91506133ab83612841565b9250826133bb576133ba613366565b5b828204905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b60006133fc6010836130ef565b9150613407826133c6565b602082019050919050565b6000602082019050818103600083015261342b816133ef565b9050919050565b60006060820190506134476000830186612809565b6134546020830185612809565b6134616040830184612f52565b949350505050565b600061347482612841565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134a6576134a56131d8565b5b600182019050919050565b60006134cc6134c76134c284612877565b6132b2565b612841565b9050919050565b6134dc816134b1565b82525050565b82818337600083830152505050565b60006134fd83856130ef565b935061350a8385846134e2565b61351383612a17565b840190509392505050565b600060808201905061353360008301886134d3565b61354060208301876127fa565b61354d60408301866127fa565b81810360608301526135608184866134f1565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135b357607f821691505b6020821081036135c6576135c561356c565b5b50919050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b60006136026016836130ef565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b600060208201905061364d6000830184612f43565b92915050565b600060608201905061366860008301866127fa565b6136756020830185612809565b6136826040830184612ce5565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006136e6602e836130ef565b91506136f18261368a565b604082019050919050565b60006020820190508181036000830152613715816136d9565b9050919050565b6000819050919050565b600060ff82169050919050565b600061374e6137496137448461371c565b6132b2565b613726565b9050919050565b61375e81613733565b82525050565b60006020820190506137796000830184613755565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026137ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826137af565b6137f686836137af565b95508019841693508086168417925050509392505050565b600061382961382461381f84612841565b6132b2565b612841565b9050919050565b6000819050919050565b6138438361380e565b61385761384f82613830565b8484546137bc565b825550505050565b600090565b61386c61385f565b61387781848461383a565b505050565b5b8181101561389b57613890600082613864565b60018101905061387d565b5050565b601f8211156138e0576138b18161378a565b6138ba8461379f565b810160208510156138c9578190505b6138dd6138d58561379f565b83018261387c565b50505b505050565b600082821c905092915050565b6000613903600019846008026138e5565b1980831691505092915050565b600061391c83836138f2565b9150826002028217905092915050565b613936838361377f565b67ffffffffffffffff81111561394f5761394e612a28565b5b613959825461359b565b61396482828561389f565b6000601f8311600181146139935760008415613981578287013590505b61398b8582613910565b8655506139f3565b601f1984166139a18661378a565b60005b828110156139c9578489013582556001820191506020850194506020810190506139a4565b868310156139e657848901356139e2601f8916826138f2565b8355505b6001600288020188555050505b50505050505050565b6000613a088385612c22565b9350613a158385846134e2565b613a1e83612a17565b840190509392505050565b60006020820190508181036000830152613a448184866139fc565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613aa96026836130ef565b9150613ab482613a4d565b604082019050919050565b60006020820190508181036000830152613ad881613a9c565b9050919050565b6000613aea82612841565b9150613af583612841565b9250828203905081811115613b0d57613b0c6131d8565b5b92915050565b6000613b1e82612841565b9150613b2983612841565b9250828201905080821115613b4157613b406131d8565b5b92915050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613b7d6011836130ef565b9150613b8882613b47565b602082019050919050565b60006020820190508181036000830152613bac81613b70565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613be9600c836130ef565b9150613bf482613bb3565b602082019050919050565b60006020820190508181036000830152613c1881613bdc565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613c556010836130ef565b9150613c6082613c1f565b602082019050919050565b60006020820190508181036000830152613c8481613c48565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613cc16016836130ef565b9150613ccc82613c8b565b602082019050919050565b60006020820190508181036000830152613cf081613cb4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d2d6020836130ef565b9150613d3882613cf7565b602082019050919050565b60006020820190508181036000830152613d5c81613d20565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613dbf602b836130ef565b9150613dca82613d63565b604082019050919050565b60006020820190508181036000830152613dee81613db2565b905091905056fea264697066735822122095bbf3973ced310cd8777c31ea538f4beed34d4fea5f26c4beee1d63073174ea64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x22 PUSH3 0x28 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x7B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x72 SWAP1 PUSH3 0x175 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP1 AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ PUSH3 0xEC JUMPI PUSH1 0xFF PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0xFF PUSH1 0x40 MLOAD PUSH3 0xE3 SWAP2 SWAP1 PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C697A696E6700000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15D PUSH1 0x27 DUP4 PUSH3 0xEE JUMP JUMPDEST SWAP2 POP PUSH3 0x16A DUP3 PUSH3 0xFF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x190 DUP2 PUSH3 0x14E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1AF DUP2 PUSH3 0x197 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1CC PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x1A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3E2B DUP1 PUSH3 0x1E2 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x87490D86 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xCB79455B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xD8E8DE34 EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0xE4683A79 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xE8D6E0DE EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x404 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x87490D86 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xB810C636 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x332 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x75151B63 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x768C6EC0 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x84630736 EQ PUSH2 0x28D JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x2621338 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x137764FB EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x2654EC7E EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x32200882 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x3AD59DBC EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x25DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x2738 JUMP JUMPDEST PUSH2 0x55E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x194 SWAP3 SWAP2 SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B2 SWAP2 SWAP1 PUSH2 0x2911 JUMP JUMPDEST PUSH2 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x29FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E2 SWAP2 SWAP1 PUSH2 0x2BBB JUMP JUMPDEST PUSH2 0xE21 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F1 PUSH2 0xF35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2C96 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH2 0xFC7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0xFDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x2CF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x1031 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x2E02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x28B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x1262 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x2E5E JUMP JUMPDEST PUSH2 0x13AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x141A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x2EBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E1 PUSH2 0x145B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2EE SWAP2 SWAP1 PUSH2 0x2ED5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x311 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x2EF0 JUMP JUMPDEST PUSH2 0x1485 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31B PUSH2 0x163A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x329 SWAP3 SWAP2 SWAP1 PUSH2 0x2F61 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x165F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x363 SWAP2 SWAP1 PUSH2 0x2FE0 JUMP JUMPDEST PUSH2 0x182B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x384 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37F SWAP2 SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x1882 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x391 SWAP2 SWAP1 PUSH2 0x2CF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3AF SWAP2 SWAP1 PUSH2 0x302D JUMP JUMPDEST PUSH2 0x18D8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x3080 JUMP JUMPDEST PUSH2 0x1964 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x2CF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH2 0x1C11 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP2 SWAP1 PUSH2 0x2ED5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x1C3B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x9D PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x49D JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x457 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C5 JUMPI PUSH2 0x4C4 PUSH2 0x2A28 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x4EB PUSH2 0x235B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x4E3 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x552 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x51F JUMPI PUSH2 0x51E PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53A JUMPI PUSH2 0x539 PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x504 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E8 SWAP1 PUSH2 0x314C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x655 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x64C SWAP1 PUSH2 0x31B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x9F PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x71C DUP12 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x1CBE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7BB JUMPI PUSH1 0x1 PUSH1 0x9F PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD GT ISZERO PUSH2 0x7BA JUMPI PUSH2 0x7B9 DUP12 PUSH2 0x1DCF JUMP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD GT ISZERO PUSH2 0x86E JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x66 PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x829 SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x848 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x86C SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8AD SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8F0 SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH32 0xF26DE978CBAEA68EA699627155A10AD53DF3321B0F95A08264C0CFD6D4C05326 DUP15 DUP14 DUP11 PUSH1 0x40 MLOAD PUSH2 0x93C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x32ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP11 DUP3 SWAP4 POP SWAP4 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x968 DUP12 DUP12 DUP7 DUP10 DUP14 PUSH2 0x1F23 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP12 PUSH2 0x997 SWAP2 SWAP1 PUSH2 0x3324 JUMP JUMPDEST PUSH2 0x9A1 SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST DUP6 GT ISZERO PUSH2 0x9E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DA SWAP1 PUSH2 0x3412 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP14 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA20 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3432 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA63 SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP PUSH1 0xA0 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0xAB4 SWAP1 PUSH2 0x3469 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP CALLER PUSH1 0xA0 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB0B SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x65 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP1 DUP11 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C205F90C01160D42994A0EB521810056D94BB82A1FCB038D7179C4158A1F15B DUP11 DUP14 DUP14 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xE0B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x351E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE29 PUSH2 0x2132 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF2F JUMPI PUSH1 0x9D PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE60 JUMPI PUSH2 0xE5F PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEC5 JUMPI PUSH2 0xEC4 PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9E PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xEF1 JUMPI PUSH2 0xEF0 PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xE32 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x68 DUP1 SLOAD PUSH2 0xF44 SWAP1 PUSH2 0x359B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF70 SWAP1 PUSH2 0x359B JUMP JUMPDEST DUP1 ISZERO PUSH2 0xFBD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF92 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFBD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xFA0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFCF PUSH2 0x2132 JUMP JUMPDEST PUSH2 0xFD9 PUSH1 0x0 PUSH2 0x21B0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9B PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1039 PUSH2 0x237B JUMP JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x126A PUSH2 0x2132 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12D0 SWAP1 PUSH2 0x3618 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x1342 JUMPI DUP1 PUSH1 0x66 PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x13AB JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x13B7 PUSH2 0x2132 JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC8CA786C100BC62A0DFFBE768B5F0B770D84E8604C5DE54B54197B9066BB42A9 DUP2 PUSH1 0x40 MLOAD PUSH2 0x140F SWAP2 SWAP1 PUSH2 0x3638 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1422 PUSH2 0x243D JUMP JUMPDEST PUSH1 0x9E PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x148D PUSH2 0x2132 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x14FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14F3 SWAP1 PUSH2 0x3618 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x157B JUMPI DUP1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x15FA JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x162D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3653 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x65 SLOAD SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1690 JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND LT JUMPDEST DUP1 PUSH2 0x16BD JUMPI POP PUSH2 0x169F ADDRESS PUSH2 0x2276 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x16BC JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ JUMPDEST JUMPDEST PUSH2 0x16FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16F3 SWAP1 PUSH2 0x36FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1739 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x186A0 PUSH1 0x65 DUP2 SWAP1 SSTORE POP PUSH2 0x1388 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x17CE PUSH2 0x2299 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1827 JUMPI PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x181E SWAP2 SWAP1 PUSH2 0x3764 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1833 PUSH2 0x2132 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x68 SWAP2 DUP3 PUSH2 0x1844 SWAP3 SWAP2 SWAP1 PUSH2 0x392C JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1876 SWAP3 SWAP2 SWAP1 PUSH2 0x3A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9C PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18E0 PUSH2 0x2132 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x191B SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x193A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x195E SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x19F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19ED SWAP1 PUSH2 0x314C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1A5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A51 SWAP1 PUSH2 0x31B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x9F PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x9F PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B8C SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCF SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP DUP3 PUSH31 0x7C875846B687732A7579C19BB1DADE66CD14E9F4F809565E2B2B5E76C72B4F DUP4 PUSH1 0x40 MLOAD PUSH2 0x1BFF SWAP2 SWAP1 PUSH2 0x29FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1C43 PUSH2 0x2132 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1CB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CA9 SWAP1 PUSH2 0x3ABF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1CBB DUP2 PUSH2 0x21B0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1CC6 PUSH2 0x245D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH2 0x1D03 SWAP2 SWAP1 PUSH2 0x3ADF JUMP JUMPDEST SWAP1 POP PUSH1 0x65 SLOAD DUP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1D22 SWAP2 SWAP1 PUSH2 0x3324 JUMP JUMPDEST PUSH2 0x1D2C SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1D68 SWAP2 SWAP1 PUSH2 0x3324 JUMP JUMPDEST PUSH2 0x1D72 SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1D8F SWAP2 SWAP1 PUSH2 0x3ADF JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP DUP3 ISZERO PUSH2 0x1DC7 JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x1DB4 SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E96 SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ED9 SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x96C76D5AEC8A8C11A9C8E02768E3FA309347330D08961E0CF9FD43B349B684C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x9B PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1FAF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FA6 SWAP1 PUSH2 0x3B93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x1FF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FE9 SWAP1 PUSH2 0x3BFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2061 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2058 SWAP1 PUSH2 0x3C6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x20D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20C7 SWAP1 PUSH2 0x3C6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SHL PUSH1 0x9E PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SUB PUSH2 0x212B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2122 SWAP1 PUSH2 0x3CD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x213A PUSH2 0x22F2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2158 PUSH2 0x145B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x21AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21A5 SWAP1 PUSH2 0x3D43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x22E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22DF SWAP1 PUSH2 0x3DD5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22F0 PUSH2 0x22FA JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2349 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2340 SWAP1 PUSH2 0x3DD5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2359 PUSH2 0x2354 PUSH2 0x22F2 JUMP JUMPDEST PUSH2 0x21B0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x249E DUP2 PUSH2 0x248B JUMP JUMPDEST DUP2 EQ PUSH2 0x24A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x24BB DUP2 PUSH2 0x2495 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24D7 JUMPI PUSH2 0x24D6 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x24E5 DUP5 DUP3 DUP6 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2523 DUP2 PUSH2 0x248B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x253F PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x251A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2552 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x251A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2564 DUP4 DUP4 PUSH2 0x2529 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2588 DUP3 PUSH2 0x24EE JUMP JUMPDEST PUSH2 0x2592 DUP2 DUP6 PUSH2 0x24F9 JUMP JUMPDEST SWAP4 POP PUSH2 0x259D DUP4 PUSH2 0x250A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25CE JUMPI DUP2 MLOAD PUSH2 0x25B5 DUP9 DUP3 PUSH2 0x2558 JUMP JUMPDEST SWAP8 POP PUSH2 0x25C0 DUP4 PUSH2 0x2570 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x25A1 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x25F5 DUP2 DUP5 PUSH2 0x257D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2622 JUMPI PUSH2 0x2621 PUSH2 0x25FD JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x263F JUMPI PUSH2 0x263E PUSH2 0x2602 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x265B JUMPI PUSH2 0x265A PUSH2 0x2607 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268D DUP3 PUSH2 0x2662 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x269D DUP2 PUSH2 0x2682 JUMP JUMPDEST DUP2 EQ PUSH2 0x26A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26BA DUP2 PUSH2 0x2694 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26DD DUP2 PUSH2 0x26C0 JUMP JUMPDEST DUP2 EQ PUSH2 0x26E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26FA DUP2 PUSH2 0x26D4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2715 DUP2 PUSH2 0x2700 JUMP JUMPDEST DUP2 EQ PUSH2 0x2720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2732 DUP2 PUSH2 0x270C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2758 JUMPI PUSH2 0x2757 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2766 DUP12 DUP3 DUP13 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x2777 DUP12 DUP3 DUP13 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x2788 DUP12 DUP3 DUP13 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27A9 JUMPI PUSH2 0x27A8 PUSH2 0x2486 JUMP JUMPDEST JUMPDEST PUSH2 0x27B5 DUP12 DUP3 DUP13 ADD PUSH2 0x260C JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x80 PUSH2 0x27C8 DUP12 DUP3 DUP13 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x27D9 DUP12 DUP3 DUP13 ADD PUSH2 0x26EB JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x27EA DUP12 DUP3 DUP13 ADD PUSH2 0x2723 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH2 0x2803 DUP2 PUSH2 0x248B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2812 DUP2 PUSH2 0x2682 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x282D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x283A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2809 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2854 DUP2 PUSH2 0x2841 JUMP JUMPDEST DUP2 EQ PUSH2 0x285F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2871 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2898 DUP2 PUSH2 0x2877 JUMP JUMPDEST DUP2 EQ PUSH2 0x28A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x28B5 DUP2 PUSH2 0x288F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x28D1 JUMPI PUSH2 0x28D0 PUSH2 0x25FD JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x28EE JUMPI PUSH2 0x28ED PUSH2 0x2602 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x290A JUMPI PUSH2 0x2909 PUSH2 0x2607 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x2935 JUMPI PUSH2 0x2934 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2943 DUP14 DUP3 DUP15 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x2954 DUP14 DUP3 DUP15 ADD PUSH2 0x2862 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x2965 DUP14 DUP3 DUP15 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x2976 DUP14 DUP3 DUP15 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x2987 DUP14 DUP3 DUP15 ADD PUSH2 0x28A6 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x2998 DUP14 DUP3 DUP15 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x29A9 DUP14 DUP3 DUP15 ADD PUSH2 0x2862 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x29BA DUP14 DUP3 DUP15 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29DC JUMPI PUSH2 0x29DB PUSH2 0x2486 JUMP JUMPDEST JUMPDEST PUSH2 0x29E8 DUP14 DUP3 DUP15 ADD PUSH2 0x28BB JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2A11 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x27FA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2A60 DUP3 PUSH2 0x2A17 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2A7F JUMPI PUSH2 0x2A7E PUSH2 0x2A28 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A92 PUSH2 0x2477 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A9E DUP3 DUP3 PUSH2 0x2A57 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2ABE JUMPI PUSH2 0x2ABD PUSH2 0x2A28 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AEA JUMPI PUSH2 0x2AE9 PUSH2 0x2ACF JUMP JUMPDEST JUMPDEST PUSH2 0x2AF4 PUSH1 0x40 PUSH2 0x2A88 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B04 DUP5 DUP3 DUP6 ADD PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2B18 DUP5 DUP3 DUP6 ADD PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B37 PUSH2 0x2B32 DUP5 PUSH2 0x2AA3 JUMP JUMPDEST PUSH2 0x2A88 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2B5A JUMPI PUSH2 0x2B59 PUSH2 0x2607 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2B83 JUMPI DUP1 PUSH2 0x2B6F DUP9 DUP3 PUSH2 0x2AD4 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x2B5C JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2BA2 JUMPI PUSH2 0x2BA1 PUSH2 0x25FD JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2BB2 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2B24 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BD2 JUMPI PUSH2 0x2BD1 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2BE0 DUP6 DUP3 DUP7 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C01 JUMPI PUSH2 0x2C00 PUSH2 0x2486 JUMP JUMPDEST JUMPDEST PUSH2 0x2C0D DUP6 DUP3 DUP7 ADD PUSH2 0x2B8D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2C51 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2C36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C68 DUP3 PUSH2 0x2C17 JUMP JUMPDEST PUSH2 0x2C72 DUP2 DUP6 PUSH2 0x2C22 JUMP JUMPDEST SWAP4 POP PUSH2 0x2C82 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2C33 JUMP JUMPDEST PUSH2 0x2C8B DUP2 PUSH2 0x2A17 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2CB0 DUP2 DUP5 PUSH2 0x2C5D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CCE JUMPI PUSH2 0x2CCD PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2CDC DUP5 DUP3 DUP6 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2CEE DUP2 PUSH2 0x2700 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2D09 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2CE5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D18 DUP2 PUSH2 0x2682 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D27 DUP2 PUSH2 0x2841 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D36 DUP2 PUSH2 0x2877 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D45 DUP2 PUSH2 0x2700 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x120 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2D62 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2D75 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2D88 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2D9B PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2D1E JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2DAE PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2D2D JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2DC1 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2D3C JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x2DD4 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x2DE7 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2D2D JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x2DFC PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2D1E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 ADD SWAP1 POP PUSH2 0x2E18 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D4B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E35 JUMPI PUSH2 0x2E34 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E43 DUP6 DUP3 DUP7 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2E54 DUP6 DUP3 DUP7 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E74 JUMPI PUSH2 0x2E73 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E82 DUP5 DUP3 DUP6 ADD PUSH2 0x26EB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2EA1 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x251A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2EB4 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x251A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2ECF PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2E8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2EEA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2809 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2F09 JUMPI PUSH2 0x2F08 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F17 DUP7 DUP3 DUP8 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2F28 DUP7 DUP3 DUP8 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2F39 DUP7 DUP3 DUP8 ADD PUSH2 0x2723 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x2F4C DUP2 PUSH2 0x26C0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2F5B DUP2 PUSH2 0x2841 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2F76 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2F43 JUMP JUMPDEST PUSH2 0x2F83 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2F52 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2FA0 JUMPI PUSH2 0x2F9F PUSH2 0x25FD JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2FBD JUMPI PUSH2 0x2FBC PUSH2 0x2602 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2FD9 JUMPI PUSH2 0x2FD8 PUSH2 0x2607 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FF7 JUMPI PUSH2 0x2FF6 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3015 JUMPI PUSH2 0x3014 PUSH2 0x2486 JUMP JUMPDEST JUMPDEST PUSH2 0x3021 DUP6 DUP3 DUP7 ADD PUSH2 0x2F8A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3046 JUMPI PUSH2 0x3045 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3054 DUP7 DUP3 DUP8 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3065 DUP7 DUP3 DUP8 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3076 DUP7 DUP3 DUP8 ADD PUSH2 0x2862 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3097 JUMPI PUSH2 0x3096 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x30A5 DUP6 DUP3 DUP7 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x30B6 DUP6 DUP3 DUP7 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F6E6C7941676772656761746F72000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3136 PUSH1 0xE DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3141 DUP3 PUSH2 0x3100 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3165 DUP2 PUSH2 0x3129 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F7264657246756C66696C6C6564000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31A2 PUSH1 0xE DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x31AD DUP3 PUSH2 0x316C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x31D1 DUP2 PUSH2 0x3195 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3212 DUP3 PUSH2 0x2877 JUMP JUMPDEST SWAP2 POP PUSH2 0x321D DUP4 PUSH2 0x2877 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3241 JUMPI PUSH2 0x3240 PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x325C PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2809 JUMP JUMPDEST PUSH2 0x3269 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2F52 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x327F DUP2 PUSH2 0x270C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x329B JUMPI PUSH2 0x329A PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x32A9 DUP5 DUP3 DUP6 ADD PUSH2 0x3270 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32D7 PUSH2 0x32D2 PUSH2 0x32CD DUP5 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x2877 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x32E7 DUP2 PUSH2 0x32BC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3302 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x330F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x331C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x32DE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x332F DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH2 0x333A DUP4 PUSH2 0x2841 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3348 DUP2 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x335F JUMPI PUSH2 0x335E PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x33A0 DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH2 0x33AB DUP4 PUSH2 0x2841 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x33BB JUMPI PUSH2 0x33BA PUSH2 0x3366 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x53656E646572466565546F6F4869676800000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33FC PUSH1 0x10 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3407 DUP3 PUSH2 0x33C6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x342B DUP2 PUSH2 0x33EF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3447 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2809 JUMP JUMPDEST PUSH2 0x3454 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2809 JUMP JUMPDEST PUSH2 0x3461 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2F52 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3474 DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x34A6 JUMPI PUSH2 0x34A5 PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34CC PUSH2 0x34C7 PUSH2 0x34C2 DUP5 PUSH2 0x2877 JUMP JUMPDEST PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x2841 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x34DC DUP2 PUSH2 0x34B1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34FD DUP4 DUP6 PUSH2 0x30EF JUMP JUMPDEST SWAP4 POP PUSH2 0x350A DUP4 DUP6 DUP5 PUSH2 0x34E2 JUMP JUMPDEST PUSH2 0x3513 DUP4 PUSH2 0x2A17 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x3533 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x34D3 JUMP JUMPDEST PUSH2 0x3540 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x354D PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x27FA JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3560 DUP2 DUP5 DUP7 PUSH2 0x34F1 JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x35B3 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x35C6 JUMPI PUSH2 0x35C5 PUSH2 0x356C JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3602 PUSH1 0x16 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x360D DUP3 PUSH2 0x35CC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3631 DUP2 PUSH2 0x35F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x364D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F43 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3668 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x3675 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2809 JUMP JUMPDEST PUSH2 0x3682 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2CE5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36E6 PUSH1 0x2E DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x36F1 DUP3 PUSH2 0x368A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3715 DUP2 PUSH2 0x36D9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374E PUSH2 0x3749 PUSH2 0x3744 DUP5 PUSH2 0x371C JUMP JUMPDEST PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x3726 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x375E DUP2 PUSH2 0x3733 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3779 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3755 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x37EC PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x37AF JUMP JUMPDEST PUSH2 0x37F6 DUP7 DUP4 PUSH2 0x37AF JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3829 PUSH2 0x3824 PUSH2 0x381F DUP5 PUSH2 0x2841 JUMP JUMPDEST PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x2841 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3843 DUP4 PUSH2 0x380E JUMP JUMPDEST PUSH2 0x3857 PUSH2 0x384F DUP3 PUSH2 0x3830 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x37BC JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x386C PUSH2 0x385F JUMP JUMPDEST PUSH2 0x3877 DUP2 DUP5 DUP5 PUSH2 0x383A JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x389B JUMPI PUSH2 0x3890 PUSH1 0x0 DUP3 PUSH2 0x3864 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x387D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x38E0 JUMPI PUSH2 0x38B1 DUP2 PUSH2 0x378A JUMP JUMPDEST PUSH2 0x38BA DUP5 PUSH2 0x379F JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x38C9 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x38DD PUSH2 0x38D5 DUP6 PUSH2 0x379F JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x387C JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3903 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x38E5 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x391C DUP4 DUP4 PUSH2 0x38F2 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3936 DUP4 DUP4 PUSH2 0x377F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x394F JUMPI PUSH2 0x394E PUSH2 0x2A28 JUMP JUMPDEST JUMPDEST PUSH2 0x3959 DUP3 SLOAD PUSH2 0x359B JUMP JUMPDEST PUSH2 0x3964 DUP3 DUP3 DUP6 PUSH2 0x389F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3993 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x3981 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x398B DUP6 DUP3 PUSH2 0x3910 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x39F3 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x39A1 DUP7 PUSH2 0x378A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x39C9 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x39A4 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x39E6 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x39E2 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x38F2 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A08 DUP4 DUP6 PUSH2 0x2C22 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A15 DUP4 DUP6 DUP5 PUSH2 0x34E2 JUMP JUMPDEST PUSH2 0x3A1E DUP4 PUSH2 0x2A17 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A44 DUP2 DUP5 DUP7 PUSH2 0x39FC JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AA9 PUSH1 0x26 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3AB4 DUP3 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3AD8 DUP2 PUSH2 0x3A9C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AEA DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH2 0x3AF5 DUP4 PUSH2 0x2841 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3B0D JUMPI PUSH2 0x3B0C PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B1E DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH2 0x3B29 DUP4 PUSH2 0x2841 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3B41 JUMPI PUSH2 0x3B40 PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x546F6B656E4E6F74537570706F72746564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B7D PUSH1 0x11 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3B88 DUP3 PUSH2 0x3B47 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3BAC DUP2 PUSH2 0x3B70 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E7449735A65726F0000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BE9 PUSH1 0xC DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3BF4 DUP3 PUSH2 0x3BB3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C18 DUP2 PUSH2 0x3BDC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5468726F775A65726F4164647265737300000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C55 PUSH1 0x10 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3C60 DUP3 PUSH2 0x3C1F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C84 DUP2 PUSH2 0x3C48 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C6964496E737469747574696F6E436F646500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CC1 PUSH1 0x16 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3CCC DUP3 PUSH2 0x3C8B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CF0 DUP2 PUSH2 0x3CB4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2D PUSH1 0x20 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3D38 DUP3 PUSH2 0x3CF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D5C DUP2 PUSH2 0x3D20 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DBF PUSH1 0x2B DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3DCA DUP3 PUSH2 0x3D63 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DEE DUP2 PUSH2 0x3DB2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 0xBB RETURN SWAP8 EXTCODECOPY 0xED BALANCE 0xC 0xD8 PUSH24 0x7C31EA538F4BEED34D4FEA5F26C4BEEE1D63073174EA6473 PUSH16 0x6C634300081200330000000000000000 ","sourceMap":"367:9323:12:-:0;;;782:53;;;;;;;;;;806:22;:20;;;:22;;:::i;:::-;367:9323;;5939:280:1;6007:13;;;;;;;;;;;6006:14;5998:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6094:15;6078:31;;:12;;;;;;;;;;:31;;;6074:139;;6140:15;6125:12;;:30;;;;;;;;;;;;;;;;;;6174:28;6186:15;6174:28;;;;;;:::i;:::-;;;;;;;;6074:139;5939:280::o;7:169:15:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:226::-;322:34;318:1;310:6;306:14;299:58;391:9;386:2;378:6;374:15;367:34;182:226;:::o;414:366::-;556:3;577:67;641:2;636:3;577:67;:::i;:::-;570:74;;653:93;742:3;653:93;:::i;:::-;771:2;766:3;762:12;755:19;;414:366;;;:::o;786:419::-;952:4;990:2;979:9;975:18;967:26;;1039:9;1033:4;1029:20;1025:1;1014:9;1010:17;1003:47;1067:131;1193:4;1067:131;:::i;:::-;1059:139;;786:419;;;:::o;1211:86::-;1246:7;1286:4;1279:5;1275:16;1264:27;;1211:86;;;:::o;1303:112::-;1386:22;1402:5;1386:22;:::i;:::-;1381:3;1374:35;1303:112;;:::o;1421:214::-;1510:4;1548:2;1537:9;1533:18;1525:26;;1561:67;1625:1;1614:9;1610:17;1601:6;1561:67;:::i;:::-;1421:214;;;;:::o;367:9323:12:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__Ownable_init_26":{"entryPoint":8857,"id":26,"parameterSlots":0,"returnSlots":0},"@__Ownable_init_unchained_37":{"entryPoint":8954,"id":37,"parameterSlots":0,"returnSlots":0},"@_calculateFees_3354":{"entryPoint":7358,"id":3354,"parameterSlots":3,"returnSlots":1},"@_checkOwner_68":{"entryPoint":8498,"id":68,"parameterSlots":0,"returnSlots":0},"@_handler_3058":{"entryPoint":7971,"id":3058,"parameterSlots":5,"returnSlots":0},"@_msgSender_1147":{"entryPoint":8946,"id":1147,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_125":{"entryPoint":8624,"id":125,"parameterSlots":1,"returnSlots":0},"@createOrder_2997":{"entryPoint":2393,"id":2997,"parameterSlots":10,"returnSlots":1},"@getAggregatorAddress_3476":{"entryPoint":7185,"id":3476,"parameterSlots":0,"returnSlots":1},"@getAggregator_3498":{"entryPoint":3893,"id":3498,"parameterSlots":0,"returnSlots":1},"@getFeeDetails_3467":{"entryPoint":5690,"id":3467,"parameterSlots":0,"returnSlots":2},"@getOrderInfo_3368":{"entryPoint":4145,"id":3368,"parameterSlots":1,"returnSlots":1},"@getSupportedInstitutionName_3395":{"entryPoint":5146,"id":3395,"parameterSlots":1,"returnSlots":1},"@getSupportedInstitutions_3454":{"entryPoint":1056,"id":3454,"parameterSlots":1,"returnSlots":1},"@getWhitelistedStatus_3489":{"entryPoint":6274,"id":3489,"parameterSlots":1,"returnSlots":1},"@initialize_2877":{"entryPoint":5727,"id":2877,"parameterSlots":1,"returnSlots":0},"@isContract_808":{"entryPoint":8822,"id":808,"parameterSlots":1,"returnSlots":1},"@isTokenSupported_3381":{"entryPoint":4059,"id":3381,"parameterSlots":1,"returnSlots":1},"@owner_54":{"entryPoint":5211,"id":54,"parameterSlots":0,"returnSlots":1},"@refund_3275":{"entryPoint":6500,"id":3275,"parameterSlots":2,"returnSlots":1},"@renounceOwnership_82":{"entryPoint":4039,"id":82,"parameterSlots":0,"returnSlots":0},"@setSupportedInstitutions_3689":{"entryPoint":3617,"id":3689,"parameterSlots":2,"returnSlots":0},"@settingManagerBool_3635":{"entryPoint":5253,"id":3635,"parameterSlots":3,"returnSlots":0},"@settle_3179":{"entryPoint":1374,"id":3179,"parameterSlots":8,"returnSlots":2},"@transferOwnership_105":{"entryPoint":7227,"id":105,"parameterSlots":1,"returnSlots":0},"@transferSenderFee_3215":{"entryPoint":7631,"id":3215,"parameterSlots":1,"returnSlots":0},"@updateProtocolAddresses_3741":{"entryPoint":4706,"id":3741,"parameterSlots":2,"returnSlots":0},"@updateProtocolAggregator_3757":{"entryPoint":6187,"id":3757,"parameterSlots":2,"returnSlots":0},"@updateProtocolFees_3705":{"entryPoint":5039,"id":3705,"parameterSlots":1,"returnSlots":0},"@withdraw_3518":{"entryPoint":6360,"id":3518,"parameterSlots":3,"returnSlots":0},"abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":11044,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":9899,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_address_$dyn_calldata_ptr":{"entryPoint":9740,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":11149,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":10019,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":12912,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":9388,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":12170,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_string_calldata_ptr":{"entryPoint":10427,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_struct$_Institution_$3529_memory_ptr":{"entryPoint":10964,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":10338,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint64":{"entryPoint":9963,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint96":{"entryPoint":10406,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":11448,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":12333,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr":{"entryPoint":10513,"id":null,"parameterSlots":2,"returnSlots":10},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":12933,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":9409,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":11806,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_addresst_bool":{"entryPoint":12016,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":11195,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32":{"entryPoint":12416,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_array$_t_address_$dyn_calldata_ptrt_addresst_uint64t_bool":{"entryPoint":10040,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":12256,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint64":{"entryPoint":11870,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr":{"entryPoint":9560,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":11535,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":10249,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":9597,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool":{"entryPoint":11580,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":11493,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32":{"entryPoint":9498,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":10234,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":14844,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":11357,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack":{"entryPoint":14165,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":13553,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":15004,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack":{"entryPoint":15324,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack":{"entryPoint":13813,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack":{"entryPoint":13295,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack":{"entryPoint":14041,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack":{"entryPoint":12693,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack":{"entryPoint":15540,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":15648,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack":{"entryPoint":15432,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack":{"entryPoint":15216,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack":{"entryPoint":15794,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack":{"entryPoint":12585,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_struct$_InstitutionByCode_$3534_memory_ptr_to_t_struct$_InstitutionByCode_$3534_memory_ptr_fromStack":{"entryPoint":11915,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr":{"entryPoint":9513,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_Order_$3844_memory_ptr_to_t_struct$_Order_$3844_memory_ptr_fromStack":{"entryPoint":11595,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256":{"entryPoint":11550,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":12114,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint64_to_t_uint64_fromStack":{"entryPoint":12099,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint64_to_t_uint96_fromStack":{"entryPoint":13022,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint256_fromStack":{"entryPoint":13523,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint96":{"entryPoint":11565,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":11989,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":13362,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":12871,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":9691,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":11508,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":10748,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":10264,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed":{"entryPoint":13907,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed":{"entryPoint":13037,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":14889,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11414,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":14180,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15039,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15359,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13848,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13330,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14076,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12728,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15575,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15683,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15467,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15251,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15829,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12620,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_struct$_InstitutionByCode_$3534_memory_ptr__to_t_struct$_InstitutionByCode_$3534_memory_ptr__fromStack_reversed":{"entryPoint":11962,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_Order_$3844_memory_ptr__to_t_struct$_Order_$3844_memory_ptr__fromStack_reversed":{"entryPoint":11778,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":13880,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64_t_uint256__to_t_uint64_t_uint256__fromStack_reversed":{"entryPoint":12129,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13598,"id":null,"parameterSlots":6,"returnSlots":1},"allocate_memory":{"entryPoint":10888,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":9335,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":10915,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":9482,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_bytes_storage":{"entryPoint":14218,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":9454,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_calldata_ptr":{"entryPoint":14207,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":11287,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":9584,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":9465,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":11298,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":12527,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":15123,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":13205,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":13092,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":15071,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint96":{"entryPoint":12807,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_bytes_storage":{"entryPoint":14495,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":9858,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":9984,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":9355,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_1_by_1":{"entryPoint":14108,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":9826,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":10305,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint64":{"entryPoint":9920,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":14118,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":10359,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":14460,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_rational_1_by_1_to_t_uint8":{"entryPoint":14131,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint256_to_t_uint256":{"entryPoint":14350,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint64_to_t_uint96":{"entryPoint":12988,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint96_to_t_uint256":{"entryPoint":13489,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage":{"entryPoint":14636,"id":null,"parameterSlots":3,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":13538,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":11315,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":14239,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":13723,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":14608,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":10839,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":12978,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":13417,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":14578,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":12760,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":13158,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":13676,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":12480,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10792,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":14384,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":9730,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":9725,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":10959,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":9735,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":9350,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":9345,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":10775,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":14255,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":14565,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":14436,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":14925,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2":{"entryPoint":15283,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4":{"entryPoint":13772,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4":{"entryPoint":13254,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759":{"entryPoint":13962,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5":{"entryPoint":12652,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5":{"entryPoint":15499,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":15607,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7":{"entryPoint":15391,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1":{"entryPoint":15175,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b":{"entryPoint":15715,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243":{"entryPoint":12544,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":14268,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":14394,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":9876,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":9996,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":9365,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":10315,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint64":{"entryPoint":9940,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint96":{"entryPoint":10383,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":14431,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:50222:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"379:32:15","statements":[{"nodeType":"YulAssignment","src":"389:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:15"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:15","type":""}],"src":"334:77:15"},{"body":{"nodeType":"YulBlock","src":"460:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:15"},"nodeType":"YulFunctionCall","src":"519:12:15"},"nodeType":"YulExpressionStatement","src":"519:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"490:17:15"},"nodeType":"YulFunctionCall","src":"490:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:15"},"nodeType":"YulFunctionCall","src":"480:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:15"},"nodeType":"YulFunctionCall","src":"473:43:15"},"nodeType":"YulIf","src":"470:63:15"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:15","type":""}],"src":"417:122:15"},{"body":{"nodeType":"YulBlock","src":"597:87:15","statements":[{"nodeType":"YulAssignment","src":"607:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:15"},"nodeType":"YulFunctionCall","src":"616:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:15"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"645:26:15"},"nodeType":"YulFunctionCall","src":"645:33:15"},"nodeType":"YulExpressionStatement","src":"645:33:15"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:15","type":""}],"src":"545:139:15"},{"body":{"nodeType":"YulBlock","src":"756:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"802:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"804:77:15"},"nodeType":"YulFunctionCall","src":"804:79:15"},"nodeType":"YulExpressionStatement","src":"804:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"777:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"773:3:15"},"nodeType":"YulFunctionCall","src":"773:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"798:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"769:3:15"},"nodeType":"YulFunctionCall","src":"769:32:15"},"nodeType":"YulIf","src":"766:119:15"},{"nodeType":"YulBlock","src":"895:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"910:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"924:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"914:6:15","type":""}]},{"nodeType":"YulAssignment","src":"939:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"974:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"985:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"970:3:15"},"nodeType":"YulFunctionCall","src":"970:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"994:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"949:20:15"},"nodeType":"YulFunctionCall","src":"949:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"939:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"726:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"737:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"749:6:15","type":""}],"src":"690:329:15"},{"body":{"nodeType":"YulBlock","src":"1128:40:15","statements":[{"nodeType":"YulAssignment","src":"1139:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1155:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1149:5:15"},"nodeType":"YulFunctionCall","src":"1149:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1139:6:15"}]}]},"name":"array_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1111:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1121:6:15","type":""}],"src":"1025:143:15"},{"body":{"nodeType":"YulBlock","src":"1314:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1331:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"1336:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1324:6:15"},"nodeType":"YulFunctionCall","src":"1324:19:15"},"nodeType":"YulExpressionStatement","src":"1324:19:15"},{"nodeType":"YulAssignment","src":"1352:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1371:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1376:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1367:3:15"},"nodeType":"YulFunctionCall","src":"1367:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1352:11:15"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1286:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1291:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1302:11:15","type":""}],"src":"1174:213:15"},{"body":{"nodeType":"YulBlock","src":"1494:60:15","statements":[{"nodeType":"YulAssignment","src":"1504:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"1512:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1504:4:15"}]},{"nodeType":"YulAssignment","src":"1525:22:15","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1537:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1542:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1533:3:15"},"nodeType":"YulFunctionCall","src":"1533:14:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1525:4:15"}]}]},"name":"array_dataslot_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1481:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1489:4:15","type":""}],"src":"1393:161:15"},{"body":{"nodeType":"YulBlock","src":"1615:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1632:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1655:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"1637:17:15"},"nodeType":"YulFunctionCall","src":"1637:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1625:6:15"},"nodeType":"YulFunctionCall","src":"1625:37:15"},"nodeType":"YulExpressionStatement","src":"1625:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1603:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1610:3:15","type":""}],"src":"1560:108:15"},{"body":{"nodeType":"YulBlock","src":"1882:391:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1892:26:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1908:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1913:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1904:3:15"},"nodeType":"YulFunctionCall","src":"1904:14:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"1896:4:15","type":""}]},{"nodeType":"YulBlock","src":"1928:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1963:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1993:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2000:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1989:3:15"},"nodeType":"YulFunctionCall","src":"1989:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1983:5:15"},"nodeType":"YulFunctionCall","src":"1983:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"1967:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2053:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2071:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2076:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2067:3:15"},"nodeType":"YulFunctionCall","src":"2067:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"2019:33:15"},"nodeType":"YulFunctionCall","src":"2019:63:15"},"nodeType":"YulExpressionStatement","src":"2019:63:15"}]},{"nodeType":"YulBlock","src":"2102:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2137:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2167:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2174:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2163:3:15"},"nodeType":"YulFunctionCall","src":"2163:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2157:5:15"},"nodeType":"YulFunctionCall","src":"2157:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2141:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2227:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2245:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2250:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2241:3:15"},"nodeType":"YulFunctionCall","src":"2241:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"2193:33:15"},"nodeType":"YulFunctionCall","src":"2193:63:15"},"nodeType":"YulExpressionStatement","src":"2193:63:15"}]}]},"name":"abi_encode_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1869:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1876:3:15","type":""}],"src":"1768:505:15"},{"body":{"nodeType":"YulBlock","src":"2417:157:15","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2519:6:15"},{"name":"pos","nodeType":"YulIdentifier","src":"2527:3:15"}],"functionName":{"name":"abi_encode_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr","nodeType":"YulIdentifier","src":"2427:91:15"},"nodeType":"YulFunctionCall","src":"2427:104:15"},"nodeType":"YulExpressionStatement","src":"2427:104:15"},{"nodeType":"YulAssignment","src":"2540:28:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2558:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2563:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2554:3:15"},"nodeType":"YulFunctionCall","src":"2554:14:15"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2540:10:15"}]}]},"name":"abi_encodeUpdatedPos_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2390:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2398:3:15","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2406:10:15","type":""}],"src":"2279:295:15"},{"body":{"nodeType":"YulBlock","src":"2684:38:15","statements":[{"nodeType":"YulAssignment","src":"2694:22:15","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2706:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2711:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2702:3:15"},"nodeType":"YulFunctionCall","src":"2702:14:15"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"2694:4:15"}]}]},"name":"array_nextElement_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"2671:3:15","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"2679:4:15","type":""}],"src":"2580:142:15"},{"body":{"nodeType":"YulBlock","src":"3008:782:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3018:97:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3109:5:15"}],"functionName":{"name":"array_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3032:76:15"},"nodeType":"YulFunctionCall","src":"3032:83:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3022:6:15","type":""}]},{"nodeType":"YulAssignment","src":"3124:122:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3234:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"3239:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3131:102:15"},"nodeType":"YulFunctionCall","src":"3131:115:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3124:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"3255:100:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3349:5:15"}],"functionName":{"name":"array_dataslot_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3270:78:15"},"nodeType":"YulFunctionCall","src":"3270:85:15"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"3259:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3364:21:15","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"3378:7:15"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3368:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3454:311:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3468:34:15","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3495:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3489:5:15"},"nodeType":"YulFunctionCall","src":"3489:13:15"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"3472:13:15","type":""}]},{"nodeType":"YulAssignment","src":"3515:128:15","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"3624:13:15"},{"name":"pos","nodeType":"YulIdentifier","src":"3639:3:15"}],"functionName":{"name":"abi_encodeUpdatedPos_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr","nodeType":"YulIdentifier","src":"3522:101:15"},"nodeType":"YulFunctionCall","src":"3522:121:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3515:3:15"}]},{"nodeType":"YulAssignment","src":"3656:99:15","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3748:6:15"}],"functionName":{"name":"array_nextElement_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3666:81:15"},"nodeType":"YulFunctionCall","src":"3666:89:15"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3656:6:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3416:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"3419:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3413:2:15"},"nodeType":"YulFunctionCall","src":"3413:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3427:18:15","statements":[{"nodeType":"YulAssignment","src":"3429:14:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3438:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"3441:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3434:3:15"},"nodeType":"YulFunctionCall","src":"3434:9:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"3398:14:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3400:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"3409:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3404:1:15","type":""}]}]},"src":"3394:371:15"},{"nodeType":"YulAssignment","src":"3774:10:15","value":{"name":"pos","nodeType":"YulIdentifier","src":"3781:3:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3774:3:15"}]}]},"name":"abi_encode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2987:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2994:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3003:3:15","type":""}],"src":"2826:964:15"},{"body":{"nodeType":"YulBlock","src":"4002:283:15","statements":[{"nodeType":"YulAssignment","src":"4012:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4024:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4035:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4020:3:15"},"nodeType":"YulFunctionCall","src":"4020:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4012:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4059:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4070:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4055:3:15"},"nodeType":"YulFunctionCall","src":"4055:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4078:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4084:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4074:3:15"},"nodeType":"YulFunctionCall","src":"4074:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4048:6:15"},"nodeType":"YulFunctionCall","src":"4048:47:15"},"nodeType":"YulExpressionStatement","src":"4048:47:15"},{"nodeType":"YulAssignment","src":"4104:174:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4264:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"4273:4:15"}],"functionName":{"name":"abi_encode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4112:151:15"},"nodeType":"YulFunctionCall","src":"4112:166:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4104:4:15"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3974:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3986:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3997:4:15","type":""}],"src":"3796:489:15"},{"body":{"nodeType":"YulBlock","src":"4380:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4397:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4400:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4390:6:15"},"nodeType":"YulFunctionCall","src":"4390:12:15"},"nodeType":"YulExpressionStatement","src":"4390:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"4291:117:15"},{"body":{"nodeType":"YulBlock","src":"4503:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4520:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4523:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4513:6:15"},"nodeType":"YulFunctionCall","src":"4513:12:15"},"nodeType":"YulExpressionStatement","src":"4513:12:15"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"4414:117:15"},{"body":{"nodeType":"YulBlock","src":"4626:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4643:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4646:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4636:6:15"},"nodeType":"YulFunctionCall","src":"4636:12:15"},"nodeType":"YulExpressionStatement","src":"4636:12:15"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"4537:117:15"},{"body":{"nodeType":"YulBlock","src":"4767:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"4816:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"4818:77:15"},"nodeType":"YulFunctionCall","src":"4818:79:15"},"nodeType":"YulExpressionStatement","src":"4818:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4795:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4803:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4791:3:15"},"nodeType":"YulFunctionCall","src":"4791:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"4810:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4787:3:15"},"nodeType":"YulFunctionCall","src":"4787:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4780:6:15"},"nodeType":"YulFunctionCall","src":"4780:35:15"},"nodeType":"YulIf","src":"4777:122:15"},{"nodeType":"YulAssignment","src":"4908:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4931:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4918:12:15"},"nodeType":"YulFunctionCall","src":"4918:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4908:6:15"}]},{"body":{"nodeType":"YulBlock","src":"4981:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"4983:77:15"},"nodeType":"YulFunctionCall","src":"4983:79:15"},"nodeType":"YulExpressionStatement","src":"4983:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4953:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4961:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4950:2:15"},"nodeType":"YulFunctionCall","src":"4950:30:15"},"nodeType":"YulIf","src":"4947:117:15"},{"nodeType":"YulAssignment","src":"5073:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5089:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"5097:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5085:3:15"},"nodeType":"YulFunctionCall","src":"5085:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5073:8:15"}]},{"body":{"nodeType":"YulBlock","src":"5156:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"5158:77:15"},"nodeType":"YulFunctionCall","src":"5158:79:15"},"nodeType":"YulExpressionStatement","src":"5158:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5121:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5135:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"5143:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5131:3:15"},"nodeType":"YulFunctionCall","src":"5131:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5117:3:15"},"nodeType":"YulFunctionCall","src":"5117:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"5151:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5114:2:15"},"nodeType":"YulFunctionCall","src":"5114:41:15"},"nodeType":"YulIf","src":"5111:128:15"}]},"name":"abi_decode_t_array$_t_address_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4734:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"4742:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"4750:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"4760:6:15","type":""}],"src":"4677:568:15"},{"body":{"nodeType":"YulBlock","src":"5296:81:15","statements":[{"nodeType":"YulAssignment","src":"5306:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5321:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5328:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5317:3:15"},"nodeType":"YulFunctionCall","src":"5317:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5306:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5278:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5288:7:15","type":""}],"src":"5251:126:15"},{"body":{"nodeType":"YulBlock","src":"5428:51:15","statements":[{"nodeType":"YulAssignment","src":"5438:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5467:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5449:17:15"},"nodeType":"YulFunctionCall","src":"5449:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5438:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5410:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5420:7:15","type":""}],"src":"5383:96:15"},{"body":{"nodeType":"YulBlock","src":"5528:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"5585:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5594:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5597:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5587:6:15"},"nodeType":"YulFunctionCall","src":"5587:12:15"},"nodeType":"YulExpressionStatement","src":"5587:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5551:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5576:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5558:17:15"},"nodeType":"YulFunctionCall","src":"5558:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5548:2:15"},"nodeType":"YulFunctionCall","src":"5548:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5541:6:15"},"nodeType":"YulFunctionCall","src":"5541:43:15"},"nodeType":"YulIf","src":"5538:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5521:5:15","type":""}],"src":"5485:122:15"},{"body":{"nodeType":"YulBlock","src":"5665:87:15","statements":[{"nodeType":"YulAssignment","src":"5675:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5697:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5684:12:15"},"nodeType":"YulFunctionCall","src":"5684:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5675:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5740:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5713:26:15"},"nodeType":"YulFunctionCall","src":"5713:33:15"},"nodeType":"YulExpressionStatement","src":"5713:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5643:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5651:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5659:5:15","type":""}],"src":"5613:139:15"},{"body":{"nodeType":"YulBlock","src":"5802:57:15","statements":[{"nodeType":"YulAssignment","src":"5812:41:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5827:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5834:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5823:3:15"},"nodeType":"YulFunctionCall","src":"5823:30:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5812:7:15"}]}]},"name":"cleanup_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5784:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5794:7:15","type":""}],"src":"5758:101:15"},{"body":{"nodeType":"YulBlock","src":"5907:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"5963:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5972:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5975:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5965:6:15"},"nodeType":"YulFunctionCall","src":"5965:12:15"},"nodeType":"YulExpressionStatement","src":"5965:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5930:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5954:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"5937:16:15"},"nodeType":"YulFunctionCall","src":"5937:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5927:2:15"},"nodeType":"YulFunctionCall","src":"5927:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5920:6:15"},"nodeType":"YulFunctionCall","src":"5920:42:15"},"nodeType":"YulIf","src":"5917:62:15"}]},"name":"validator_revert_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5900:5:15","type":""}],"src":"5865:120:15"},{"body":{"nodeType":"YulBlock","src":"6042:86:15","statements":[{"nodeType":"YulAssignment","src":"6052:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6074:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6061:12:15"},"nodeType":"YulFunctionCall","src":"6061:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6052:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6116:5:15"}],"functionName":{"name":"validator_revert_t_uint64","nodeType":"YulIdentifier","src":"6090:25:15"},"nodeType":"YulFunctionCall","src":"6090:32:15"},"nodeType":"YulExpressionStatement","src":"6090:32:15"}]},"name":"abi_decode_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6020:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6028:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6036:5:15","type":""}],"src":"5991:137:15"},{"body":{"nodeType":"YulBlock","src":"6176:48:15","statements":[{"nodeType":"YulAssignment","src":"6186:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6211:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6204:6:15"},"nodeType":"YulFunctionCall","src":"6204:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6197:6:15"},"nodeType":"YulFunctionCall","src":"6197:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6186:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6158:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6168:7:15","type":""}],"src":"6134:90:15"},{"body":{"nodeType":"YulBlock","src":"6270:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"6324:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6333:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6336:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6326:6:15"},"nodeType":"YulFunctionCall","src":"6326:12:15"},"nodeType":"YulExpressionStatement","src":"6326:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6293:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6315:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6300:14:15"},"nodeType":"YulFunctionCall","src":"6300:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6290:2:15"},"nodeType":"YulFunctionCall","src":"6290:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6283:6:15"},"nodeType":"YulFunctionCall","src":"6283:40:15"},"nodeType":"YulIf","src":"6280:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6263:5:15","type":""}],"src":"6230:116:15"},{"body":{"nodeType":"YulBlock","src":"6401:84:15","statements":[{"nodeType":"YulAssignment","src":"6411:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6433:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6420:12:15"},"nodeType":"YulFunctionCall","src":"6420:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6411:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6473:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6449:23:15"},"nodeType":"YulFunctionCall","src":"6449:30:15"},"nodeType":"YulExpressionStatement","src":"6449:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6379:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6387:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6395:5:15","type":""}],"src":"6352:133:15"},{"body":{"nodeType":"YulBlock","src":"6690:1226:15","statements":[{"body":{"nodeType":"YulBlock","src":"6737:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6739:77:15"},"nodeType":"YulFunctionCall","src":"6739:79:15"},"nodeType":"YulExpressionStatement","src":"6739:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6711:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6720:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6707:3:15"},"nodeType":"YulFunctionCall","src":"6707:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6732:3:15","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6703:3:15"},"nodeType":"YulFunctionCall","src":"6703:33:15"},"nodeType":"YulIf","src":"6700:120:15"},{"nodeType":"YulBlock","src":"6830:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6845:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6859:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6849:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6874:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6909:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6920:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6905:3:15"},"nodeType":"YulFunctionCall","src":"6905:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6929:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"6884:20:15"},"nodeType":"YulFunctionCall","src":"6884:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6874:6:15"}]}]},{"nodeType":"YulBlock","src":"6957:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6972:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6986:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6976:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7002:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7037:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7048:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7033:3:15"},"nodeType":"YulFunctionCall","src":"7033:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7057:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7012:20:15"},"nodeType":"YulFunctionCall","src":"7012:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7002:6:15"}]}]},{"nodeType":"YulBlock","src":"7085:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7100:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7114:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7104:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7130:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7165:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7176:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7161:3:15"},"nodeType":"YulFunctionCall","src":"7161:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7185:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7140:20:15"},"nodeType":"YulFunctionCall","src":"7140:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7130:6:15"}]}]},{"nodeType":"YulBlock","src":"7213:313:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7228:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7259:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"7270:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7255:3:15"},"nodeType":"YulFunctionCall","src":"7255:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7242:12:15"},"nodeType":"YulFunctionCall","src":"7242:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7232:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"7321:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"7323:77:15"},"nodeType":"YulFunctionCall","src":"7323:79:15"},"nodeType":"YulExpressionStatement","src":"7323:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7293:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7301:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7290:2:15"},"nodeType":"YulFunctionCall","src":"7290:30:15"},"nodeType":"YulIf","src":"7287:117:15"},{"nodeType":"YulAssignment","src":"7418:98:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7488:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7499:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7484:3:15"},"nodeType":"YulFunctionCall","src":"7484:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7508:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_calldata_ptr","nodeType":"YulIdentifier","src":"7436:47:15"},"nodeType":"YulFunctionCall","src":"7436:80:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7418:6:15"},{"name":"value4","nodeType":"YulIdentifier","src":"7426:6:15"}]}]},{"nodeType":"YulBlock","src":"7536:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7551:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7565:3:15","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7555:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7582:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7617:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7628:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7613:3:15"},"nodeType":"YulFunctionCall","src":"7613:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7637:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7592:20:15"},"nodeType":"YulFunctionCall","src":"7592:53:15"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"7582:6:15"}]}]},{"nodeType":"YulBlock","src":"7665:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7680:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7694:3:15","type":"","value":"160"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7684:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7711:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7745:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7756:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7741:3:15"},"nodeType":"YulFunctionCall","src":"7741:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7765:7:15"}],"functionName":{"name":"abi_decode_t_uint64","nodeType":"YulIdentifier","src":"7721:19:15"},"nodeType":"YulFunctionCall","src":"7721:52:15"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"7711:6:15"}]}]},{"nodeType":"YulBlock","src":"7793:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7808:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7822:3:15","type":"","value":"192"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7812:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7839:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7871:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7882:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7867:3:15"},"nodeType":"YulFunctionCall","src":"7867:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7891:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"7849:17:15"},"nodeType":"YulFunctionCall","src":"7849:50:15"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"7839:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_array$_t_address_$dyn_calldata_ptrt_addresst_uint64t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6604:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6615:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6627:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6635:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6643:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6651:6:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6659:6:15","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6667:6:15","type":""},{"name":"value6","nodeType":"YulTypedName","src":"6675:6:15","type":""},{"name":"value7","nodeType":"YulTypedName","src":"6683:6:15","type":""}],"src":"6491:1425:15"},{"body":{"nodeType":"YulBlock","src":"7987:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8004:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8027:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8009:17:15"},"nodeType":"YulFunctionCall","src":"8009:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7997:6:15"},"nodeType":"YulFunctionCall","src":"7997:37:15"},"nodeType":"YulExpressionStatement","src":"7997:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7975:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7982:3:15","type":""}],"src":"7922:118:15"},{"body":{"nodeType":"YulBlock","src":"8111:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8128:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8151:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"8133:17:15"},"nodeType":"YulFunctionCall","src":"8133:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8121:6:15"},"nodeType":"YulFunctionCall","src":"8121:37:15"},"nodeType":"YulExpressionStatement","src":"8121:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8099:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8106:3:15","type":""}],"src":"8046:118:15"},{"body":{"nodeType":"YulBlock","src":"8296:206:15","statements":[{"nodeType":"YulAssignment","src":"8306:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8318:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8329:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8314:3:15"},"nodeType":"YulFunctionCall","src":"8314:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8306:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8386:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8399:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8410:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8395:3:15"},"nodeType":"YulFunctionCall","src":"8395:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"8342:43:15"},"nodeType":"YulFunctionCall","src":"8342:71:15"},"nodeType":"YulExpressionStatement","src":"8342:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8467:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8480:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8491:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8476:3:15"},"nodeType":"YulFunctionCall","src":"8476:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8423:43:15"},"nodeType":"YulFunctionCall","src":"8423:72:15"},"nodeType":"YulExpressionStatement","src":"8423:72:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8260:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8272:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8280:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8291:4:15","type":""}],"src":"8170:332:15"},{"body":{"nodeType":"YulBlock","src":"8553:32:15","statements":[{"nodeType":"YulAssignment","src":"8563:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"8574:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8563:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8535:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8545:7:15","type":""}],"src":"8508:77:15"},{"body":{"nodeType":"YulBlock","src":"8634:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"8691:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8700:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8703:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8693:6:15"},"nodeType":"YulFunctionCall","src":"8693:12:15"},"nodeType":"YulExpressionStatement","src":"8693:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8657:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8682:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8664:17:15"},"nodeType":"YulFunctionCall","src":"8664:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8654:2:15"},"nodeType":"YulFunctionCall","src":"8654:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8647:6:15"},"nodeType":"YulFunctionCall","src":"8647:43:15"},"nodeType":"YulIf","src":"8644:63:15"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8627:5:15","type":""}],"src":"8591:122:15"},{"body":{"nodeType":"YulBlock","src":"8771:87:15","statements":[{"nodeType":"YulAssignment","src":"8781:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8803:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8790:12:15"},"nodeType":"YulFunctionCall","src":"8790:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8781:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8846:5:15"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"8819:26:15"},"nodeType":"YulFunctionCall","src":"8819:33:15"},"nodeType":"YulExpressionStatement","src":"8819:33:15"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8749:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"8757:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"8765:5:15","type":""}],"src":"8719:139:15"},{"body":{"nodeType":"YulBlock","src":"8908:65:15","statements":[{"nodeType":"YulAssignment","src":"8918:49:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8933:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"8940:26:15","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8929:3:15"},"nodeType":"YulFunctionCall","src":"8929:38:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8918:7:15"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8890:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8900:7:15","type":""}],"src":"8864:109:15"},{"body":{"nodeType":"YulBlock","src":"9021:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"9077:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9086:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9089:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9079:6:15"},"nodeType":"YulFunctionCall","src":"9079:12:15"},"nodeType":"YulExpressionStatement","src":"9079:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9044:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9068:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"9051:16:15"},"nodeType":"YulFunctionCall","src":"9051:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9041:2:15"},"nodeType":"YulFunctionCall","src":"9041:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9034:6:15"},"nodeType":"YulFunctionCall","src":"9034:42:15"},"nodeType":"YulIf","src":"9031:62:15"}]},"name":"validator_revert_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9014:5:15","type":""}],"src":"8979:120:15"},{"body":{"nodeType":"YulBlock","src":"9156:86:15","statements":[{"nodeType":"YulAssignment","src":"9166:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9188:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9175:12:15"},"nodeType":"YulFunctionCall","src":"9175:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"9166:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9230:5:15"}],"functionName":{"name":"validator_revert_t_uint96","nodeType":"YulIdentifier","src":"9204:25:15"},"nodeType":"YulFunctionCall","src":"9204:32:15"},"nodeType":"YulExpressionStatement","src":"9204:32:15"}]},"name":"abi_decode_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9134:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"9142:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"9150:5:15","type":""}],"src":"9105:137:15"},{"body":{"nodeType":"YulBlock","src":"9337:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"9386:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"9388:77:15"},"nodeType":"YulFunctionCall","src":"9388:79:15"},"nodeType":"YulExpressionStatement","src":"9388:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9365:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9373:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9361:3:15"},"nodeType":"YulFunctionCall","src":"9361:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"9380:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9357:3:15"},"nodeType":"YulFunctionCall","src":"9357:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9350:6:15"},"nodeType":"YulFunctionCall","src":"9350:35:15"},"nodeType":"YulIf","src":"9347:122:15"},{"nodeType":"YulAssignment","src":"9478:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9501:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9488:12:15"},"nodeType":"YulFunctionCall","src":"9488:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"9478:6:15"}]},{"body":{"nodeType":"YulBlock","src":"9551:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"9553:77:15"},"nodeType":"YulFunctionCall","src":"9553:79:15"},"nodeType":"YulExpressionStatement","src":"9553:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9523:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9531:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9520:2:15"},"nodeType":"YulFunctionCall","src":"9520:30:15"},"nodeType":"YulIf","src":"9517:117:15"},{"nodeType":"YulAssignment","src":"9643:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9659:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9667:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9655:3:15"},"nodeType":"YulFunctionCall","src":"9655:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"9643:8:15"}]},{"body":{"nodeType":"YulBlock","src":"9726:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"9728:77:15"},"nodeType":"YulFunctionCall","src":"9728:79:15"},"nodeType":"YulExpressionStatement","src":"9728:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"9691:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9705:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9713:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"9701:3:15"},"nodeType":"YulFunctionCall","src":"9701:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9687:3:15"},"nodeType":"YulFunctionCall","src":"9687:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"9721:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9684:2:15"},"nodeType":"YulFunctionCall","src":"9684:41:15"},"nodeType":"YulIf","src":"9681:128:15"}]},"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9304:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"9312:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"9320:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"9330:6:15","type":""}],"src":"9262:553:15"},{"body":{"nodeType":"YulBlock","src":"10042:1472:15","statements":[{"body":{"nodeType":"YulBlock","src":"10089:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10091:77:15"},"nodeType":"YulFunctionCall","src":"10091:79:15"},"nodeType":"YulExpressionStatement","src":"10091:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10063:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"10072:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10059:3:15"},"nodeType":"YulFunctionCall","src":"10059:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"10084:3:15","type":"","value":"288"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10055:3:15"},"nodeType":"YulFunctionCall","src":"10055:33:15"},"nodeType":"YulIf","src":"10052:120:15"},{"nodeType":"YulBlock","src":"10182:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10197:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10211:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10201:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10226:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10261:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10272:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10257:3:15"},"nodeType":"YulFunctionCall","src":"10257:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10281:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10236:20:15"},"nodeType":"YulFunctionCall","src":"10236:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10226:6:15"}]}]},{"nodeType":"YulBlock","src":"10309:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10324:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10338:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10328:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10354:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10389:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10400:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10385:3:15"},"nodeType":"YulFunctionCall","src":"10385:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10409:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"10364:20:15"},"nodeType":"YulFunctionCall","src":"10364:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10354:6:15"}]}]},{"nodeType":"YulBlock","src":"10437:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10452:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10466:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10456:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10482:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10517:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10528:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10513:3:15"},"nodeType":"YulFunctionCall","src":"10513:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10537:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"10492:20:15"},"nodeType":"YulFunctionCall","src":"10492:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"10482:6:15"}]}]},{"nodeType":"YulBlock","src":"10565:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10580:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10594:2:15","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10584:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10610:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10645:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10656:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10641:3:15"},"nodeType":"YulFunctionCall","src":"10641:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10665:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"10620:20:15"},"nodeType":"YulFunctionCall","src":"10620:53:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"10610:6:15"}]}]},{"nodeType":"YulBlock","src":"10693:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10708:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10722:3:15","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10712:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10739:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10773:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10784:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10769:3:15"},"nodeType":"YulFunctionCall","src":"10769:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10793:7:15"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"10749:19:15"},"nodeType":"YulFunctionCall","src":"10749:52:15"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"10739:6:15"}]}]},{"nodeType":"YulBlock","src":"10821:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10836:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10850:3:15","type":"","value":"160"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10840:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10867:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10902:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10913:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10898:3:15"},"nodeType":"YulFunctionCall","src":"10898:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10922:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10877:20:15"},"nodeType":"YulFunctionCall","src":"10877:53:15"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"10867:6:15"}]}]},{"nodeType":"YulBlock","src":"10950:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10965:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10979:3:15","type":"","value":"192"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10969:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10996:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11031:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"11042:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11027:3:15"},"nodeType":"YulFunctionCall","src":"11027:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11051:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"11006:20:15"},"nodeType":"YulFunctionCall","src":"11006:53:15"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"10996:6:15"}]}]},{"nodeType":"YulBlock","src":"11079:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"11094:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"11108:3:15","type":"","value":"224"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11098:6:15","type":""}]},{"nodeType":"YulAssignment","src":"11125:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11160:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"11171:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11156:3:15"},"nodeType":"YulFunctionCall","src":"11156:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11180:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"11135:20:15"},"nodeType":"YulFunctionCall","src":"11135:53:15"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"11125:6:15"}]}]},{"nodeType":"YulBlock","src":"11208:299:15","statements":[{"nodeType":"YulVariableDeclaration","src":"11223:47:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11254:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11265:3:15","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11250:3:15"},"nodeType":"YulFunctionCall","src":"11250:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11237:12:15"},"nodeType":"YulFunctionCall","src":"11237:33:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11227:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"11317:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"11319:77:15"},"nodeType":"YulFunctionCall","src":"11319:79:15"},"nodeType":"YulExpressionStatement","src":"11319:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11289:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"11297:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11286:2:15"},"nodeType":"YulFunctionCall","src":"11286:30:15"},"nodeType":"YulIf","src":"11283:117:15"},{"nodeType":"YulAssignment","src":"11414:83:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11469:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"11480:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11465:3:15"},"nodeType":"YulFunctionCall","src":"11465:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11489:7:15"}],"functionName":{"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulIdentifier","src":"11432:32:15"},"nodeType":"YulFunctionCall","src":"11432:65:15"},"variableNames":[{"name":"value8","nodeType":"YulIdentifier","src":"11414:6:15"},{"name":"value9","nodeType":"YulIdentifier","src":"11422:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9940:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9951:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9963:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9971:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9979:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9987:6:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"9995:6:15","type":""},{"name":"value5","nodeType":"YulTypedName","src":"10003:6:15","type":""},{"name":"value6","nodeType":"YulTypedName","src":"10011:6:15","type":""},{"name":"value7","nodeType":"YulTypedName","src":"10019:6:15","type":""},{"name":"value8","nodeType":"YulTypedName","src":"10027:6:15","type":""},{"name":"value9","nodeType":"YulTypedName","src":"10035:6:15","type":""}],"src":"9821:1693:15"},{"body":{"nodeType":"YulBlock","src":"11618:124:15","statements":[{"nodeType":"YulAssignment","src":"11628:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11640:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11651:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11636:3:15"},"nodeType":"YulFunctionCall","src":"11636:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11628:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11708:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11721:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11732:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11717:3:15"},"nodeType":"YulFunctionCall","src":"11717:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"11664:43:15"},"nodeType":"YulFunctionCall","src":"11664:71:15"},"nodeType":"YulExpressionStatement","src":"11664:71:15"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11590:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11602:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11613:4:15","type":""}],"src":"11520:222:15"},{"body":{"nodeType":"YulBlock","src":"11796:54:15","statements":[{"nodeType":"YulAssignment","src":"11806:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11824:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"11831:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11820:3:15"},"nodeType":"YulFunctionCall","src":"11820:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11840:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11836:3:15"},"nodeType":"YulFunctionCall","src":"11836:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11816:3:15"},"nodeType":"YulFunctionCall","src":"11816:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"11806:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11779:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"11789:6:15","type":""}],"src":"11748:102:15"},{"body":{"nodeType":"YulBlock","src":"11884:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11901:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11904:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11894:6:15"},"nodeType":"YulFunctionCall","src":"11894:88:15"},"nodeType":"YulExpressionStatement","src":"11894:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11998:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12001:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11991:6:15"},"nodeType":"YulFunctionCall","src":"11991:15:15"},"nodeType":"YulExpressionStatement","src":"11991:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12022:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12025:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12015:6:15"},"nodeType":"YulFunctionCall","src":"12015:15:15"},"nodeType":"YulExpressionStatement","src":"12015:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"11856:180:15"},{"body":{"nodeType":"YulBlock","src":"12085:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12095:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12117:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"12147:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"12125:21:15"},"nodeType":"YulFunctionCall","src":"12125:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12113:3:15"},"nodeType":"YulFunctionCall","src":"12113:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"12099:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"12264:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"12266:16:15"},"nodeType":"YulFunctionCall","src":"12266:18:15"},"nodeType":"YulExpressionStatement","src":"12266:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"12207:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"12219:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12204:2:15"},"nodeType":"YulFunctionCall","src":"12204:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"12243:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"12255:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12240:2:15"},"nodeType":"YulFunctionCall","src":"12240:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"12201:2:15"},"nodeType":"YulFunctionCall","src":"12201:62:15"},"nodeType":"YulIf","src":"12198:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12302:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"12306:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12295:6:15"},"nodeType":"YulFunctionCall","src":"12295:22:15"},"nodeType":"YulExpressionStatement","src":"12295:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12071:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"12079:4:15","type":""}],"src":"12042:281:15"},{"body":{"nodeType":"YulBlock","src":"12370:88:15","statements":[{"nodeType":"YulAssignment","src":"12380:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"12390:18:15"},"nodeType":"YulFunctionCall","src":"12390:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12380:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12439:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"12447:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"12419:19:15"},"nodeType":"YulFunctionCall","src":"12419:33:15"},"nodeType":"YulExpressionStatement","src":"12419:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"12354:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"12363:6:15","type":""}],"src":"12329:129:15"},{"body":{"nodeType":"YulBlock","src":"12575:229:15","statements":[{"body":{"nodeType":"YulBlock","src":"12680:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"12682:16:15"},"nodeType":"YulFunctionCall","src":"12682:18:15"},"nodeType":"YulExpressionStatement","src":"12682:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12652:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12660:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12649:2:15"},"nodeType":"YulFunctionCall","src":"12649:30:15"},"nodeType":"YulIf","src":"12646:56:15"},{"nodeType":"YulAssignment","src":"12712:25:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12724:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12732:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12720:3:15"},"nodeType":"YulFunctionCall","src":"12720:17:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"12712:4:15"}]},{"nodeType":"YulAssignment","src":"12774:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"12786:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12792:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12782:3:15"},"nodeType":"YulFunctionCall","src":"12782:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"12774:4:15"}]}]},"name":"array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"12559:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"12570:4:15","type":""}],"src":"12464:340:15"},{"body":{"nodeType":"YulBlock","src":"12899:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12916:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12919:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12909:6:15"},"nodeType":"YulFunctionCall","src":"12909:12:15"},"nodeType":"YulExpressionStatement","src":"12909:12:15"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"12810:117:15"},{"body":{"nodeType":"YulBlock","src":"13022:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13039:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13042:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13032:6:15"},"nodeType":"YulFunctionCall","src":"13032:12:15"},"nodeType":"YulExpressionStatement","src":"13032:12:15"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"12933:117:15"},{"body":{"nodeType":"YulBlock","src":"13189:494:15","statements":[{"body":{"nodeType":"YulBlock","src":"13233:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"13235:77:15"},"nodeType":"YulFunctionCall","src":"13235:79:15"},"nodeType":"YulExpressionStatement","src":"13235:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"13210:3:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"13215:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13206:3:15"},"nodeType":"YulFunctionCall","src":"13206:19:15"},{"kind":"number","nodeType":"YulLiteral","src":"13227:4:15","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13202:3:15"},"nodeType":"YulFunctionCall","src":"13202:30:15"},"nodeType":"YulIf","src":"13199:117:15"},{"nodeType":"YulAssignment","src":"13325:30:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13350:4:15","type":"","value":"0x40"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"13334:15:15"},"nodeType":"YulFunctionCall","src":"13334:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"13325:5:15"}]},{"nodeType":"YulBlock","src":"13365:150:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13400:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13414:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13404:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13440:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"13447:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13436:3:15"},"nodeType":"YulFunctionCall","src":"13436:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13479:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13490:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13475:3:15"},"nodeType":"YulFunctionCall","src":"13475:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"13499:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"13454:20:15"},"nodeType":"YulFunctionCall","src":"13454:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13429:6:15"},"nodeType":"YulFunctionCall","src":"13429:75:15"},"nodeType":"YulExpressionStatement","src":"13429:75:15"}]},{"nodeType":"YulBlock","src":"13525:151:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13560:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13574:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13564:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13601:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"13608:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13597:3:15"},"nodeType":"YulFunctionCall","src":"13597:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13640:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13651:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13636:3:15"},"nodeType":"YulFunctionCall","src":"13636:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"13660:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"13615:20:15"},"nodeType":"YulFunctionCall","src":"13615:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13590:6:15"},"nodeType":"YulFunctionCall","src":"13590:75:15"},"nodeType":"YulExpressionStatement","src":"13590:75:15"}]}]},"name":"abi_decode_t_struct$_Institution_$3529_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13164:9:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"13175:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"13183:5:15","type":""}],"src":"13105:578:15"},{"body":{"nodeType":"YulBlock","src":"13871:666:15","statements":[{"nodeType":"YulAssignment","src":"13881:119:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13992:6:15"}],"functionName":{"name":"array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13906:85:15"},"nodeType":"YulFunctionCall","src":"13906:93:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"13890:15:15"},"nodeType":"YulFunctionCall","src":"13890:110:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"13881:5:15"}]},{"nodeType":"YulVariableDeclaration","src":"14009:16:15","value":{"name":"array","nodeType":"YulIdentifier","src":"14020:5:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"14013:3:15","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14042:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"14049:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14035:6:15"},"nodeType":"YulFunctionCall","src":"14035:21:15"},"nodeType":"YulExpressionStatement","src":"14035:21:15"},{"nodeType":"YulAssignment","src":"14065:23:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14076:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14083:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14072:3:15"},"nodeType":"YulFunctionCall","src":"14072:16:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"14065:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"14098:44:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14116:6:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14128:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14136:4:15","type":"","value":"0x40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"14124:3:15"},"nodeType":"YulFunctionCall","src":"14124:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14112:3:15"},"nodeType":"YulFunctionCall","src":"14112:30:15"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"14102:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"14170:103:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"14184:77:15"},"nodeType":"YulFunctionCall","src":"14184:79:15"},"nodeType":"YulExpressionStatement","src":"14184:79:15"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"14157:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"14165:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14154:2:15"},"nodeType":"YulFunctionCall","src":"14154:15:15"},"nodeType":"YulIf","src":"14151:122:15"},{"body":{"nodeType":"YulBlock","src":"14358:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14373:21:15","value":{"name":"src","nodeType":"YulIdentifier","src":"14391:3:15"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"14377:10:15","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"14415:3:15"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"14470:10:15"},{"name":"end","nodeType":"YulIdentifier","src":"14482:3:15"}],"functionName":{"name":"abi_decode_t_struct$_Institution_$3529_memory_ptr","nodeType":"YulIdentifier","src":"14420:49:15"},"nodeType":"YulFunctionCall","src":"14420:66:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14408:6:15"},"nodeType":"YulFunctionCall","src":"14408:79:15"},"nodeType":"YulExpressionStatement","src":"14408:79:15"},{"nodeType":"YulAssignment","src":"14500:21:15","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"14511:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14516:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14507:3:15"},"nodeType":"YulFunctionCall","src":"14507:14:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"14500:3:15"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"14311:3:15"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"14316:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14308:2:15"},"nodeType":"YulFunctionCall","src":"14308:15:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"14324:25:15","statements":[{"nodeType":"YulAssignment","src":"14326:21:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"14337:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14342:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14333:3:15"},"nodeType":"YulFunctionCall","src":"14333:14:15"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"14326:3:15"}]}]},"pre":{"nodeType":"YulBlock","src":"14286:21:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14288:17:15","value":{"name":"offset","nodeType":"YulIdentifier","src":"14299:6:15"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"14292:3:15","type":""}]}]},"src":"14282:249:15"}]},"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"13841:6:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"13849:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"13857:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"13865:5:15","type":""}],"src":"13740:797:15"},{"body":{"nodeType":"YulBlock","src":"14700:322:15","statements":[{"body":{"nodeType":"YulBlock","src":"14749:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"14751:77:15"},"nodeType":"YulFunctionCall","src":"14751:79:15"},"nodeType":"YulExpressionStatement","src":"14751:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14728:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14736:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14724:3:15"},"nodeType":"YulFunctionCall","src":"14724:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"14743:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14720:3:15"},"nodeType":"YulFunctionCall","src":"14720:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14713:6:15"},"nodeType":"YulFunctionCall","src":"14713:35:15"},"nodeType":"YulIf","src":"14710:122:15"},{"nodeType":"YulVariableDeclaration","src":"14841:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14868:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14855:12:15"},"nodeType":"YulFunctionCall","src":"14855:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14845:6:15","type":""}]},{"nodeType":"YulAssignment","src":"14884:132:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14989:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14997:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14985:3:15"},"nodeType":"YulFunctionCall","src":"14985:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"15004:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"15012:3:15"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14893:91:15"},"nodeType":"YulFunctionCall","src":"14893:123:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"14884:5:15"}]}]},"name":"abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"14678:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"14686:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"14694:5:15","type":""}],"src":"14594:428:15"},{"body":{"nodeType":"YulBlock","src":"15165:605:15","statements":[{"body":{"nodeType":"YulBlock","src":"15211:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"15213:77:15"},"nodeType":"YulFunctionCall","src":"15213:79:15"},"nodeType":"YulExpressionStatement","src":"15213:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"15186:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"15195:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15182:3:15"},"nodeType":"YulFunctionCall","src":"15182:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"15207:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"15178:3:15"},"nodeType":"YulFunctionCall","src":"15178:32:15"},"nodeType":"YulIf","src":"15175:119:15"},{"nodeType":"YulBlock","src":"15304:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15319:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15333:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15323:6:15","type":""}]},{"nodeType":"YulAssignment","src":"15348:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15383:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15394:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15379:3:15"},"nodeType":"YulFunctionCall","src":"15379:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15403:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"15358:20:15"},"nodeType":"YulFunctionCall","src":"15358:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"15348:6:15"}]}]},{"nodeType":"YulBlock","src":"15431:332:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15446:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15477:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"15488:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15473:3:15"},"nodeType":"YulFunctionCall","src":"15473:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"15460:12:15"},"nodeType":"YulFunctionCall","src":"15460:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15450:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"15539:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"15541:77:15"},"nodeType":"YulFunctionCall","src":"15541:79:15"},"nodeType":"YulExpressionStatement","src":"15541:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15511:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15519:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15508:2:15"},"nodeType":"YulFunctionCall","src":"15508:30:15"},"nodeType":"YulIf","src":"15505:117:15"},{"nodeType":"YulAssignment","src":"15636:117:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15725:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15736:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15721:3:15"},"nodeType":"YulFunctionCall","src":"15721:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15745:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"15646:74:15"},"nodeType":"YulFunctionCall","src":"15646:107:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"15636:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15127:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"15138:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"15150:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15158:6:15","type":""}],"src":"15028:742:15"},{"body":{"nodeType":"YulBlock","src":"15834:40:15","statements":[{"nodeType":"YulAssignment","src":"15845:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15861:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15855:5:15"},"nodeType":"YulFunctionCall","src":"15855:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15845:6:15"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15817:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15827:6:15","type":""}],"src":"15776:98:15"},{"body":{"nodeType":"YulBlock","src":"15975:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15992:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"15997:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15985:6:15"},"nodeType":"YulFunctionCall","src":"15985:19:15"},"nodeType":"YulExpressionStatement","src":"15985:19:15"},{"nodeType":"YulAssignment","src":"16013:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16032:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"16037:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16028:3:15"},"nodeType":"YulFunctionCall","src":"16028:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16013:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15947:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"15952:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"15963:11:15","type":""}],"src":"15880:168:15"},{"body":{"nodeType":"YulBlock","src":"16116:184:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16126:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16135:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16130:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16195:63:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"16220:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"16225:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16216:3:15"},"nodeType":"YulFunctionCall","src":"16216:11:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16239:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"16244:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16235:3:15"},"nodeType":"YulFunctionCall","src":"16235:11:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16229:5:15"},"nodeType":"YulFunctionCall","src":"16229:18:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16209:6:15"},"nodeType":"YulFunctionCall","src":"16209:39:15"},"nodeType":"YulExpressionStatement","src":"16209:39:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16156:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"16159:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16153:2:15"},"nodeType":"YulFunctionCall","src":"16153:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16167:19:15","statements":[{"nodeType":"YulAssignment","src":"16169:15:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16178:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"16181:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16174:3:15"},"nodeType":"YulFunctionCall","src":"16174:10:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16169:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"16149:3:15","statements":[]},"src":"16145:113:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"16278:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16283:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16274:3:15"},"nodeType":"YulFunctionCall","src":"16274:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"16292:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16267:6:15"},"nodeType":"YulFunctionCall","src":"16267:27:15"},"nodeType":"YulExpressionStatement","src":"16267:27:15"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"16098:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"16103:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"16108:6:15","type":""}],"src":"16054:246:15"},{"body":{"nodeType":"YulBlock","src":"16396:283:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16406:52:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16452:5:15"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"16420:31:15"},"nodeType":"YulFunctionCall","src":"16420:38:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16410:6:15","type":""}]},{"nodeType":"YulAssignment","src":"16467:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16532:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16537:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16474:57:15"},"nodeType":"YulFunctionCall","src":"16474:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16467:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16592:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"16599:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16588:3:15"},"nodeType":"YulFunctionCall","src":"16588:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"16606:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16611:6:15"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"16553:34:15"},"nodeType":"YulFunctionCall","src":"16553:65:15"},"nodeType":"YulExpressionStatement","src":"16553:65:15"},{"nodeType":"YulAssignment","src":"16627:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16638:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"16665:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"16643:21:15"},"nodeType":"YulFunctionCall","src":"16643:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16634:3:15"},"nodeType":"YulFunctionCall","src":"16634:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16627:3:15"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16377:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16384:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16392:3:15","type":""}],"src":"16306:373:15"},{"body":{"nodeType":"YulBlock","src":"16801:193:15","statements":[{"nodeType":"YulAssignment","src":"16811:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16823:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16834:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16819:3:15"},"nodeType":"YulFunctionCall","src":"16819:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16811:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16858:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16869:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16854:3:15"},"nodeType":"YulFunctionCall","src":"16854:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16877:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"16883:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16873:3:15"},"nodeType":"YulFunctionCall","src":"16873:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16847:6:15"},"nodeType":"YulFunctionCall","src":"16847:47:15"},"nodeType":"YulExpressionStatement","src":"16847:47:15"},{"nodeType":"YulAssignment","src":"16903:84:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16973:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"16982:4:15"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16911:61:15"},"nodeType":"YulFunctionCall","src":"16911:76:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16903:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16773:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16785:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16796:4:15","type":""}],"src":"16685:309:15"},{"body":{"nodeType":"YulBlock","src":"17066:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"17112:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"17114:77:15"},"nodeType":"YulFunctionCall","src":"17114:79:15"},"nodeType":"YulExpressionStatement","src":"17114:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"17087:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"17096:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17083:3:15"},"nodeType":"YulFunctionCall","src":"17083:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"17108:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"17079:3:15"},"nodeType":"YulFunctionCall","src":"17079:32:15"},"nodeType":"YulIf","src":"17076:119:15"},{"nodeType":"YulBlock","src":"17205:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"17220:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"17234:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"17224:6:15","type":""}]},{"nodeType":"YulAssignment","src":"17249:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17284:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"17295:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17280:3:15"},"nodeType":"YulFunctionCall","src":"17280:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"17304:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"17259:20:15"},"nodeType":"YulFunctionCall","src":"17259:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"17249:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17036:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"17047:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"17059:6:15","type":""}],"src":"17000:329:15"},{"body":{"nodeType":"YulBlock","src":"17394:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17411:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17431:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"17416:14:15"},"nodeType":"YulFunctionCall","src":"17416:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17404:6:15"},"nodeType":"YulFunctionCall","src":"17404:34:15"},"nodeType":"YulExpressionStatement","src":"17404:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17382:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17389:3:15","type":""}],"src":"17335:109:15"},{"body":{"nodeType":"YulBlock","src":"17542:118:15","statements":[{"nodeType":"YulAssignment","src":"17552:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17564:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17575:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17560:3:15"},"nodeType":"YulFunctionCall","src":"17560:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17552:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17626:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17639:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17650:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17635:3:15"},"nodeType":"YulFunctionCall","src":"17635:17:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"17588:37:15"},"nodeType":"YulFunctionCall","src":"17588:65:15"},"nodeType":"YulExpressionStatement","src":"17588:65:15"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17514:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17526:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17537:4:15","type":""}],"src":"17450:210:15"},{"body":{"nodeType":"YulBlock","src":"17721:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17738:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17761:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"17743:17:15"},"nodeType":"YulFunctionCall","src":"17743:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17731:6:15"},"nodeType":"YulFunctionCall","src":"17731:37:15"},"nodeType":"YulExpressionStatement","src":"17731:37:15"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17709:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17716:3:15","type":""}],"src":"17666:108:15"},{"body":{"nodeType":"YulBlock","src":"17835:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17852:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17875:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"17857:17:15"},"nodeType":"YulFunctionCall","src":"17857:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17845:6:15"},"nodeType":"YulFunctionCall","src":"17845:37:15"},"nodeType":"YulExpressionStatement","src":"17845:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17823:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17830:3:15","type":""}],"src":"17780:108:15"},{"body":{"nodeType":"YulBlock","src":"17947:52:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17964:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17986:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"17969:16:15"},"nodeType":"YulFunctionCall","src":"17969:23:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17957:6:15"},"nodeType":"YulFunctionCall","src":"17957:36:15"},"nodeType":"YulExpressionStatement","src":"17957:36:15"}]},"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17935:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17942:3:15","type":""}],"src":"17894:105:15"},{"body":{"nodeType":"YulBlock","src":"18054:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18071:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18091:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"18076:14:15"},"nodeType":"YulFunctionCall","src":"18076:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18064:6:15"},"nodeType":"YulFunctionCall","src":"18064:34:15"},"nodeType":"YulExpressionStatement","src":"18064:34:15"}]},"name":"abi_encode_t_bool_to_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18042:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18049:3:15","type":""}],"src":"18005:99:15"},{"body":{"nodeType":"YulBlock","src":"18278:1651:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18288:28:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18304:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18309:6:15","type":"","value":"0x0120"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18300:3:15"},"nodeType":"YulFunctionCall","src":"18300:16:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"18292:4:15","type":""}]},{"nodeType":"YulBlock","src":"18326:166:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18363:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18393:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18400:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18389:3:15"},"nodeType":"YulFunctionCall","src":"18389:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18383:5:15"},"nodeType":"YulFunctionCall","src":"18383:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18367:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18453:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18471:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18476:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18467:3:15"},"nodeType":"YulFunctionCall","src":"18467:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18419:33:15"},"nodeType":"YulFunctionCall","src":"18419:63:15"},"nodeType":"YulExpressionStatement","src":"18419:63:15"}]},{"nodeType":"YulBlock","src":"18502:165:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18538:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18568:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18575:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18564:3:15"},"nodeType":"YulFunctionCall","src":"18564:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18558:5:15"},"nodeType":"YulFunctionCall","src":"18558:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18542:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18628:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18646:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18651:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18642:3:15"},"nodeType":"YulFunctionCall","src":"18642:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18594:33:15"},"nodeType":"YulFunctionCall","src":"18594:63:15"},"nodeType":"YulExpressionStatement","src":"18594:63:15"}]},{"nodeType":"YulBlock","src":"18677:178:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18726:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18756:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18763:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18752:3:15"},"nodeType":"YulFunctionCall","src":"18752:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18746:5:15"},"nodeType":"YulFunctionCall","src":"18746:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18730:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18816:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18834:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18839:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18830:3:15"},"nodeType":"YulFunctionCall","src":"18830:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18782:33:15"},"nodeType":"YulFunctionCall","src":"18782:63:15"},"nodeType":"YulExpressionStatement","src":"18782:63:15"}]},{"nodeType":"YulBlock","src":"18865:169:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18905:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18935:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18942:4:15","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18931:3:15"},"nodeType":"YulFunctionCall","src":"18931:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18925:5:15"},"nodeType":"YulFunctionCall","src":"18925:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18909:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18995:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19013:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19018:4:15","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19009:3:15"},"nodeType":"YulFunctionCall","src":"19009:14:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"18961:33:15"},"nodeType":"YulFunctionCall","src":"18961:63:15"},"nodeType":"YulExpressionStatement","src":"18961:63:15"}]},{"nodeType":"YulBlock","src":"19044:162:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19079:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19109:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19116:4:15","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19105:3:15"},"nodeType":"YulFunctionCall","src":"19105:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19099:5:15"},"nodeType":"YulFunctionCall","src":"19099:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19083:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19167:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19185:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19190:4:15","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19181:3:15"},"nodeType":"YulFunctionCall","src":"19181:14:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulIdentifier","src":"19135:31:15"},"nodeType":"YulFunctionCall","src":"19135:61:15"},"nodeType":"YulExpressionStatement","src":"19135:61:15"}]},{"nodeType":"YulBlock","src":"19216:165:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19258:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19288:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19295:4:15","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19284:3:15"},"nodeType":"YulFunctionCall","src":"19284:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19278:5:15"},"nodeType":"YulFunctionCall","src":"19278:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19262:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19342:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19360:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19365:4:15","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19356:3:15"},"nodeType":"YulFunctionCall","src":"19356:14:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool","nodeType":"YulIdentifier","src":"19314:27:15"},"nodeType":"YulFunctionCall","src":"19314:57:15"},"nodeType":"YulExpressionStatement","src":"19314:57:15"}]},{"nodeType":"YulBlock","src":"19391:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19435:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19465:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19472:4:15","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19461:3:15"},"nodeType":"YulFunctionCall","src":"19461:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19455:5:15"},"nodeType":"YulFunctionCall","src":"19455:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19439:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19525:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19543:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19548:4:15","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19539:3:15"},"nodeType":"YulFunctionCall","src":"19539:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"19491:33:15"},"nodeType":"YulFunctionCall","src":"19491:63:15"},"nodeType":"YulExpressionStatement","src":"19491:63:15"}]},{"nodeType":"YulBlock","src":"19574:168:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19615:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19645:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19652:4:15","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19641:3:15"},"nodeType":"YulFunctionCall","src":"19641:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19635:5:15"},"nodeType":"YulFunctionCall","src":"19635:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19619:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19703:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19721:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19726:4:15","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19717:3:15"},"nodeType":"YulFunctionCall","src":"19717:14:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulIdentifier","src":"19671:31:15"},"nodeType":"YulFunctionCall","src":"19671:61:15"},"nodeType":"YulExpressionStatement","src":"19671:61:15"}]},{"nodeType":"YulBlock","src":"19752:170:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19789:45:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19819:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19826:6:15","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19815:3:15"},"nodeType":"YulFunctionCall","src":"19815:18:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19809:5:15"},"nodeType":"YulFunctionCall","src":"19809:25:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19793:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19881:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19899:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19904:6:15","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19895:3:15"},"nodeType":"YulFunctionCall","src":"19895:16:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"19847:33:15"},"nodeType":"YulFunctionCall","src":"19847:65:15"},"nodeType":"YulExpressionStatement","src":"19847:65:15"}]}]},"name":"abi_encode_t_struct$_Order_$3844_memory_ptr_to_t_struct$_Order_$3844_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18265:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18272:3:15","type":""}],"src":"18166:1763:15"},{"body":{"nodeType":"YulBlock","src":"20079:171:15","statements":[{"nodeType":"YulAssignment","src":"20089:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20101:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20112:3:15","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20097:3:15"},"nodeType":"YulFunctionCall","src":"20097:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20089:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20216:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20229:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20240:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20225:3:15"},"nodeType":"YulFunctionCall","src":"20225:17:15"}],"functionName":{"name":"abi_encode_t_struct$_Order_$3844_memory_ptr_to_t_struct$_Order_$3844_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20126:89:15"},"nodeType":"YulFunctionCall","src":"20126:117:15"},"nodeType":"YulExpressionStatement","src":"20126:117:15"}]},"name":"abi_encode_tuple_t_struct$_Order_$3844_memory_ptr__to_t_struct$_Order_$3844_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20051:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20063:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20074:4:15","type":""}],"src":"19935:315:15"},{"body":{"nodeType":"YulBlock","src":"20339:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"20385:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"20387:77:15"},"nodeType":"YulFunctionCall","src":"20387:79:15"},"nodeType":"YulExpressionStatement","src":"20387:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"20360:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"20369:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20356:3:15"},"nodeType":"YulFunctionCall","src":"20356:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"20381:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"20352:3:15"},"nodeType":"YulFunctionCall","src":"20352:32:15"},"nodeType":"YulIf","src":"20349:119:15"},{"nodeType":"YulBlock","src":"20478:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20493:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"20507:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"20497:6:15","type":""}]},{"nodeType":"YulAssignment","src":"20522:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20557:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"20568:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20553:3:15"},"nodeType":"YulFunctionCall","src":"20553:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"20577:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"20532:20:15"},"nodeType":"YulFunctionCall","src":"20532:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"20522:6:15"}]}]},{"nodeType":"YulBlock","src":"20605:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20620:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"20634:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"20624:6:15","type":""}]},{"nodeType":"YulAssignment","src":"20650:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20685:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"20696:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20681:3:15"},"nodeType":"YulFunctionCall","src":"20681:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"20705:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"20660:20:15"},"nodeType":"YulFunctionCall","src":"20660:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"20650:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20301:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"20312:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"20324:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20332:6:15","type":""}],"src":"20256:474:15"},{"body":{"nodeType":"YulBlock","src":"20801:262:15","statements":[{"body":{"nodeType":"YulBlock","src":"20847:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"20849:77:15"},"nodeType":"YulFunctionCall","src":"20849:79:15"},"nodeType":"YulExpressionStatement","src":"20849:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"20822:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"20831:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20818:3:15"},"nodeType":"YulFunctionCall","src":"20818:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"20843:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"20814:3:15"},"nodeType":"YulFunctionCall","src":"20814:32:15"},"nodeType":"YulIf","src":"20811:119:15"},{"nodeType":"YulBlock","src":"20940:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20955:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"20969:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"20959:6:15","type":""}]},{"nodeType":"YulAssignment","src":"20984:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21018:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"21029:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21014:3:15"},"nodeType":"YulFunctionCall","src":"21014:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"21038:7:15"}],"functionName":{"name":"abi_decode_t_uint64","nodeType":"YulIdentifier","src":"20994:19:15"},"nodeType":"YulFunctionCall","src":"20994:52:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"20984:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20771:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"20782:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"20794:6:15","type":""}],"src":"20736:327:15"},{"body":{"nodeType":"YulBlock","src":"21311:395:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21321:26:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21337:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21342:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21333:3:15"},"nodeType":"YulFunctionCall","src":"21333:14:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"21325:4:15","type":""}]},{"nodeType":"YulBlock","src":"21357:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21392:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21422:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"21429:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21418:3:15"},"nodeType":"YulFunctionCall","src":"21418:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21412:5:15"},"nodeType":"YulFunctionCall","src":"21412:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"21396:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"21482:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21500:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21505:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21496:3:15"},"nodeType":"YulFunctionCall","src":"21496:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"21448:33:15"},"nodeType":"YulFunctionCall","src":"21448:63:15"},"nodeType":"YulExpressionStatement","src":"21448:63:15"}]},{"nodeType":"YulBlock","src":"21531:168:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21570:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21600:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"21607:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21596:3:15"},"nodeType":"YulFunctionCall","src":"21596:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21590:5:15"},"nodeType":"YulFunctionCall","src":"21590:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"21574:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"21660:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21678:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21683:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21674:3:15"},"nodeType":"YulFunctionCall","src":"21674:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"21626:33:15"},"nodeType":"YulFunctionCall","src":"21626:63:15"},"nodeType":"YulExpressionStatement","src":"21626:63:15"}]}]},"name":"abi_encode_t_struct$_InstitutionByCode_$3534_memory_ptr_to_t_struct$_InstitutionByCode_$3534_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"21298:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"21305:3:15","type":""}],"src":"21175:531:15"},{"body":{"nodeType":"YulBlock","src":"21880:194:15","statements":[{"nodeType":"YulAssignment","src":"21890:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21902:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21913:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21898:3:15"},"nodeType":"YulFunctionCall","src":"21898:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21890:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22040:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22053:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"22064:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22049:3:15"},"nodeType":"YulFunctionCall","src":"22049:17:15"}],"functionName":{"name":"abi_encode_t_struct$_InstitutionByCode_$3534_memory_ptr_to_t_struct$_InstitutionByCode_$3534_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21926:113:15"},"nodeType":"YulFunctionCall","src":"21926:141:15"},"nodeType":"YulExpressionStatement","src":"21926:141:15"}]},"name":"abi_encode_tuple_t_struct$_InstitutionByCode_$3534_memory_ptr__to_t_struct$_InstitutionByCode_$3534_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21852:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21864:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21875:4:15","type":""}],"src":"21712:362:15"},{"body":{"nodeType":"YulBlock","src":"22178:124:15","statements":[{"nodeType":"YulAssignment","src":"22188:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22200:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"22211:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22196:3:15"},"nodeType":"YulFunctionCall","src":"22196:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22188:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22268:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22281:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"22292:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22277:3:15"},"nodeType":"YulFunctionCall","src":"22277:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22224:43:15"},"nodeType":"YulFunctionCall","src":"22224:71:15"},"nodeType":"YulExpressionStatement","src":"22224:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22150:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22162:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22173:4:15","type":""}],"src":"22080:222:15"},{"body":{"nodeType":"YulBlock","src":"22405:516:15","statements":[{"body":{"nodeType":"YulBlock","src":"22451:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"22453:77:15"},"nodeType":"YulFunctionCall","src":"22453:79:15"},"nodeType":"YulExpressionStatement","src":"22453:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"22426:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"22435:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22422:3:15"},"nodeType":"YulFunctionCall","src":"22422:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"22447:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22418:3:15"},"nodeType":"YulFunctionCall","src":"22418:32:15"},"nodeType":"YulIf","src":"22415:119:15"},{"nodeType":"YulBlock","src":"22544:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22559:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"22573:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22563:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22588:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22623:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"22634:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22619:3:15"},"nodeType":"YulFunctionCall","src":"22619:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22643:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"22598:20:15"},"nodeType":"YulFunctionCall","src":"22598:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"22588:6:15"}]}]},{"nodeType":"YulBlock","src":"22671:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22686:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"22700:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22690:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22716:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22751:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"22762:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22747:3:15"},"nodeType":"YulFunctionCall","src":"22747:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22771:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"22726:20:15"},"nodeType":"YulFunctionCall","src":"22726:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"22716:6:15"}]}]},{"nodeType":"YulBlock","src":"22799:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22814:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"22828:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22818:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22844:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22876:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"22887:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22872:3:15"},"nodeType":"YulFunctionCall","src":"22872:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22896:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"22854:17:15"},"nodeType":"YulFunctionCall","src":"22854:50:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"22844:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22359:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"22370:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"22382:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22390:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22398:6:15","type":""}],"src":"22308:613:15"},{"body":{"nodeType":"YulBlock","src":"22990:52:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23007:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23029:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"23012:16:15"},"nodeType":"YulFunctionCall","src":"23012:23:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23000:6:15"},"nodeType":"YulFunctionCall","src":"23000:36:15"},"nodeType":"YulExpressionStatement","src":"23000:36:15"}]},"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22978:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22985:3:15","type":""}],"src":"22927:115:15"},{"body":{"nodeType":"YulBlock","src":"23113:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23130:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23153:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"23135:17:15"},"nodeType":"YulFunctionCall","src":"23135:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23123:6:15"},"nodeType":"YulFunctionCall","src":"23123:37:15"},"nodeType":"YulExpressionStatement","src":"23123:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23101:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"23108:3:15","type":""}],"src":"23048:118:15"},{"body":{"nodeType":"YulBlock","src":"23296:204:15","statements":[{"nodeType":"YulAssignment","src":"23306:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23318:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23329:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23314:3:15"},"nodeType":"YulFunctionCall","src":"23314:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23306:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"23384:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23397:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23408:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23393:3:15"},"nodeType":"YulFunctionCall","src":"23393:17:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulIdentifier","src":"23342:41:15"},"nodeType":"YulFunctionCall","src":"23342:69:15"},"nodeType":"YulExpressionStatement","src":"23342:69:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23465:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23478:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23489:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23474:3:15"},"nodeType":"YulFunctionCall","src":"23474:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"23421:43:15"},"nodeType":"YulFunctionCall","src":"23421:72:15"},"nodeType":"YulExpressionStatement","src":"23421:72:15"}]},"name":"abi_encode_tuple_t_uint64_t_uint256__to_t_uint64_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23260:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23272:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23280:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23291:4:15","type":""}],"src":"23172:328:15"},{"body":{"nodeType":"YulBlock","src":"23593:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"23642:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"23644:77:15"},"nodeType":"YulFunctionCall","src":"23644:79:15"},"nodeType":"YulExpressionStatement","src":"23644:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23621:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23629:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23617:3:15"},"nodeType":"YulFunctionCall","src":"23617:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"23636:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23613:3:15"},"nodeType":"YulFunctionCall","src":"23613:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"23606:6:15"},"nodeType":"YulFunctionCall","src":"23606:35:15"},"nodeType":"YulIf","src":"23603:122:15"},{"nodeType":"YulAssignment","src":"23734:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23757:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23744:12:15"},"nodeType":"YulFunctionCall","src":"23744:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"23734:6:15"}]},{"body":{"nodeType":"YulBlock","src":"23807:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"23809:77:15"},"nodeType":"YulFunctionCall","src":"23809:79:15"},"nodeType":"YulExpressionStatement","src":"23809:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"23779:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23787:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23776:2:15"},"nodeType":"YulFunctionCall","src":"23776:30:15"},"nodeType":"YulIf","src":"23773:117:15"},{"nodeType":"YulAssignment","src":"23899:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23915:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23923:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23911:3:15"},"nodeType":"YulFunctionCall","src":"23911:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"23899:8:15"}]},{"body":{"nodeType":"YulBlock","src":"23982:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"23984:77:15"},"nodeType":"YulFunctionCall","src":"23984:79:15"},"nodeType":"YulExpressionStatement","src":"23984:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"23947:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"23961:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23969:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"23957:3:15"},"nodeType":"YulFunctionCall","src":"23957:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23943:3:15"},"nodeType":"YulFunctionCall","src":"23943:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"23977:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23940:2:15"},"nodeType":"YulFunctionCall","src":"23940:41:15"},"nodeType":"YulIf","src":"23937:128:15"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"23560:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"23568:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"23576:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"23586:6:15","type":""}],"src":"23519:552:15"},{"body":{"nodeType":"YulBlock","src":"24162:442:15","statements":[{"body":{"nodeType":"YulBlock","src":"24208:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"24210:77:15"},"nodeType":"YulFunctionCall","src":"24210:79:15"},"nodeType":"YulExpressionStatement","src":"24210:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"24183:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"24192:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24179:3:15"},"nodeType":"YulFunctionCall","src":"24179:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"24204:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"24175:3:15"},"nodeType":"YulFunctionCall","src":"24175:32:15"},"nodeType":"YulIf","src":"24172:119:15"},{"nodeType":"YulBlock","src":"24301:296:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24316:45:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24347:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"24358:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24343:3:15"},"nodeType":"YulFunctionCall","src":"24343:17:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"24330:12:15"},"nodeType":"YulFunctionCall","src":"24330:31:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24320:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"24408:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"24410:77:15"},"nodeType":"YulFunctionCall","src":"24410:79:15"},"nodeType":"YulExpressionStatement","src":"24410:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"24380:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"24388:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24377:2:15"},"nodeType":"YulFunctionCall","src":"24377:30:15"},"nodeType":"YulIf","src":"24374:117:15"},{"nodeType":"YulAssignment","src":"24505:82:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24559:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24570:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24555:3:15"},"nodeType":"YulFunctionCall","src":"24555:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24579:7:15"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"24523:31:15"},"nodeType":"YulFunctionCall","src":"24523:64:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"24505:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"24513:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24124:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"24135:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"24147:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24155:6:15","type":""}],"src":"24077:527:15"},{"body":{"nodeType":"YulBlock","src":"24710:519:15","statements":[{"body":{"nodeType":"YulBlock","src":"24756:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"24758:77:15"},"nodeType":"YulFunctionCall","src":"24758:79:15"},"nodeType":"YulExpressionStatement","src":"24758:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"24731:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"24740:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24727:3:15"},"nodeType":"YulFunctionCall","src":"24727:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"24752:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"24723:3:15"},"nodeType":"YulFunctionCall","src":"24723:32:15"},"nodeType":"YulIf","src":"24720:119:15"},{"nodeType":"YulBlock","src":"24849:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24864:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"24878:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24868:6:15","type":""}]},{"nodeType":"YulAssignment","src":"24893:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24928:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24939:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24924:3:15"},"nodeType":"YulFunctionCall","src":"24924:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24948:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"24903:20:15"},"nodeType":"YulFunctionCall","src":"24903:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"24893:6:15"}]}]},{"nodeType":"YulBlock","src":"24976:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24991:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25005:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24995:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25021:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25056:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25067:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25052:3:15"},"nodeType":"YulFunctionCall","src":"25052:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25076:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"25031:20:15"},"nodeType":"YulFunctionCall","src":"25031:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"25021:6:15"}]}]},{"nodeType":"YulBlock","src":"25104:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"25119:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25133:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25123:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25149:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25184:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25195:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25180:3:15"},"nodeType":"YulFunctionCall","src":"25180:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25204:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"25159:20:15"},"nodeType":"YulFunctionCall","src":"25159:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"25149:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24664:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"24675:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"24687:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24695:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"24703:6:15","type":""}],"src":"24610:619:15"},{"body":{"nodeType":"YulBlock","src":"25318:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"25364:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"25366:77:15"},"nodeType":"YulFunctionCall","src":"25366:79:15"},"nodeType":"YulExpressionStatement","src":"25366:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"25339:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"25348:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25335:3:15"},"nodeType":"YulFunctionCall","src":"25335:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"25360:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25331:3:15"},"nodeType":"YulFunctionCall","src":"25331:32:15"},"nodeType":"YulIf","src":"25328:119:15"},{"nodeType":"YulBlock","src":"25457:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"25472:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25486:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25476:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25501:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25536:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25547:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25532:3:15"},"nodeType":"YulFunctionCall","src":"25532:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25556:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"25511:20:15"},"nodeType":"YulFunctionCall","src":"25511:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"25501:6:15"}]}]},{"nodeType":"YulBlock","src":"25584:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"25599:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25613:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25603:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25629:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25664:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25675:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25660:3:15"},"nodeType":"YulFunctionCall","src":"25660:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25684:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"25639:20:15"},"nodeType":"YulFunctionCall","src":"25639:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"25629:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25280:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"25291:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"25303:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"25311:6:15","type":""}],"src":"25235:474:15"},{"body":{"nodeType":"YulBlock","src":"25743:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25760:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25763:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25753:6:15"},"nodeType":"YulFunctionCall","src":"25753:88:15"},"nodeType":"YulExpressionStatement","src":"25753:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25857:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"25860:4:15","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25850:6:15"},"nodeType":"YulFunctionCall","src":"25850:15:15"},"nodeType":"YulExpressionStatement","src":"25850:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25881:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25884:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25874:6:15"},"nodeType":"YulFunctionCall","src":"25874:15:15"},"nodeType":"YulExpressionStatement","src":"25874:15:15"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"25715:180:15"},{"body":{"nodeType":"YulBlock","src":"25997:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26014:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"26019:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26007:6:15"},"nodeType":"YulFunctionCall","src":"26007:19:15"},"nodeType":"YulExpressionStatement","src":"26007:19:15"},{"nodeType":"YulAssignment","src":"26035:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26054:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"26059:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26050:3:15"},"nodeType":"YulFunctionCall","src":"26050:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"26035:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25969:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"25974:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"25985:11:15","type":""}],"src":"25901:169:15"},{"body":{"nodeType":"YulBlock","src":"26182:58:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"26204:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"26212:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26200:3:15"},"nodeType":"YulFunctionCall","src":"26200:14:15"},{"hexValue":"4f6e6c7941676772656761746f72","kind":"string","nodeType":"YulLiteral","src":"26216:16:15","type":"","value":"OnlyAggregator"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26193:6:15"},"nodeType":"YulFunctionCall","src":"26193:40:15"},"nodeType":"YulExpressionStatement","src":"26193:40:15"}]},"name":"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"26174:6:15","type":""}],"src":"26076:164:15"},{"body":{"nodeType":"YulBlock","src":"26392:220:15","statements":[{"nodeType":"YulAssignment","src":"26402:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26468:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"26473:2:15","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26409:58:15"},"nodeType":"YulFunctionCall","src":"26409:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"26402:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26574:3:15"}],"functionName":{"name":"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","nodeType":"YulIdentifier","src":"26485:88:15"},"nodeType":"YulFunctionCall","src":"26485:93:15"},"nodeType":"YulExpressionStatement","src":"26485:93:15"},{"nodeType":"YulAssignment","src":"26587:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26598:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"26603:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26594:3:15"},"nodeType":"YulFunctionCall","src":"26594:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"26587:3:15"}]}]},"name":"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26380:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"26388:3:15","type":""}],"src":"26246:366:15"},{"body":{"nodeType":"YulBlock","src":"26789:248:15","statements":[{"nodeType":"YulAssignment","src":"26799:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26811:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"26822:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26807:3:15"},"nodeType":"YulFunctionCall","src":"26807:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26799:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26846:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"26857:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26842:3:15"},"nodeType":"YulFunctionCall","src":"26842:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"26865:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"26871:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26861:3:15"},"nodeType":"YulFunctionCall","src":"26861:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26835:6:15"},"nodeType":"YulFunctionCall","src":"26835:47:15"},"nodeType":"YulExpressionStatement","src":"26835:47:15"},{"nodeType":"YulAssignment","src":"26891:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27025:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26899:124:15"},"nodeType":"YulFunctionCall","src":"26899:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26891:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26769:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"26784:4:15","type":""}],"src":"26618:419:15"},{"body":{"nodeType":"YulBlock","src":"27149:58:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"27171:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"27179:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27167:3:15"},"nodeType":"YulFunctionCall","src":"27167:14:15"},{"hexValue":"4f7264657246756c66696c6c6564","kind":"string","nodeType":"YulLiteral","src":"27183:16:15","type":"","value":"OrderFulfilled"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27160:6:15"},"nodeType":"YulFunctionCall","src":"27160:40:15"},"nodeType":"YulExpressionStatement","src":"27160:40:15"}]},"name":"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"27141:6:15","type":""}],"src":"27043:164:15"},{"body":{"nodeType":"YulBlock","src":"27359:220:15","statements":[{"nodeType":"YulAssignment","src":"27369:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27435:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"27440:2:15","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27376:58:15"},"nodeType":"YulFunctionCall","src":"27376:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"27369:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27541:3:15"}],"functionName":{"name":"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","nodeType":"YulIdentifier","src":"27452:88:15"},"nodeType":"YulFunctionCall","src":"27452:93:15"},"nodeType":"YulExpressionStatement","src":"27452:93:15"},{"nodeType":"YulAssignment","src":"27554:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27565:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"27570:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27561:3:15"},"nodeType":"YulFunctionCall","src":"27561:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"27554:3:15"}]}]},"name":"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"27347:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"27355:3:15","type":""}],"src":"27213:366:15"},{"body":{"nodeType":"YulBlock","src":"27756:248:15","statements":[{"nodeType":"YulAssignment","src":"27766:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27778:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27789:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27774:3:15"},"nodeType":"YulFunctionCall","src":"27774:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27766:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27813:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27824:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27809:3:15"},"nodeType":"YulFunctionCall","src":"27809:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27832:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"27838:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27828:3:15"},"nodeType":"YulFunctionCall","src":"27828:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27802:6:15"},"nodeType":"YulFunctionCall","src":"27802:47:15"},"nodeType":"YulExpressionStatement","src":"27802:47:15"},{"nodeType":"YulAssignment","src":"27858:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27992:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27866:124:15"},"nodeType":"YulFunctionCall","src":"27866:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27858:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27736:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27751:4:15","type":""}],"src":"27585:419:15"},{"body":{"nodeType":"YulBlock","src":"28038:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28055:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28058:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28048:6:15"},"nodeType":"YulFunctionCall","src":"28048:88:15"},"nodeType":"YulExpressionStatement","src":"28048:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28152:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"28155:4:15","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28145:6:15"},"nodeType":"YulFunctionCall","src":"28145:15:15"},"nodeType":"YulExpressionStatement","src":"28145:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28176:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28179:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"28169:6:15"},"nodeType":"YulFunctionCall","src":"28169:15:15"},"nodeType":"YulExpressionStatement","src":"28169:15:15"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"28010:180:15"},{"body":{"nodeType":"YulBlock","src":"28240:172:15","statements":[{"nodeType":"YulAssignment","src":"28250:24:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"28272:1:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"28255:16:15"},"nodeType":"YulFunctionCall","src":"28255:19:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"28250:1:15"}]},{"nodeType":"YulAssignment","src":"28283:24:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"28305:1:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"28288:16:15"},"nodeType":"YulFunctionCall","src":"28288:19:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"28283:1:15"}]},{"nodeType":"YulAssignment","src":"28316:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"28328:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"28331:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28324:3:15"},"nodeType":"YulFunctionCall","src":"28324:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"28316:4:15"}]},{"body":{"nodeType":"YulBlock","src":"28383:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"28385:16:15"},"nodeType":"YulFunctionCall","src":"28385:18:15"},"nodeType":"YulExpressionStatement","src":"28385:18:15"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"28349:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"28355:26:15","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"28346:2:15"},"nodeType":"YulFunctionCall","src":"28346:36:15"},"nodeType":"YulIf","src":"28343:62:15"}]},"name":"checked_sub_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"28226:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"28229:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"28235:4:15","type":""}],"src":"28196:216:15"},{"body":{"nodeType":"YulBlock","src":"28544:206:15","statements":[{"nodeType":"YulAssignment","src":"28554:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28566:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28577:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28562:3:15"},"nodeType":"YulFunctionCall","src":"28562:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"28554:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"28634:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28647:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28658:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28643:3:15"},"nodeType":"YulFunctionCall","src":"28643:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"28590:43:15"},"nodeType":"YulFunctionCall","src":"28590:71:15"},"nodeType":"YulExpressionStatement","src":"28590:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"28715:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28728:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28739:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28724:3:15"},"nodeType":"YulFunctionCall","src":"28724:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"28671:43:15"},"nodeType":"YulFunctionCall","src":"28671:72:15"},"nodeType":"YulExpressionStatement","src":"28671:72:15"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28508:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"28520:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"28528:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"28539:4:15","type":""}],"src":"28418:332:15"},{"body":{"nodeType":"YulBlock","src":"28816:77:15","statements":[{"nodeType":"YulAssignment","src":"28826:22:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"28841:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"28835:5:15"},"nodeType":"YulFunctionCall","src":"28835:13:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"28826:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28881:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"28857:23:15"},"nodeType":"YulFunctionCall","src":"28857:30:15"},"nodeType":"YulExpressionStatement","src":"28857:30:15"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"28794:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"28802:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"28810:5:15","type":""}],"src":"28756:137:15"},{"body":{"nodeType":"YulBlock","src":"28973:271:15","statements":[{"body":{"nodeType":"YulBlock","src":"29019:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"29021:77:15"},"nodeType":"YulFunctionCall","src":"29021:79:15"},"nodeType":"YulExpressionStatement","src":"29021:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"28994:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"29003:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28990:3:15"},"nodeType":"YulFunctionCall","src":"28990:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"29015:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"28986:3:15"},"nodeType":"YulFunctionCall","src":"28986:32:15"},"nodeType":"YulIf","src":"28983:119:15"},{"nodeType":"YulBlock","src":"29112:125:15","statements":[{"nodeType":"YulVariableDeclaration","src":"29127:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"29141:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"29131:6:15","type":""}]},{"nodeType":"YulAssignment","src":"29156:71:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29199:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"29210:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29195:3:15"},"nodeType":"YulFunctionCall","src":"29195:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"29219:7:15"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"29166:28:15"},"nodeType":"YulFunctionCall","src":"29166:61:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"29156:6:15"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28943:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"28954:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"28966:6:15","type":""}],"src":"28899:345:15"},{"body":{"nodeType":"YulBlock","src":"29282:28:15","statements":[{"nodeType":"YulAssignment","src":"29292:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"29299:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"29292:3:15"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29268:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"29278:3:15","type":""}],"src":"29250:60:15"},{"body":{"nodeType":"YulBlock","src":"29374:80:15","statements":[{"nodeType":"YulAssignment","src":"29384:64:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29440:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"29423:16:15"},"nodeType":"YulFunctionCall","src":"29423:23:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"29414:8:15"},"nodeType":"YulFunctionCall","src":"29414:33:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"29397:16:15"},"nodeType":"YulFunctionCall","src":"29397:51:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"29384:9:15"}]}]},"name":"convert_t_uint64_to_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29354:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"29364:9:15","type":""}],"src":"29316:138:15"},{"body":{"nodeType":"YulBlock","src":"29523:64:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29540:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29574:5:15"}],"functionName":{"name":"convert_t_uint64_to_t_uint96","nodeType":"YulIdentifier","src":"29545:28:15"},"nodeType":"YulFunctionCall","src":"29545:35:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29533:6:15"},"nodeType":"YulFunctionCall","src":"29533:48:15"},"nodeType":"YulExpressionStatement","src":"29533:48:15"}]},"name":"abi_encode_t_uint64_to_t_uint96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29511:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"29518:3:15","type":""}],"src":"29460:127:15"},{"body":{"nodeType":"YulBlock","src":"29745:286:15","statements":[{"nodeType":"YulAssignment","src":"29755:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29767:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29778:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29763:3:15"},"nodeType":"YulFunctionCall","src":"29763:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29755:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"29835:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29848:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29859:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29844:3:15"},"nodeType":"YulFunctionCall","src":"29844:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"29791:43:15"},"nodeType":"YulFunctionCall","src":"29791:71:15"},"nodeType":"YulExpressionStatement","src":"29791:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"29916:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29929:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29940:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29925:3:15"},"nodeType":"YulFunctionCall","src":"29925:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"29872:43:15"},"nodeType":"YulFunctionCall","src":"29872:72:15"},"nodeType":"YulExpressionStatement","src":"29872:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"29996:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30009:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30020:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30005:3:15"},"nodeType":"YulFunctionCall","src":"30005:18:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"29954:41:15"},"nodeType":"YulFunctionCall","src":"29954:70:15"},"nodeType":"YulExpressionStatement","src":"29954:70:15"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29701:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"29713:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"29721:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"29729:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"29740:4:15","type":""}],"src":"29593:438:15"},{"body":{"nodeType":"YulBlock","src":"30085:362:15","statements":[{"nodeType":"YulAssignment","src":"30095:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"30118:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"30100:17:15"},"nodeType":"YulFunctionCall","src":"30100:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"30095:1:15"}]},{"nodeType":"YulAssignment","src":"30129:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"30152:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"30134:17:15"},"nodeType":"YulFunctionCall","src":"30134:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"30129:1:15"}]},{"nodeType":"YulVariableDeclaration","src":"30163:28:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"30186:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"30189:1:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"30182:3:15"},"nodeType":"YulFunctionCall","src":"30182:9:15"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"30167:11:15","type":""}]},{"nodeType":"YulAssignment","src":"30200:41:15","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"30229:11:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"30211:17:15"},"nodeType":"YulFunctionCall","src":"30211:30:15"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"30200:7:15"}]},{"body":{"nodeType":"YulBlock","src":"30418:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"30420:16:15"},"nodeType":"YulFunctionCall","src":"30420:18:15"},"nodeType":"YulExpressionStatement","src":"30420:18:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"30351:1:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"30344:6:15"},"nodeType":"YulFunctionCall","src":"30344:9:15"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"30374:1:15"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"30381:7:15"},{"name":"x","nodeType":"YulIdentifier","src":"30390:1:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"30377:3:15"},"nodeType":"YulFunctionCall","src":"30377:15:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"30371:2:15"},"nodeType":"YulFunctionCall","src":"30371:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"30324:2:15"},"nodeType":"YulFunctionCall","src":"30324:83:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"30304:6:15"},"nodeType":"YulFunctionCall","src":"30304:113:15"},"nodeType":"YulIf","src":"30301:139:15"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"30068:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"30071:1:15","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"30077:7:15","type":""}],"src":"30037:410:15"},{"body":{"nodeType":"YulBlock","src":"30481:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30498:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30501:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30491:6:15"},"nodeType":"YulFunctionCall","src":"30491:88:15"},"nodeType":"YulExpressionStatement","src":"30491:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30595:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"30598:4:15","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30588:6:15"},"nodeType":"YulFunctionCall","src":"30588:15:15"},"nodeType":"YulExpressionStatement","src":"30588:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30619:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30622:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"30612:6:15"},"nodeType":"YulFunctionCall","src":"30612:15:15"},"nodeType":"YulExpressionStatement","src":"30612:15:15"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"30453:180:15"},{"body":{"nodeType":"YulBlock","src":"30681:143:15","statements":[{"nodeType":"YulAssignment","src":"30691:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"30714:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"30696:17:15"},"nodeType":"YulFunctionCall","src":"30696:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"30691:1:15"}]},{"nodeType":"YulAssignment","src":"30725:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"30748:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"30730:17:15"},"nodeType":"YulFunctionCall","src":"30730:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"30725:1:15"}]},{"body":{"nodeType":"YulBlock","src":"30772:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"30774:16:15"},"nodeType":"YulFunctionCall","src":"30774:18:15"},"nodeType":"YulExpressionStatement","src":"30774:18:15"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"30769:1:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"30762:6:15"},"nodeType":"YulFunctionCall","src":"30762:9:15"},"nodeType":"YulIf","src":"30759:35:15"},{"nodeType":"YulAssignment","src":"30804:14:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"30813:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"30816:1:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"30809:3:15"},"nodeType":"YulFunctionCall","src":"30809:9:15"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"30804:1:15"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"30670:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"30673:1:15","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"30679:1:15","type":""}],"src":"30639:185:15"},{"body":{"nodeType":"YulBlock","src":"30936:60:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"30958:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"30966:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30954:3:15"},"nodeType":"YulFunctionCall","src":"30954:14:15"},{"hexValue":"53656e646572466565546f6f48696768","kind":"string","nodeType":"YulLiteral","src":"30970:18:15","type":"","value":"SenderFeeTooHigh"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30947:6:15"},"nodeType":"YulFunctionCall","src":"30947:42:15"},"nodeType":"YulExpressionStatement","src":"30947:42:15"}]},"name":"store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"30928:6:15","type":""}],"src":"30830:166:15"},{"body":{"nodeType":"YulBlock","src":"31148:220:15","statements":[{"nodeType":"YulAssignment","src":"31158:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31224:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"31229:2:15","type":"","value":"16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31165:58:15"},"nodeType":"YulFunctionCall","src":"31165:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"31158:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31330:3:15"}],"functionName":{"name":"store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","nodeType":"YulIdentifier","src":"31241:88:15"},"nodeType":"YulFunctionCall","src":"31241:93:15"},"nodeType":"YulExpressionStatement","src":"31241:93:15"},{"nodeType":"YulAssignment","src":"31343:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31354:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"31359:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31350:3:15"},"nodeType":"YulFunctionCall","src":"31350:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"31343:3:15"}]}]},"name":"abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"31136:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"31144:3:15","type":""}],"src":"31002:366:15"},{"body":{"nodeType":"YulBlock","src":"31545:248:15","statements":[{"nodeType":"YulAssignment","src":"31555:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31567:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"31578:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31563:3:15"},"nodeType":"YulFunctionCall","src":"31563:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31555:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31602:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"31613:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31598:3:15"},"nodeType":"YulFunctionCall","src":"31598:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"31621:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"31627:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"31617:3:15"},"nodeType":"YulFunctionCall","src":"31617:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31591:6:15"},"nodeType":"YulFunctionCall","src":"31591:47:15"},"nodeType":"YulExpressionStatement","src":"31591:47:15"},{"nodeType":"YulAssignment","src":"31647:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"31781:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31655:124:15"},"nodeType":"YulFunctionCall","src":"31655:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31647:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31525:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"31540:4:15","type":""}],"src":"31374:419:15"},{"body":{"nodeType":"YulBlock","src":"31953:288:15","statements":[{"nodeType":"YulAssignment","src":"31963:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31975:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"31986:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31971:3:15"},"nodeType":"YulFunctionCall","src":"31971:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31963:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"32043:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32056:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32067:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32052:3:15"},"nodeType":"YulFunctionCall","src":"32052:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"31999:43:15"},"nodeType":"YulFunctionCall","src":"31999:71:15"},"nodeType":"YulExpressionStatement","src":"31999:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"32124:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32137:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32148:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32133:3:15"},"nodeType":"YulFunctionCall","src":"32133:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"32080:43:15"},"nodeType":"YulFunctionCall","src":"32080:72:15"},"nodeType":"YulExpressionStatement","src":"32080:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"32206:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32219:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32230:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32215:3:15"},"nodeType":"YulFunctionCall","src":"32215:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"32162:43:15"},"nodeType":"YulFunctionCall","src":"32162:72:15"},"nodeType":"YulExpressionStatement","src":"32162:72:15"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31909:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"31921:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"31929:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"31937:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"31948:4:15","type":""}],"src":"31799:442:15"},{"body":{"nodeType":"YulBlock","src":"32290:190:15","statements":[{"nodeType":"YulAssignment","src":"32300:33:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"32327:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32309:17:15"},"nodeType":"YulFunctionCall","src":"32309:24:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"32300:5:15"}]},{"body":{"nodeType":"YulBlock","src":"32423:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"32425:16:15"},"nodeType":"YulFunctionCall","src":"32425:18:15"},"nodeType":"YulExpressionStatement","src":"32425:18:15"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"32348:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"32355:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"32345:2:15"},"nodeType":"YulFunctionCall","src":"32345:77:15"},"nodeType":"YulIf","src":"32342:103:15"},{"nodeType":"YulAssignment","src":"32454:20:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"32465:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"32472:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32461:3:15"},"nodeType":"YulFunctionCall","src":"32461:13:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"32454:3:15"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"32276:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"32286:3:15","type":""}],"src":"32247:233:15"},{"body":{"nodeType":"YulBlock","src":"32545:81:15","statements":[{"nodeType":"YulAssignment","src":"32555:65:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"32612:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"32595:16:15"},"nodeType":"YulFunctionCall","src":"32595:23:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"32586:8:15"},"nodeType":"YulFunctionCall","src":"32586:33:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32568:17:15"},"nodeType":"YulFunctionCall","src":"32568:52:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"32555:9:15"}]}]},"name":"convert_t_uint96_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"32525:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"32535:9:15","type":""}],"src":"32486:140:15"},{"body":{"nodeType":"YulBlock","src":"32696:65:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32713:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"32748:5:15"}],"functionName":{"name":"convert_t_uint96_to_t_uint256","nodeType":"YulIdentifier","src":"32718:29:15"},"nodeType":"YulFunctionCall","src":"32718:36:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32706:6:15"},"nodeType":"YulFunctionCall","src":"32706:49:15"},"nodeType":"YulExpressionStatement","src":"32706:49:15"}]},"name":"abi_encode_t_uint96_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"32684:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"32691:3:15","type":""}],"src":"32632:129:15"},{"body":{"nodeType":"YulBlock","src":"32831:82:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"32854:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"32859:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"32864:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"32841:12:15"},"nodeType":"YulFunctionCall","src":"32841:30:15"},"nodeType":"YulExpressionStatement","src":"32841:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"32891:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"32896:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32887:3:15"},"nodeType":"YulFunctionCall","src":"32887:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"32905:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32880:6:15"},"nodeType":"YulFunctionCall","src":"32880:27:15"},"nodeType":"YulExpressionStatement","src":"32880:27:15"}]},"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"32813:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"32818:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"32823:6:15","type":""}],"src":"32767:146:15"},{"body":{"nodeType":"YulBlock","src":"33045:215:15","statements":[{"nodeType":"YulAssignment","src":"33055:78:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33121:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"33126:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"33062:58:15"},"nodeType":"YulFunctionCall","src":"33062:71:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"33055:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"33180:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"33187:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"33192:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"33143:36:15"},"nodeType":"YulFunctionCall","src":"33143:56:15"},"nodeType":"YulExpressionStatement","src":"33143:56:15"},{"nodeType":"YulAssignment","src":"33208:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33219:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"33246:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"33224:21:15"},"nodeType":"YulFunctionCall","src":"33224:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33215:3:15"},"nodeType":"YulFunctionCall","src":"33215:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"33208:3:15"}]}]},"name":"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"33018:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"33025:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"33033:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"33041:3:15","type":""}],"src":"32943:317:15"},{"body":{"nodeType":"YulBlock","src":"33477:451:15","statements":[{"nodeType":"YulAssignment","src":"33487:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33499:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"33510:3:15","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33495:3:15"},"nodeType":"YulFunctionCall","src":"33495:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"33487:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"33567:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33580:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"33591:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33576:3:15"},"nodeType":"YulFunctionCall","src":"33576:17:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"33524:42:15"},"nodeType":"YulFunctionCall","src":"33524:70:15"},"nodeType":"YulExpressionStatement","src":"33524:70:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"33648:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33661:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"33672:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33657:3:15"},"nodeType":"YulFunctionCall","src":"33657:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"33604:43:15"},"nodeType":"YulFunctionCall","src":"33604:72:15"},"nodeType":"YulExpressionStatement","src":"33604:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"33730:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33743:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"33754:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33739:3:15"},"nodeType":"YulFunctionCall","src":"33739:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"33686:43:15"},"nodeType":"YulFunctionCall","src":"33686:72:15"},"nodeType":"YulExpressionStatement","src":"33686:72:15"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33779:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"33790:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33775:3:15"},"nodeType":"YulFunctionCall","src":"33775:18:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"33799:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"33805:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"33795:3:15"},"nodeType":"YulFunctionCall","src":"33795:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33768:6:15"},"nodeType":"YulFunctionCall","src":"33768:48:15"},"nodeType":"YulExpressionStatement","src":"33768:48:15"},{"nodeType":"YulAssignment","src":"33825:96:15","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"33899:6:15"},{"name":"value4","nodeType":"YulIdentifier","src":"33907:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"33916:4:15"}],"functionName":{"name":"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"33833:65:15"},"nodeType":"YulFunctionCall","src":"33833:88:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"33825:4:15"}]}]},"name":"abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"33417:9:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"33429:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"33437:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"33445:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"33453:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"33461:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"33472:4:15","type":""}],"src":"33266:662:15"},{"body":{"nodeType":"YulBlock","src":"33962:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"33979:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"33982:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33972:6:15"},"nodeType":"YulFunctionCall","src":"33972:88:15"},"nodeType":"YulExpressionStatement","src":"33972:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"34076:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"34079:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34069:6:15"},"nodeType":"YulFunctionCall","src":"34069:15:15"},"nodeType":"YulExpressionStatement","src":"34069:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"34100:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"34103:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"34093:6:15"},"nodeType":"YulFunctionCall","src":"34093:15:15"},"nodeType":"YulExpressionStatement","src":"34093:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"33934:180:15"},{"body":{"nodeType":"YulBlock","src":"34171:269:15","statements":[{"nodeType":"YulAssignment","src":"34181:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"34195:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"34201:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"34191:3:15"},"nodeType":"YulFunctionCall","src":"34191:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"34181:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"34212:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"34242:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"34248:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"34238:3:15"},"nodeType":"YulFunctionCall","src":"34238:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"34216:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"34289:51:15","statements":[{"nodeType":"YulAssignment","src":"34303:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"34317:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"34325:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"34313:3:15"},"nodeType":"YulFunctionCall","src":"34313:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"34303:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"34269:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"34262:6:15"},"nodeType":"YulFunctionCall","src":"34262:26:15"},"nodeType":"YulIf","src":"34259:81:15"},{"body":{"nodeType":"YulBlock","src":"34392:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"34406:16:15"},"nodeType":"YulFunctionCall","src":"34406:18:15"},"nodeType":"YulExpressionStatement","src":"34406:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"34356:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"34379:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"34387:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"34376:2:15"},"nodeType":"YulFunctionCall","src":"34376:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"34353:2:15"},"nodeType":"YulFunctionCall","src":"34353:38:15"},"nodeType":"YulIf","src":"34350:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"34155:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"34164:6:15","type":""}],"src":"34120:320:15"},{"body":{"nodeType":"YulBlock","src":"34552:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"34574:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"34582:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34570:3:15"},"nodeType":"YulFunctionCall","src":"34570:14:15"},{"hexValue":"50617963726573743a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"34586:24:15","type":"","value":"Paycrest: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34563:6:15"},"nodeType":"YulFunctionCall","src":"34563:48:15"},"nodeType":"YulExpressionStatement","src":"34563:48:15"}]},"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"34544:6:15","type":""}],"src":"34446:172:15"},{"body":{"nodeType":"YulBlock","src":"34770:220:15","statements":[{"nodeType":"YulAssignment","src":"34780:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"34846:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"34851:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"34787:58:15"},"nodeType":"YulFunctionCall","src":"34787:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"34780:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"34952:3:15"}],"functionName":{"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulIdentifier","src":"34863:88:15"},"nodeType":"YulFunctionCall","src":"34863:93:15"},"nodeType":"YulExpressionStatement","src":"34863:93:15"},{"nodeType":"YulAssignment","src":"34965:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"34976:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"34981:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34972:3:15"},"nodeType":"YulFunctionCall","src":"34972:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"34965:3:15"}]}]},"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"34758:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"34766:3:15","type":""}],"src":"34624:366:15"},{"body":{"nodeType":"YulBlock","src":"35167:248:15","statements":[{"nodeType":"YulAssignment","src":"35177:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35189:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35200:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35185:3:15"},"nodeType":"YulFunctionCall","src":"35185:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35177:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35224:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35235:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35220:3:15"},"nodeType":"YulFunctionCall","src":"35220:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"35243:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"35249:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"35239:3:15"},"nodeType":"YulFunctionCall","src":"35239:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35213:6:15"},"nodeType":"YulFunctionCall","src":"35213:47:15"},"nodeType":"YulExpressionStatement","src":"35213:47:15"},{"nodeType":"YulAssignment","src":"35269:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"35403:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"35277:124:15"},"nodeType":"YulFunctionCall","src":"35277:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35269:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"35147:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"35162:4:15","type":""}],"src":"34996:419:15"},{"body":{"nodeType":"YulBlock","src":"35517:122:15","statements":[{"nodeType":"YulAssignment","src":"35527:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35539:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35550:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35535:3:15"},"nodeType":"YulFunctionCall","src":"35535:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35527:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"35605:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35618:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35629:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35614:3:15"},"nodeType":"YulFunctionCall","src":"35614:17:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulIdentifier","src":"35563:41:15"},"nodeType":"YulFunctionCall","src":"35563:69:15"},"nodeType":"YulExpressionStatement","src":"35563:69:15"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"35489:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"35501:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"35512:4:15","type":""}],"src":"35421:218:15"},{"body":{"nodeType":"YulBlock","src":"35793:282:15","statements":[{"nodeType":"YulAssignment","src":"35803:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35815:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35826:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35811:3:15"},"nodeType":"YulFunctionCall","src":"35811:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35803:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"35883:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35896:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35907:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35892:3:15"},"nodeType":"YulFunctionCall","src":"35892:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"35839:43:15"},"nodeType":"YulFunctionCall","src":"35839:71:15"},"nodeType":"YulExpressionStatement","src":"35839:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"35964:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35977:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35988:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35973:3:15"},"nodeType":"YulFunctionCall","src":"35973:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"35920:43:15"},"nodeType":"YulFunctionCall","src":"35920:72:15"},"nodeType":"YulExpressionStatement","src":"35920:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"36040:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36053:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36064:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36049:3:15"},"nodeType":"YulFunctionCall","src":"36049:18:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"36002:37:15"},"nodeType":"YulFunctionCall","src":"36002:66:15"},"nodeType":"YulExpressionStatement","src":"36002:66:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"35749:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"35761:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"35769:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"35777:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"35788:4:15","type":""}],"src":"35645:430:15"},{"body":{"nodeType":"YulBlock","src":"36187:127:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"36209:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"36217:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36205:3:15"},"nodeType":"YulFunctionCall","src":"36205:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"36221:34:15","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"36198:6:15"},"nodeType":"YulFunctionCall","src":"36198:58:15"},"nodeType":"YulExpressionStatement","src":"36198:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"36277:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"36285:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36273:3:15"},"nodeType":"YulFunctionCall","src":"36273:15:15"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"36290:16:15","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"36266:6:15"},"nodeType":"YulFunctionCall","src":"36266:41:15"},"nodeType":"YulExpressionStatement","src":"36266:41:15"}]},"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"36179:6:15","type":""}],"src":"36081:233:15"},{"body":{"nodeType":"YulBlock","src":"36466:220:15","statements":[{"nodeType":"YulAssignment","src":"36476:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36542:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"36547:2:15","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"36483:58:15"},"nodeType":"YulFunctionCall","src":"36483:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"36476:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36648:3:15"}],"functionName":{"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nodeType":"YulIdentifier","src":"36559:88:15"},"nodeType":"YulFunctionCall","src":"36559:93:15"},"nodeType":"YulExpressionStatement","src":"36559:93:15"},{"nodeType":"YulAssignment","src":"36661:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36672:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"36677:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36668:3:15"},"nodeType":"YulFunctionCall","src":"36668:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"36661:3:15"}]}]},"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"36454:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"36462:3:15","type":""}],"src":"36320:366:15"},{"body":{"nodeType":"YulBlock","src":"36863:248:15","statements":[{"nodeType":"YulAssignment","src":"36873:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36885:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36896:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36881:3:15"},"nodeType":"YulFunctionCall","src":"36881:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"36873:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36920:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36931:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36916:3:15"},"nodeType":"YulFunctionCall","src":"36916:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"36939:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"36945:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"36935:3:15"},"nodeType":"YulFunctionCall","src":"36935:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"36909:6:15"},"nodeType":"YulFunctionCall","src":"36909:47:15"},"nodeType":"YulExpressionStatement","src":"36909:47:15"},{"nodeType":"YulAssignment","src":"36965:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"37099:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"36973:124:15"},"nodeType":"YulFunctionCall","src":"36973:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"36965:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"36843:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"36858:4:15","type":""}],"src":"36692:419:15"},{"body":{"nodeType":"YulBlock","src":"37170:32:15","statements":[{"nodeType":"YulAssignment","src":"37180:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"37191:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"37180:7:15"}]}]},"name":"cleanup_t_rational_1_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37152:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"37162:7:15","type":""}],"src":"37117:85:15"},{"body":{"nodeType":"YulBlock","src":"37251:43:15","statements":[{"nodeType":"YulAssignment","src":"37261:27:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37276:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"37283:4:15","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"37272:3:15"},"nodeType":"YulFunctionCall","src":"37272:16:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"37261:7:15"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37233:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"37243:7:15","type":""}],"src":"37208:86:15"},{"body":{"nodeType":"YulBlock","src":"37366:88:15","statements":[{"nodeType":"YulAssignment","src":"37376:72:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37440:5:15"}],"functionName":{"name":"cleanup_t_rational_1_by_1","nodeType":"YulIdentifier","src":"37414:25:15"},"nodeType":"YulFunctionCall","src":"37414:32:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"37405:8:15"},"nodeType":"YulFunctionCall","src":"37405:42:15"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"37389:15:15"},"nodeType":"YulFunctionCall","src":"37389:59:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"37376:9:15"}]}]},"name":"convert_t_rational_1_by_1_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37346:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"37356:9:15","type":""}],"src":"37300:154:15"},{"body":{"nodeType":"YulBlock","src":"37531:72:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"37548:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37590:5:15"}],"functionName":{"name":"convert_t_rational_1_by_1_to_t_uint8","nodeType":"YulIdentifier","src":"37553:36:15"},"nodeType":"YulFunctionCall","src":"37553:43:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"37541:6:15"},"nodeType":"YulFunctionCall","src":"37541:56:15"},"nodeType":"YulExpressionStatement","src":"37541:56:15"}]},"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37519:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"37526:3:15","type":""}],"src":"37460:143:15"},{"body":{"nodeType":"YulBlock","src":"37713:130:15","statements":[{"nodeType":"YulAssignment","src":"37723:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"37735:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"37746:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37731:3:15"},"nodeType":"YulFunctionCall","src":"37731:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"37723:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"37809:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"37822:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"37833:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37818:3:15"},"nodeType":"YulFunctionCall","src":"37818:17:15"}],"functionName":{"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"37759:49:15"},"nodeType":"YulFunctionCall","src":"37759:77:15"},"nodeType":"YulExpressionStatement","src":"37759:77:15"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"37685:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"37697:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"37708:4:15","type":""}],"src":"37609:234:15"},{"body":{"nodeType":"YulBlock","src":"37914:31:15","statements":[{"nodeType":"YulAssignment","src":"37925:13:15","value":{"name":"len","nodeType":"YulIdentifier","src":"37935:3:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"37925:6:15"}]}]},"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37892:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"37899:3:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"37907:6:15","type":""}],"src":"37849:96:15"},{"body":{"nodeType":"YulBlock","src":"38004:87:15","statements":[{"nodeType":"YulAssignment","src":"38014:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"38022:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"38014:4:15"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"38042:1:15","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"38045:3:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"38035:6:15"},"nodeType":"YulFunctionCall","src":"38035:14:15"},"nodeType":"YulExpressionStatement","src":"38035:14:15"},{"nodeType":"YulAssignment","src":"38058:26:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"38076:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"38079:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"38066:9:15"},"nodeType":"YulFunctionCall","src":"38066:18:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"38058:4:15"}]}]},"name":"array_dataslot_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"37991:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"37999:4:15","type":""}],"src":"37951:140:15"},{"body":{"nodeType":"YulBlock","src":"38141:49:15","statements":[{"nodeType":"YulAssignment","src":"38151:33:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"38169:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"38176:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38165:3:15"},"nodeType":"YulFunctionCall","src":"38165:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"38181:2:15","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"38161:3:15"},"nodeType":"YulFunctionCall","src":"38161:23:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"38151:6:15"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"38124:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"38134:6:15","type":""}],"src":"38097:93:15"},{"body":{"nodeType":"YulBlock","src":"38249:54:15","statements":[{"nodeType":"YulAssignment","src":"38259:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"38284:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"38290:5:15"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"38280:3:15"},"nodeType":"YulFunctionCall","src":"38280:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"38259:8:15"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"38224:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"38230:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"38240:8:15","type":""}],"src":"38196:107:15"},{"body":{"nodeType":"YulBlock","src":"38385:317:15","statements":[{"nodeType":"YulVariableDeclaration","src":"38395:35:15","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"38416:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"38428:1:15","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"38412:3:15"},"nodeType":"YulFunctionCall","src":"38412:18:15"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"38399:9:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"38439:109:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"38470:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"38481:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"38451:18:15"},"nodeType":"YulFunctionCall","src":"38451:97:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"38443:4:15","type":""}]},{"nodeType":"YulAssignment","src":"38557:51:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"38588:9:15"},{"name":"toInsert","nodeType":"YulIdentifier","src":"38599:8:15"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"38569:18:15"},"nodeType":"YulFunctionCall","src":"38569:39:15"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"38557:8:15"}]},{"nodeType":"YulAssignment","src":"38617:30:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"38630:5:15"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"38641:4:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"38637:3:15"},"nodeType":"YulFunctionCall","src":"38637:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"38626:3:15"},"nodeType":"YulFunctionCall","src":"38626:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"38617:5:15"}]},{"nodeType":"YulAssignment","src":"38656:40:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"38669:5:15"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"38680:8:15"},{"name":"mask","nodeType":"YulIdentifier","src":"38690:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"38676:3:15"},"nodeType":"YulFunctionCall","src":"38676:19:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"38666:2:15"},"nodeType":"YulFunctionCall","src":"38666:30:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"38656:6:15"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"38346:5:15","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"38353:10:15","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"38365:8:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"38378:6:15","type":""}],"src":"38309:393:15"},{"body":{"nodeType":"YulBlock","src":"38768:82:15","statements":[{"nodeType":"YulAssignment","src":"38778:66:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"38836:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"38818:17:15"},"nodeType":"YulFunctionCall","src":"38818:24:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"38809:8:15"},"nodeType":"YulFunctionCall","src":"38809:34:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"38791:17:15"},"nodeType":"YulFunctionCall","src":"38791:53:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"38778:9:15"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"38748:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"38758:9:15","type":""}],"src":"38708:142:15"},{"body":{"nodeType":"YulBlock","src":"38903:28:15","statements":[{"nodeType":"YulAssignment","src":"38913:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"38920:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"38913:3:15"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"38889:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"38899:3:15","type":""}],"src":"38856:75:15"},{"body":{"nodeType":"YulBlock","src":"39013:193:15","statements":[{"nodeType":"YulVariableDeclaration","src":"39023:63:15","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"39078:7:15"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"39047:30:15"},"nodeType":"YulFunctionCall","src":"39047:39:15"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"39027:16:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"39102:4:15"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"39142:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"39136:5:15"},"nodeType":"YulFunctionCall","src":"39136:11:15"},{"name":"offset","nodeType":"YulIdentifier","src":"39149:6:15"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"39181:16:15"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"39157:23:15"},"nodeType":"YulFunctionCall","src":"39157:41:15"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"39108:27:15"},"nodeType":"YulFunctionCall","src":"39108:91:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"39095:6:15"},"nodeType":"YulFunctionCall","src":"39095:105:15"},"nodeType":"YulExpressionStatement","src":"39095:105:15"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"38990:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"38996:6:15","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"39004:7:15","type":""}],"src":"38937:269:15"},{"body":{"nodeType":"YulBlock","src":"39261:24:15","statements":[{"nodeType":"YulAssignment","src":"39271:8:15","value":{"kind":"number","nodeType":"YulLiteral","src":"39278:1:15","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"39271:3:15"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"39257:3:15","type":""}],"src":"39212:73:15"},{"body":{"nodeType":"YulBlock","src":"39344:136:15","statements":[{"nodeType":"YulVariableDeclaration","src":"39354:46:15","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"39368:30:15"},"nodeType":"YulFunctionCall","src":"39368:32:15"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"39358:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"39453:4:15"},{"name":"offset","nodeType":"YulIdentifier","src":"39459:6:15"},{"name":"zero_0","nodeType":"YulIdentifier","src":"39467:6:15"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"39409:43:15"},"nodeType":"YulFunctionCall","src":"39409:65:15"},"nodeType":"YulExpressionStatement","src":"39409:65:15"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"39330:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"39336:6:15","type":""}],"src":"39291:189:15"},{"body":{"nodeType":"YulBlock","src":"39536:136:15","statements":[{"body":{"nodeType":"YulBlock","src":"39603:63:15","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"39647:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"39654:1:15","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"39617:29:15"},"nodeType":"YulFunctionCall","src":"39617:39:15"},"nodeType":"YulExpressionStatement","src":"39617:39:15"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"39556:5:15"},{"name":"end","nodeType":"YulIdentifier","src":"39563:3:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"39553:2:15"},"nodeType":"YulFunctionCall","src":"39553:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"39568:26:15","statements":[{"nodeType":"YulAssignment","src":"39570:22:15","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"39583:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"39590:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39579:3:15"},"nodeType":"YulFunctionCall","src":"39579:13:15"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"39570:5:15"}]}]},"pre":{"nodeType":"YulBlock","src":"39550:2:15","statements":[]},"src":"39546:120:15"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"39524:5:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"39531:3:15","type":""}],"src":"39486:186:15"},{"body":{"nodeType":"YulBlock","src":"39756:463:15","statements":[{"body":{"nodeType":"YulBlock","src":"39782:430:15","statements":[{"nodeType":"YulVariableDeclaration","src":"39796:53:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"39843:5:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"39812:30:15"},"nodeType":"YulFunctionCall","src":"39812:37:15"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"39800:8:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"39862:63:15","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"39885:8:15"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"39913:10:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"39895:17:15"},"nodeType":"YulFunctionCall","src":"39895:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39881:3:15"},"nodeType":"YulFunctionCall","src":"39881:44:15"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"39866:11:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"40082:27:15","statements":[{"nodeType":"YulAssignment","src":"40084:23:15","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"40099:8:15"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"40084:11:15"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"40066:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"40078:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"40063:2:15"},"nodeType":"YulFunctionCall","src":"40063:18:15"},"nodeType":"YulIf","src":"40060:49:15"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"40151:11:15"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"40168:8:15"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"40196:3:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"40178:17:15"},"nodeType":"YulFunctionCall","src":"40178:22:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40164:3:15"},"nodeType":"YulFunctionCall","src":"40164:37:15"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"40122:28:15"},"nodeType":"YulFunctionCall","src":"40122:80:15"},"nodeType":"YulExpressionStatement","src":"40122:80:15"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"39773:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"39778:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"39770:2:15"},"nodeType":"YulFunctionCall","src":"39770:11:15"},"nodeType":"YulIf","src":"39767:445:15"}]},"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"39732:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"39739:3:15","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"39744:10:15","type":""}],"src":"39678:541:15"},{"body":{"nodeType":"YulBlock","src":"40288:54:15","statements":[{"nodeType":"YulAssignment","src":"40298:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"40323:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"40329:5:15"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"40319:3:15"},"nodeType":"YulFunctionCall","src":"40319:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"40298:8:15"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"40263:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"40269:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"40279:8:15","type":""}],"src":"40225:117:15"},{"body":{"nodeType":"YulBlock","src":"40399:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"40409:68:15","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40458:1:15","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"40461:5:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"40454:3:15"},"nodeType":"YulFunctionCall","src":"40454:13:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40473:1:15","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"40469:3:15"},"nodeType":"YulFunctionCall","src":"40469:6:15"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"40425:28:15"},"nodeType":"YulFunctionCall","src":"40425:51:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"40421:3:15"},"nodeType":"YulFunctionCall","src":"40421:56:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"40413:4:15","type":""}]},{"nodeType":"YulAssignment","src":"40486:25:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"40500:4:15"},{"name":"mask","nodeType":"YulIdentifier","src":"40506:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"40496:3:15"},"nodeType":"YulFunctionCall","src":"40496:15:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"40486:6:15"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"40376:4:15","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"40382:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"40392:6:15","type":""}],"src":"40348:169:15"},{"body":{"nodeType":"YulBlock","src":"40603:214:15","statements":[{"nodeType":"YulAssignment","src":"40736:37:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"40763:4:15"},{"name":"len","nodeType":"YulIdentifier","src":"40769:3:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"40744:18:15"},"nodeType":"YulFunctionCall","src":"40744:29:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"40736:4:15"}]},{"nodeType":"YulAssignment","src":"40782:29:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"40793:4:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40803:1:15","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"40806:3:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"40799:3:15"},"nodeType":"YulFunctionCall","src":"40799:11:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"40790:2:15"},"nodeType":"YulFunctionCall","src":"40790:21:15"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"40782:4:15"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"40584:4:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"40590:3:15","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"40598:4:15","type":""}],"src":"40522:295:15"},{"body":{"nodeType":"YulBlock","src":"40919:1301:15","statements":[{"nodeType":"YulVariableDeclaration","src":"40930:57:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"40978:3:15"},{"name":"len","nodeType":"YulIdentifier","src":"40983:3:15"}],"functionName":{"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"40944:33:15"},"nodeType":"YulFunctionCall","src":"40944:43:15"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"40934:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"41072:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"41074:16:15"},"nodeType":"YulFunctionCall","src":"41074:18:15"},"nodeType":"YulExpressionStatement","src":"41074:18:15"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"41044:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"41052:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"41041:2:15"},"nodeType":"YulFunctionCall","src":"41041:30:15"},"nodeType":"YulIf","src":"41038:56:15"},{"nodeType":"YulVariableDeclaration","src":"41104:52:15","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"41150:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"41144:5:15"},"nodeType":"YulFunctionCall","src":"41144:11:15"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"41118:25:15"},"nodeType":"YulFunctionCall","src":"41118:38:15"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"41108:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"41248:4:15"},{"name":"oldLen","nodeType":"YulIdentifier","src":"41254:6:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"41262:6:15"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulIdentifier","src":"41203:44:15"},"nodeType":"YulFunctionCall","src":"41203:66:15"},"nodeType":"YulExpressionStatement","src":"41203:66:15"},{"nodeType":"YulVariableDeclaration","src":"41279:18:15","value":{"kind":"number","nodeType":"YulLiteral","src":"41296:1:15","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"41283:9:15","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"41344:624:15","statements":[{"nodeType":"YulVariableDeclaration","src":"41358:37:15","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"41377:6:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"41389:4:15","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"41385:3:15"},"nodeType":"YulFunctionCall","src":"41385:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"41373:3:15"},"nodeType":"YulFunctionCall","src":"41373:22:15"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"41362:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"41409:50:15","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"41454:4:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"41423:30:15"},"nodeType":"YulFunctionCall","src":"41423:36:15"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"41413:6:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"41472:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"41481:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"41476:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"41540:170:15","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"41565:6:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"41590:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"41595:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41586:3:15"},"nodeType":"YulFunctionCall","src":"41586:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"41573:12:15"},"nodeType":"YulFunctionCall","src":"41573:33:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"41558:6:15"},"nodeType":"YulFunctionCall","src":"41558:49:15"},"nodeType":"YulExpressionStatement","src":"41558:49:15"},{"nodeType":"YulAssignment","src":"41624:24:15","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"41638:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"41646:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41634:3:15"},"nodeType":"YulFunctionCall","src":"41634:14:15"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"41624:6:15"}]},{"nodeType":"YulAssignment","src":"41665:31:15","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"41682:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"41693:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41678:3:15"},"nodeType":"YulFunctionCall","src":"41678:18:15"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"41665:9:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"41506:1:15"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"41509:7:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"41503:2:15"},"nodeType":"YulFunctionCall","src":"41503:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"41518:21:15","statements":[{"nodeType":"YulAssignment","src":"41520:17:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"41529:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"41532:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41525:3:15"},"nodeType":"YulFunctionCall","src":"41525:12:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"41520:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"41499:3:15","statements":[]},"src":"41495:215:15"},{"body":{"nodeType":"YulBlock","src":"41746:163:15","statements":[{"nodeType":"YulVariableDeclaration","src":"41764:50:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"41798:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"41803:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41794:3:15"},"nodeType":"YulFunctionCall","src":"41794:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"41781:12:15"},"nodeType":"YulFunctionCall","src":"41781:33:15"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"41768:9:15","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"41838:6:15"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"41865:9:15"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"41880:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"41888:4:15","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"41876:3:15"},"nodeType":"YulFunctionCall","src":"41876:17:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"41846:18:15"},"nodeType":"YulFunctionCall","src":"41846:48:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"41831:6:15"},"nodeType":"YulFunctionCall","src":"41831:64:15"},"nodeType":"YulExpressionStatement","src":"41831:64:15"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"41729:7:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"41738:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"41726:2:15"},"nodeType":"YulFunctionCall","src":"41726:19:15"},"nodeType":"YulIf","src":"41723:186:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"41929:4:15"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"41943:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"41951:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"41939:3:15"},"nodeType":"YulFunctionCall","src":"41939:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"41955:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41935:3:15"},"nodeType":"YulFunctionCall","src":"41935:22:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"41922:6:15"},"nodeType":"YulFunctionCall","src":"41922:36:15"},"nodeType":"YulExpressionStatement","src":"41922:36:15"}]},"nodeType":"YulCase","src":"41337:631:15","value":{"kind":"number","nodeType":"YulLiteral","src":"41342:1:15","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"41985:229:15","statements":[{"nodeType":"YulVariableDeclaration","src":"41999:14:15","value":{"kind":"number","nodeType":"YulLiteral","src":"42012:1:15","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"42003:5:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"42036:74:15","statements":[{"nodeType":"YulAssignment","src":"42054:42:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"42080:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"42085:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42076:3:15"},"nodeType":"YulFunctionCall","src":"42076:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"42063:12:15"},"nodeType":"YulFunctionCall","src":"42063:33:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"42054:5:15"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"42029:6:15"},"nodeType":"YulIf","src":"42026:84:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"42130:4:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"42189:5:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"42196:6:15"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"42136:52:15"},"nodeType":"YulFunctionCall","src":"42136:67:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"42123:6:15"},"nodeType":"YulFunctionCall","src":"42123:81:15"},"nodeType":"YulExpressionStatement","src":"42123:81:15"}]},"nodeType":"YulCase","src":"41977:237:15","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"41317:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"41325:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"41314:2:15"},"nodeType":"YulFunctionCall","src":"41314:14:15"},"nodeType":"YulSwitch","src":"41307:907:15"}]},"name":"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"40903:4:15","type":""},{"name":"src","nodeType":"YulTypedName","src":"40909:3:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"40914:3:15","type":""}],"src":"40822:1398:15"},{"body":{"nodeType":"YulBlock","src":"42348:214:15","statements":[{"nodeType":"YulAssignment","src":"42358:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42423:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"42428:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"42365:57:15"},"nodeType":"YulFunctionCall","src":"42365:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"42358:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"42482:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"42489:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"42494:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"42445:36:15"},"nodeType":"YulFunctionCall","src":"42445:56:15"},"nodeType":"YulExpressionStatement","src":"42445:56:15"},{"nodeType":"YulAssignment","src":"42510:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42521:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"42548:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"42526:21:15"},"nodeType":"YulFunctionCall","src":"42526:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42517:3:15"},"nodeType":"YulFunctionCall","src":"42517:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"42510:3:15"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"42321:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"42328:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"42336:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"42344:3:15","type":""}],"src":"42248:314:15"},{"body":{"nodeType":"YulBlock","src":"42694:203:15","statements":[{"nodeType":"YulAssignment","src":"42704:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42716:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42727:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42712:3:15"},"nodeType":"YulFunctionCall","src":"42712:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"42704:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42751:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42762:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42747:3:15"},"nodeType":"YulFunctionCall","src":"42747:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"42770:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"42776:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"42766:3:15"},"nodeType":"YulFunctionCall","src":"42766:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"42740:6:15"},"nodeType":"YulFunctionCall","src":"42740:47:15"},"nodeType":"YulExpressionStatement","src":"42740:47:15"},{"nodeType":"YulAssignment","src":"42796:94:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"42868:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"42876:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"42885:4:15"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"42804:63:15"},"nodeType":"YulFunctionCall","src":"42804:86:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"42796:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"42658:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"42670:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"42678:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"42689:4:15","type":""}],"src":"42568:329:15"},{"body":{"nodeType":"YulBlock","src":"43009:119:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"43031:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"43039:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43027:3:15"},"nodeType":"YulFunctionCall","src":"43027:14:15"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"43043:34:15","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43020:6:15"},"nodeType":"YulFunctionCall","src":"43020:58:15"},"nodeType":"YulExpressionStatement","src":"43020:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"43099:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"43107:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43095:3:15"},"nodeType":"YulFunctionCall","src":"43095:15:15"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"43112:8:15","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43088:6:15"},"nodeType":"YulFunctionCall","src":"43088:33:15"},"nodeType":"YulExpressionStatement","src":"43088:33:15"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"43001:6:15","type":""}],"src":"42903:225:15"},{"body":{"nodeType":"YulBlock","src":"43280:220:15","statements":[{"nodeType":"YulAssignment","src":"43290:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43356:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"43361:2:15","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"43297:58:15"},"nodeType":"YulFunctionCall","src":"43297:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"43290:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43462:3:15"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"43373:88:15"},"nodeType":"YulFunctionCall","src":"43373:93:15"},"nodeType":"YulExpressionStatement","src":"43373:93:15"},{"nodeType":"YulAssignment","src":"43475:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43486:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"43491:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43482:3:15"},"nodeType":"YulFunctionCall","src":"43482:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"43475:3:15"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"43268:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"43276:3:15","type":""}],"src":"43134:366:15"},{"body":{"nodeType":"YulBlock","src":"43677:248:15","statements":[{"nodeType":"YulAssignment","src":"43687:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"43699:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"43710:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43695:3:15"},"nodeType":"YulFunctionCall","src":"43695:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"43687:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"43734:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"43745:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43730:3:15"},"nodeType":"YulFunctionCall","src":"43730:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"43753:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"43759:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"43749:3:15"},"nodeType":"YulFunctionCall","src":"43749:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43723:6:15"},"nodeType":"YulFunctionCall","src":"43723:47:15"},"nodeType":"YulExpressionStatement","src":"43723:47:15"},{"nodeType":"YulAssignment","src":"43779:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"43913:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"43787:124:15"},"nodeType":"YulFunctionCall","src":"43787:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"43779:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"43657:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"43672:4:15","type":""}],"src":"43506:419:15"},{"body":{"nodeType":"YulBlock","src":"43976:149:15","statements":[{"nodeType":"YulAssignment","src":"43986:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44009:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"43991:17:15"},"nodeType":"YulFunctionCall","src":"43991:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"43986:1:15"}]},{"nodeType":"YulAssignment","src":"44020:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"44043:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"44025:17:15"},"nodeType":"YulFunctionCall","src":"44025:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"44020:1:15"}]},{"nodeType":"YulAssignment","src":"44054:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44066:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"44069:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"44062:3:15"},"nodeType":"YulFunctionCall","src":"44062:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"44054:4:15"}]},{"body":{"nodeType":"YulBlock","src":"44096:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"44098:16:15"},"nodeType":"YulFunctionCall","src":"44098:18:15"},"nodeType":"YulExpressionStatement","src":"44098:18:15"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"44087:4:15"},{"name":"x","nodeType":"YulIdentifier","src":"44093:1:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"44084:2:15"},"nodeType":"YulFunctionCall","src":"44084:11:15"},"nodeType":"YulIf","src":"44081:37:15"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"43962:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"43965:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"43971:4:15","type":""}],"src":"43931:194:15"},{"body":{"nodeType":"YulBlock","src":"44175:147:15","statements":[{"nodeType":"YulAssignment","src":"44185:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44208:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"44190:17:15"},"nodeType":"YulFunctionCall","src":"44190:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"44185:1:15"}]},{"nodeType":"YulAssignment","src":"44219:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"44242:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"44224:17:15"},"nodeType":"YulFunctionCall","src":"44224:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"44219:1:15"}]},{"nodeType":"YulAssignment","src":"44253:16:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44264:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"44267:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44260:3:15"},"nodeType":"YulFunctionCall","src":"44260:9:15"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"44253:3:15"}]},{"body":{"nodeType":"YulBlock","src":"44293:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"44295:16:15"},"nodeType":"YulFunctionCall","src":"44295:18:15"},"nodeType":"YulExpressionStatement","src":"44295:18:15"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44285:1:15"},{"name":"sum","nodeType":"YulIdentifier","src":"44288:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"44282:2:15"},"nodeType":"YulFunctionCall","src":"44282:10:15"},"nodeType":"YulIf","src":"44279:36:15"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"44162:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"44165:1:15","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"44171:3:15","type":""}],"src":"44131:191:15"},{"body":{"nodeType":"YulBlock","src":"44434:61:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"44456:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"44464:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44452:3:15"},"nodeType":"YulFunctionCall","src":"44452:14:15"},{"hexValue":"546f6b656e4e6f74537570706f72746564","kind":"string","nodeType":"YulLiteral","src":"44468:19:15","type":"","value":"TokenNotSupported"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"44445:6:15"},"nodeType":"YulFunctionCall","src":"44445:43:15"},"nodeType":"YulExpressionStatement","src":"44445:43:15"}]},"name":"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"44426:6:15","type":""}],"src":"44328:167:15"},{"body":{"nodeType":"YulBlock","src":"44647:220:15","statements":[{"nodeType":"YulAssignment","src":"44657:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44723:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"44728:2:15","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"44664:58:15"},"nodeType":"YulFunctionCall","src":"44664:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"44657:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44829:3:15"}],"functionName":{"name":"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","nodeType":"YulIdentifier","src":"44740:88:15"},"nodeType":"YulFunctionCall","src":"44740:93:15"},"nodeType":"YulExpressionStatement","src":"44740:93:15"},{"nodeType":"YulAssignment","src":"44842:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44853:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"44858:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44849:3:15"},"nodeType":"YulFunctionCall","src":"44849:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"44842:3:15"}]}]},"name":"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"44635:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"44643:3:15","type":""}],"src":"44501:366:15"},{"body":{"nodeType":"YulBlock","src":"45044:248:15","statements":[{"nodeType":"YulAssignment","src":"45054:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45066:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"45077:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45062:3:15"},"nodeType":"YulFunctionCall","src":"45062:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45054:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45101:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"45112:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45097:3:15"},"nodeType":"YulFunctionCall","src":"45097:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"45120:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"45126:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"45116:3:15"},"nodeType":"YulFunctionCall","src":"45116:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45090:6:15"},"nodeType":"YulFunctionCall","src":"45090:47:15"},"nodeType":"YulExpressionStatement","src":"45090:47:15"},{"nodeType":"YulAssignment","src":"45146:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"45280:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"45154:124:15"},"nodeType":"YulFunctionCall","src":"45154:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45146:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"45024:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"45039:4:15","type":""}],"src":"44873:419:15"},{"body":{"nodeType":"YulBlock","src":"45404:56:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"45426:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"45434:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45422:3:15"},"nodeType":"YulFunctionCall","src":"45422:14:15"},{"hexValue":"416d6f756e7449735a65726f","kind":"string","nodeType":"YulLiteral","src":"45438:14:15","type":"","value":"AmountIsZero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45415:6:15"},"nodeType":"YulFunctionCall","src":"45415:38:15"},"nodeType":"YulExpressionStatement","src":"45415:38:15"}]},"name":"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"45396:6:15","type":""}],"src":"45298:162:15"},{"body":{"nodeType":"YulBlock","src":"45612:220:15","statements":[{"nodeType":"YulAssignment","src":"45622:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45688:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"45693:2:15","type":"","value":"12"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"45629:58:15"},"nodeType":"YulFunctionCall","src":"45629:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"45622:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45794:3:15"}],"functionName":{"name":"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","nodeType":"YulIdentifier","src":"45705:88:15"},"nodeType":"YulFunctionCall","src":"45705:93:15"},"nodeType":"YulExpressionStatement","src":"45705:93:15"},{"nodeType":"YulAssignment","src":"45807:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45818:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"45823:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45814:3:15"},"nodeType":"YulFunctionCall","src":"45814:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"45807:3:15"}]}]},"name":"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"45600:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"45608:3:15","type":""}],"src":"45466:366:15"},{"body":{"nodeType":"YulBlock","src":"46009:248:15","statements":[{"nodeType":"YulAssignment","src":"46019:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"46031:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"46042:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46027:3:15"},"nodeType":"YulFunctionCall","src":"46027:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"46019:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"46066:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"46077:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46062:3:15"},"nodeType":"YulFunctionCall","src":"46062:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"46085:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"46091:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"46081:3:15"},"nodeType":"YulFunctionCall","src":"46081:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"46055:6:15"},"nodeType":"YulFunctionCall","src":"46055:47:15"},"nodeType":"YulExpressionStatement","src":"46055:47:15"},{"nodeType":"YulAssignment","src":"46111:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"46245:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"46119:124:15"},"nodeType":"YulFunctionCall","src":"46119:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"46111:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"45989:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"46004:4:15","type":""}],"src":"45838:419:15"},{"body":{"nodeType":"YulBlock","src":"46369:60:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"46391:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"46399:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46387:3:15"},"nodeType":"YulFunctionCall","src":"46387:14:15"},{"hexValue":"5468726f775a65726f41646472657373","kind":"string","nodeType":"YulLiteral","src":"46403:18:15","type":"","value":"ThrowZeroAddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"46380:6:15"},"nodeType":"YulFunctionCall","src":"46380:42:15"},"nodeType":"YulExpressionStatement","src":"46380:42:15"}]},"name":"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"46361:6:15","type":""}],"src":"46263:166:15"},{"body":{"nodeType":"YulBlock","src":"46581:220:15","statements":[{"nodeType":"YulAssignment","src":"46591:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46657:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"46662:2:15","type":"","value":"16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"46598:58:15"},"nodeType":"YulFunctionCall","src":"46598:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"46591:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46763:3:15"}],"functionName":{"name":"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","nodeType":"YulIdentifier","src":"46674:88:15"},"nodeType":"YulFunctionCall","src":"46674:93:15"},"nodeType":"YulExpressionStatement","src":"46674:93:15"},{"nodeType":"YulAssignment","src":"46776:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46787:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"46792:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46783:3:15"},"nodeType":"YulFunctionCall","src":"46783:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"46776:3:15"}]}]},"name":"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"46569:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"46577:3:15","type":""}],"src":"46435:366:15"},{"body":{"nodeType":"YulBlock","src":"46978:248:15","statements":[{"nodeType":"YulAssignment","src":"46988:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47000:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"47011:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46996:3:15"},"nodeType":"YulFunctionCall","src":"46996:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"46988:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47035:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"47046:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47031:3:15"},"nodeType":"YulFunctionCall","src":"47031:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47054:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"47060:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"47050:3:15"},"nodeType":"YulFunctionCall","src":"47050:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47024:6:15"},"nodeType":"YulFunctionCall","src":"47024:47:15"},"nodeType":"YulExpressionStatement","src":"47024:47:15"},{"nodeType":"YulAssignment","src":"47080:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47214:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"47088:124:15"},"nodeType":"YulFunctionCall","src":"47088:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"47080:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"46958:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"46973:4:15","type":""}],"src":"46807:419:15"},{"body":{"nodeType":"YulBlock","src":"47338:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"47360:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"47368:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47356:3:15"},"nodeType":"YulFunctionCall","src":"47356:14:15"},{"hexValue":"496e76616c6964496e737469747574696f6e436f6465","kind":"string","nodeType":"YulLiteral","src":"47372:24:15","type":"","value":"InvalidInstitutionCode"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47349:6:15"},"nodeType":"YulFunctionCall","src":"47349:48:15"},"nodeType":"YulExpressionStatement","src":"47349:48:15"}]},"name":"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"47330:6:15","type":""}],"src":"47232:172:15"},{"body":{"nodeType":"YulBlock","src":"47556:220:15","statements":[{"nodeType":"YulAssignment","src":"47566:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47632:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"47637:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"47573:58:15"},"nodeType":"YulFunctionCall","src":"47573:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"47566:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47738:3:15"}],"functionName":{"name":"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","nodeType":"YulIdentifier","src":"47649:88:15"},"nodeType":"YulFunctionCall","src":"47649:93:15"},"nodeType":"YulExpressionStatement","src":"47649:93:15"},{"nodeType":"YulAssignment","src":"47751:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47762:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"47767:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47758:3:15"},"nodeType":"YulFunctionCall","src":"47758:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"47751:3:15"}]}]},"name":"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"47544:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"47552:3:15","type":""}],"src":"47410:366:15"},{"body":{"nodeType":"YulBlock","src":"47953:248:15","statements":[{"nodeType":"YulAssignment","src":"47963:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47975:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"47986:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47971:3:15"},"nodeType":"YulFunctionCall","src":"47971:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"47963:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"48010:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"48021:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48006:3:15"},"nodeType":"YulFunctionCall","src":"48006:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"48029:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"48035:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"48025:3:15"},"nodeType":"YulFunctionCall","src":"48025:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47999:6:15"},"nodeType":"YulFunctionCall","src":"47999:47:15"},"nodeType":"YulExpressionStatement","src":"47999:47:15"},{"nodeType":"YulAssignment","src":"48055:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"48189:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"48063:124:15"},"nodeType":"YulFunctionCall","src":"48063:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"48055:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"47933:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"47948:4:15","type":""}],"src":"47782:419:15"},{"body":{"nodeType":"YulBlock","src":"48313:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"48335:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"48343:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48331:3:15"},"nodeType":"YulFunctionCall","src":"48331:14:15"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"48347:34:15","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48324:6:15"},"nodeType":"YulFunctionCall","src":"48324:58:15"},"nodeType":"YulExpressionStatement","src":"48324:58:15"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"48305:6:15","type":""}],"src":"48207:182:15"},{"body":{"nodeType":"YulBlock","src":"48541:220:15","statements":[{"nodeType":"YulAssignment","src":"48551:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48617:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"48622:2:15","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"48558:58:15"},"nodeType":"YulFunctionCall","src":"48558:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"48551:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48723:3:15"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"48634:88:15"},"nodeType":"YulFunctionCall","src":"48634:93:15"},"nodeType":"YulExpressionStatement","src":"48634:93:15"},{"nodeType":"YulAssignment","src":"48736:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48747:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"48752:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48743:3:15"},"nodeType":"YulFunctionCall","src":"48743:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"48736:3:15"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"48529:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"48537:3:15","type":""}],"src":"48395:366:15"},{"body":{"nodeType":"YulBlock","src":"48938:248:15","statements":[{"nodeType":"YulAssignment","src":"48948:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"48960:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"48971:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48956:3:15"},"nodeType":"YulFunctionCall","src":"48956:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"48948:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"48995:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"49006:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48991:3:15"},"nodeType":"YulFunctionCall","src":"48991:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"49014:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"49020:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"49010:3:15"},"nodeType":"YulFunctionCall","src":"49010:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48984:6:15"},"nodeType":"YulFunctionCall","src":"48984:47:15"},"nodeType":"YulExpressionStatement","src":"48984:47:15"},{"nodeType":"YulAssignment","src":"49040:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"49174:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"49048:124:15"},"nodeType":"YulFunctionCall","src":"49048:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49040:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"48918:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"48933:4:15","type":""}],"src":"48767:419:15"},{"body":{"nodeType":"YulBlock","src":"49298:124:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"49320:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"49328:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49316:3:15"},"nodeType":"YulFunctionCall","src":"49316:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"49332:34:15","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"49309:6:15"},"nodeType":"YulFunctionCall","src":"49309:58:15"},"nodeType":"YulExpressionStatement","src":"49309:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"49388:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"49396:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49384:3:15"},"nodeType":"YulFunctionCall","src":"49384:15:15"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"49401:13:15","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"49377:6:15"},"nodeType":"YulFunctionCall","src":"49377:38:15"},"nodeType":"YulExpressionStatement","src":"49377:38:15"}]},"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"49290:6:15","type":""}],"src":"49192:230:15"},{"body":{"nodeType":"YulBlock","src":"49574:220:15","statements":[{"nodeType":"YulAssignment","src":"49584:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49650:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"49655:2:15","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"49591:58:15"},"nodeType":"YulFunctionCall","src":"49591:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"49584:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49756:3:15"}],"functionName":{"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nodeType":"YulIdentifier","src":"49667:88:15"},"nodeType":"YulFunctionCall","src":"49667:93:15"},"nodeType":"YulExpressionStatement","src":"49667:93:15"},{"nodeType":"YulAssignment","src":"49769:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49780:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"49785:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49776:3:15"},"nodeType":"YulFunctionCall","src":"49776:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"49769:3:15"}]}]},"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"49562:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"49570:3:15","type":""}],"src":"49428:366:15"},{"body":{"nodeType":"YulBlock","src":"49971:248:15","statements":[{"nodeType":"YulAssignment","src":"49981:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49993:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"50004:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49989:3:15"},"nodeType":"YulFunctionCall","src":"49989:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49981:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"50028:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"50039:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"50024:3:15"},"nodeType":"YulFunctionCall","src":"50024:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"50047:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"50053:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"50043:3:15"},"nodeType":"YulFunctionCall","src":"50043:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"50017:6:15"},"nodeType":"YulFunctionCall","src":"50017:47:15"},"nodeType":"YulExpressionStatement","src":"50017:47:15"},{"nodeType":"YulAssignment","src":"50073:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"50207:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"50081:124:15"},"nodeType":"YulFunctionCall","src":"50081:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"50073:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49951:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"49966:4:15","type":""}],"src":"49800:419:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n // struct PaycrestSettingManager.Institution -> struct PaycrestSettingManager.Institution\n function abi_encode_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // code\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x00))\n }\n\n {\n // name\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encodeUpdatedPos_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr(value0, pos) -> updatedPos {\n abi_encode_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr(value0, pos)\n updatedPos := add(pos, 0x40)\n }\n\n function array_nextElement_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct PaycrestSettingManager.Institution[] -> struct PaycrestSettingManager.Institution[]\n function abi_encode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_struct$_Institution_$3529_memory_ptr_to_t_struct$_Institution_$3529_memory_ptr(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_array$_t_address_$dyn_calldata_ptrt_addresst_uint64t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7 {\n if slt(sub(dataEnd, headStart), 224) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3, value4 := abi_decode_t_array$_t_address_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value5 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value6 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value7 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint96(value) {\n if iszero(eq(value, cleanup_t_uint96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint96(value)\n }\n\n // string\n function abi_decode_t_string_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint96(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 256))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value8, value9 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n // struct PaycrestSettingManager.Institution\n function abi_decode_t_struct$_Institution_$3529_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x40) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x40)\n\n {\n // code\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n {\n // name\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x40))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x40) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_struct$_Institution_$3529_memory_ptr(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_uint96_to_t_uint96(value, pos) {\n mstore(pos, cleanup_t_uint96(value))\n }\n\n function abi_encode_t_bool_to_t_bool(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n // struct IPaycrest.Order -> struct IPaycrest.Order\n function abi_encode_t_struct$_Order_$3844_memory_ptr_to_t_struct$_Order_$3844_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x0120)\n\n {\n // seller\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // token\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // senderFeeRecipient\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x40))\n }\n\n {\n // senderFee\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x60))\n }\n\n {\n // rate\n\n let memberValue0 := mload(add(value, 0x80))\n abi_encode_t_uint96_to_t_uint96(memberValue0, add(pos, 0x80))\n }\n\n {\n // isFulfilled\n\n let memberValue0 := mload(add(value, 0xa0))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0xa0))\n }\n\n {\n // refundAddress\n\n let memberValue0 := mload(add(value, 0xc0))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0xc0))\n }\n\n {\n // currentBPS\n\n let memberValue0 := mload(add(value, 0xe0))\n abi_encode_t_uint96_to_t_uint96(memberValue0, add(pos, 0xe0))\n }\n\n {\n // amount\n\n let memberValue0 := mload(add(value, 0x0100))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x0100))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_Order_$3844_memory_ptr__to_t_struct$_Order_$3844_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 288)\n\n abi_encode_t_struct$_Order_$3844_memory_ptr_to_t_struct$_Order_$3844_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n }\n\n // struct PaycrestSettingManager.InstitutionByCode -> struct PaycrestSettingManager.InstitutionByCode\n function abi_encode_t_struct$_InstitutionByCode_$3534_memory_ptr_to_t_struct$_InstitutionByCode_$3534_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // name\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x00))\n }\n\n {\n // currency\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_InstitutionByCode_$3534_memory_ptr__to_t_struct$_InstitutionByCode_$3534_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_InstitutionByCode_$3534_memory_ptr_to_t_struct$_InstitutionByCode_$3534_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_addresst_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint64_t_uint256__to_t_uint64_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243(memPtr) {\n\n mstore(add(memPtr, 0), \"OnlyAggregator\")\n\n }\n\n function abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5(memPtr) {\n\n mstore(add(memPtr, 0), \"OrderFulfilled\")\n\n }\n\n function abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint96(x, y) -> diff {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n diff := sub(x, y)\n\n if gt(diff, 0xffffffffffffffffffffffff) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint64_to_t_uint96(value) -> converted {\n converted := cleanup_t_uint96(identity(cleanup_t_uint64(value)))\n }\n\n function abi_encode_t_uint64_to_t_uint96_fromStack(value, pos) {\n mstore(pos, convert_t_uint64_to_t_uint96(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint64_to_t_uint96_fromStack(value2, add(headStart, 64))\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4(memPtr) {\n\n mstore(add(memPtr, 0), \"SenderFeeTooHigh\")\n\n }\n\n function abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function convert_t_uint96_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint96(value)))\n }\n\n function abi_encode_t_uint96_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint96_to_t_uint256(value))\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // string -> string\n function abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint96_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(value3, value4, tail)\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(memPtr) {\n\n mstore(add(memPtr, 0), \"Paycrest: zero address\")\n\n }\n\n function abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is alrea\")\n\n mstore(add(memPtr, 32), \"dy initialized\")\n\n }\n\n function abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function convert_t_rational_1_by_1_to_t_uint8(value) -> converted {\n converted := cleanup_t_uint8(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint8(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_bytes_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len) {\n\n let newLen := array_length_t_bytes_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1(memPtr) {\n\n mstore(add(memPtr, 0), \"TokenNotSupported\")\n\n }\n\n function abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2(memPtr) {\n\n mstore(add(memPtr, 0), \"AmountIsZero\")\n\n }\n\n function abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 12)\n store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7(memPtr) {\n\n mstore(add(memPtr, 0), \"ThrowZeroAddress\")\n\n }\n\n function abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5(memPtr) {\n\n mstore(add(memPtr, 0), \"InvalidInstitutionCode\")\n\n }\n\n function abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is not i\")\n\n mstore(add(memPtr, 32), \"nitializing\")\n\n }\n\n function abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101375760003560e01c806387490d86116100b8578063cb79455b1161007c578063cb79455b1461034e578063d8e8de341461036a578063d9caed121461039a578063e4683a79146103b6578063e8d6e0de146103e6578063f2fde38b1461040457610137565b806387490d86146102a95780638da5cb5b146102d957806399e3c0b4146102f7578063b810c63614610313578063c4d66de81461033257610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb14610271578063846307361461028d57610137565b8063026213381461013c578063137764fb1461016c5780632654ec7e1461019d57806332200882146101cd5780633ad59dbc146101e9575b600080fd5b610156600480360381019061015191906124c1565b610420565b60405161016391906125db565b60405180910390f35b61018660048036038101906101819190612738565b61055e565b604051610194929190612818565b60405180910390f35b6101b760048036038101906101b29190612911565b610959565b6040516101c491906129fc565b60405180910390f35b6101e760048036038101906101e29190612bbb565b610e21565b005b6101f1610f35565b6040516101fe9190612c96565b60405180910390f35b61020f610fc7565b005b61022b60048036038101906102269190612cb8565b610fdb565b6040516102389190612cf4565b60405180910390f35b61025b600480360381019061025691906124c1565b611031565b6040516102689190612e02565b60405180910390f35b61028b60048036038101906102869190612e1e565b611262565b005b6102a760048036038101906102a29190612e5e565b6113af565b005b6102c360048036038101906102be91906124c1565b61141a565b6040516102d09190612eba565b60405180910390f35b6102e161145b565b6040516102ee9190612ed5565b60405180910390f35b610311600480360381019061030c9190612ef0565b611485565b005b61031b61163a565b604051610329929190612f61565b60405180910390f35b61034c60048036038101906103479190612cb8565b61165f565b005b61036860048036038101906103639190612fe0565b61182b565b005b610384600480360381019061037f9190612cb8565b611882565b6040516103919190612cf4565b60405180910390f35b6103b460048036038101906103af919061302d565b6118d8565b005b6103d060048036038101906103cb9190613080565b611964565b6040516103dd9190612cf4565b60405180910390f35b6103ee611c11565b6040516103fb9190612ed5565b60405180910390f35b61041e60048036038101906104199190612cb8565b611c3b565b005b60606000609d6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049d57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610457565b50505050905060008151905060008167ffffffffffffffff8111156104c5576104c4612a28565b5b6040519080825280602002602001820160405280156104fe57816020015b6104eb61235b565b8152602001906001900390816104e35790505b50905060005b828110156105525783818151811061051f5761051e6130c0565b5b602002602001015182828151811061053a576105396130c0565b5b60200260200101819052508080600101915050610504565b50809350505050919050565b600080606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e89061314c565b60405180910390fd5b609f60008a8152602001908152602001600020600401600c9054906101000a900460ff1615610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064c906131b8565b60405180910390fd5b6000609f60008b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff16609f60008c815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff166106d79190613207565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600061071c8b8767ffffffffffffffff1687611cbe565b90506000609f60008d815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036107bb576001609f60008d8152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f60008d81526020019081526020016000206003015411156107ba576107b98b611dcf565b5b5b60008160000151111561086e578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606660089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b8152600401610829929190613247565b6020604051808303816000875af1158015610848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c9190613285565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b81526004016108ad929190613247565b6020604051808303816000875af11580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190613285565b508673ffffffffffffffffffffffffffffffffffffffff168b7ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268e8d8a60405161093c939291906132ed565b60405180910390a38a829350935050509850989650505050505050565b60006109688b8b86898d611f23565b606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168b6109979190613324565b6109a19190613395565b8511156109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90613412565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610a2093929190613432565b6020604051808303816000875af1158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a639190613285565b5060a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610ab490613469565b91905055503360a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610b0b929190613247565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b815250609f600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610e0b95949392919061351e565b60405180910390a49a9950505050505050505050565b610e29612132565b60008151905060005b81811015610f2f57609d6000858152602001908152602001600020838281518110610e6057610e5f6130c0565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610ec557610ec46130c0565b5b602002602001015160200151815260200185815250609e6000858481518110610ef157610ef06130c0565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610e32565b50505050565b606060688054610f449061359b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f709061359b565b8015610fbd5780601f10610f9257610100808354040283529160200191610fbd565b820191906000526020600020905b815481529060010190602001808311610fa057829003601f168201915b5050505050905090565b610fcf612132565b610fd960006121b0565b565b6000609b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61103961237b565b609f6000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b61126a612132565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090613618565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113425780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113ab5780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113b7612132565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a98160405161140f9190613638565b60405180910390a150565b61142261243d565b609e6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61148d612132565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390613618565b60405180910390fd5b7f746f6b656e000000000000000000000000000000000000000000000000000000830361157b5780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115fa5780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161162d93929190613653565b60405180910390a1505050565b600080606660009054906101000a900467ffffffffffffffff16606554915091509091565b60008060019054906101000a900460ff161590508080156116905750600160008054906101000a900460ff1660ff16105b806116bd575061169f30612276565b1580156116bc5750600160008054906101000a900460ff1660ff16145b5b6116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f3906136fc565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611739576001600060016101000a81548160ff0219169083151502179055505b6001609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506117ce612299565b80156118275760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161181e9190613764565b60405180910390a15b5050565b611833612132565b81816068918261184492919061392c565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051611876929190613a29565b60405180910390a15050565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118e0612132565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161191b929190613247565b6020604051808303816000875af115801561193a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195e9190613285565b50505050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed9061314c565b60405180910390fd5b609f6000848152602001908152602001600020600401600c9054906101000a900460ff1615611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a51906131b8565b60405180910390fd5b6001609f6000858152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb609f600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609f6000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611b8c929190613247565b6020604051808303816000875af1158015611bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcf9190613285565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611bff91906129fc565b60405180910390a26001905092915050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c43612132565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca990613abf565b60405180910390fd5b611cbb816121b0565b50565b611cc661245d565b6000609f6000868152602001908152602001600020600601549050609f60008681526020019081526020016000206003015481611d039190613adf565b9050606554846bffffffffffffffffffffffff1682611d229190613324565b611d2c9190613395565b826020018181525050606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168360200151611d689190613324565b611d729190613395565b82600001818152505081600001518260200151611d8f9190613adf565b8260200181815250508215611dc757816000015182602001818151611db49190613b13565b9150818152505060008260000181815250505b509392505050565b6000609f600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000609f6000848152602001908152602001600020600301549050609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611e96929190613247565b6020604051808303816000875af1158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190613285565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b609b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa690613b93565b60405180910390fd5b60008411611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe990613bff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205890613c6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c790613c6b565b60405180910390fd5b6000801b609e6000838152602001908152602001600020600001540361212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212290613cd7565b60405180910390fd5b5050505050565b61213a6122f2565b73ffffffffffffffffffffffffffffffffffffffff1661215861145b565b73ffffffffffffffffffffffffffffffffffffffff16146121ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a590613d43565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df90613dd5565b60405180910390fd5b6122f06122fa565b565b600033905090565b600060019054906101000a900460ff16612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234090613dd5565b60405180910390fd5b6123596123546122f2565b6121b0565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61249e8161248b565b81146124a957600080fd5b50565b6000813590506124bb81612495565b92915050565b6000602082840312156124d7576124d6612481565b5b60006124e5848285016124ac565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125238161248b565b82525050565b60408201600082015161253f600085018261251a565b506020820151612552602085018261251a565b50505050565b60006125648383612529565b60408301905092915050565b6000602082019050919050565b6000612588826124ee565b61259281856124f9565b935061259d8361250a565b8060005b838110156125ce5781516125b58882612558565b97506125c083612570565b9250506001810190506125a1565b5085935050505092915050565b600060208201905081810360008301526125f5818461257d565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612622576126216125fd565b5b8235905067ffffffffffffffff81111561263f5761263e612602565b5b60208301915083602082028301111561265b5761265a612607565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061268d82612662565b9050919050565b61269d81612682565b81146126a857600080fd5b50565b6000813590506126ba81612694565b92915050565b600067ffffffffffffffff82169050919050565b6126dd816126c0565b81146126e857600080fd5b50565b6000813590506126fa816126d4565b92915050565b60008115159050919050565b61271581612700565b811461272057600080fd5b50565b6000813590506127328161270c565b92915050565b60008060008060008060008060e0898b03121561275857612757612481565b5b60006127668b828c016124ac565b98505060206127778b828c016124ac565b97505060406127888b828c016124ac565b965050606089013567ffffffffffffffff8111156127a9576127a8612486565b5b6127b58b828c0161260c565b955095505060806127c88b828c016126ab565b93505060a06127d98b828c016126eb565b92505060c06127ea8b828c01612723565b9150509295985092959890939650565b6128038161248b565b82525050565b61281281612682565b82525050565b600060408201905061282d60008301856127fa565b61283a6020830184612809565b9392505050565b6000819050919050565b61285481612841565b811461285f57600080fd5b50565b6000813590506128718161284b565b92915050565b60006bffffffffffffffffffffffff82169050919050565b61289881612877565b81146128a357600080fd5b50565b6000813590506128b58161288f565b92915050565b60008083601f8401126128d1576128d06125fd565b5b8235905067ffffffffffffffff8111156128ee576128ed612602565b5b60208301915083600182028301111561290a57612909612607565b5b9250929050565b6000806000806000806000806000806101208b8d03121561293557612934612481565b5b60006129438d828e016126ab565b9a505060206129548d828e01612862565b99505060406129658d828e016124ac565b98505060606129768d828e016124ac565b97505060806129878d828e016128a6565b96505060a06129988d828e016126ab565b95505060c06129a98d828e01612862565b94505060e06129ba8d828e016126ab565b9350506101008b013567ffffffffffffffff8111156129dc576129db612486565b5b6129e88d828e016128bb565b92509250509295989b9194979a5092959850565b6000602082019050612a1160008301846127fa565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a6082612a17565b810181811067ffffffffffffffff82111715612a7f57612a7e612a28565b5b80604052505050565b6000612a92612477565b9050612a9e8282612a57565b919050565b600067ffffffffffffffff821115612abe57612abd612a28565b5b602082029050602081019050919050565b600080fd5b600060408284031215612aea57612ae9612acf565b5b612af46040612a88565b90506000612b04848285016124ac565b6000830152506020612b18848285016124ac565b60208301525092915050565b6000612b37612b3284612aa3565b612a88565b90508083825260208201905060408402830185811115612b5a57612b59612607565b5b835b81811015612b835780612b6f8882612ad4565b845260208401935050604081019050612b5c565b5050509392505050565b600082601f830112612ba257612ba16125fd565b5b8135612bb2848260208601612b24565b91505092915050565b60008060408385031215612bd257612bd1612481565b5b6000612be0858286016124ac565b925050602083013567ffffffffffffffff811115612c0157612c00612486565b5b612c0d85828601612b8d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c51578082015181840152602081019050612c36565b60008484015250505050565b6000612c6882612c17565b612c728185612c22565b9350612c82818560208601612c33565b612c8b81612a17565b840191505092915050565b60006020820190508181036000830152612cb08184612c5d565b905092915050565b600060208284031215612cce57612ccd612481565b5b6000612cdc848285016126ab565b91505092915050565b612cee81612700565b82525050565b6000602082019050612d096000830184612ce5565b92915050565b612d1881612682565b82525050565b612d2781612841565b82525050565b612d3681612877565b82525050565b612d4581612700565b82525050565b61012082016000820151612d626000850182612d0f565b506020820151612d756020850182612d0f565b506040820151612d886040850182612d0f565b506060820151612d9b6060850182612d1e565b506080820151612dae6080850182612d2d565b5060a0820151612dc160a0850182612d3c565b5060c0820151612dd460c0850182612d0f565b5060e0820151612de760e0850182612d2d565b50610100820151612dfc610100850182612d1e565b50505050565b600061012082019050612e186000830184612d4b565b92915050565b60008060408385031215612e3557612e34612481565b5b6000612e43858286016124ac565b9250506020612e54858286016126ab565b9150509250929050565b600060208284031215612e7457612e73612481565b5b6000612e82848285016126eb565b91505092915050565b604082016000820151612ea1600085018261251a565b506020820151612eb4602085018261251a565b50505050565b6000604082019050612ecf6000830184612e8b565b92915050565b6000602082019050612eea6000830184612809565b92915050565b600080600060608486031215612f0957612f08612481565b5b6000612f17868287016124ac565b9350506020612f28868287016126ab565b9250506040612f3986828701612723565b9150509250925092565b612f4c816126c0565b82525050565b612f5b81612841565b82525050565b6000604082019050612f766000830185612f43565b612f836020830184612f52565b9392505050565b60008083601f840112612fa057612f9f6125fd565b5b8235905067ffffffffffffffff811115612fbd57612fbc612602565b5b602083019150836001820283011115612fd957612fd8612607565b5b9250929050565b60008060208385031215612ff757612ff6612481565b5b600083013567ffffffffffffffff81111561301557613014612486565b5b61302185828601612f8a565b92509250509250929050565b60008060006060848603121561304657613045612481565b5b6000613054868287016126ab565b9350506020613065868287016126ab565b925050604061307686828701612862565b9150509250925092565b6000806040838503121561309757613096612481565b5b60006130a5858286016124ac565b92505060206130b6858286016124ac565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b6000613136600e836130ef565b915061314182613100565b602082019050919050565b6000602082019050818103600083015261316581613129565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b60006131a2600e836130ef565b91506131ad8261316c565b602082019050919050565b600060208201905081810360008301526131d181613195565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061321282612877565b915061321d83612877565b925082820390506bffffffffffffffffffffffff811115613241576132406131d8565b5b92915050565b600060408201905061325c6000830185612809565b6132696020830184612f52565b9392505050565b60008151905061327f8161270c565b92915050565b60006020828403121561329b5761329a612481565b5b60006132a984828501613270565b91505092915050565b6000819050919050565b60006132d76132d26132cd846126c0565b6132b2565b612877565b9050919050565b6132e7816132bc565b82525050565b600060608201905061330260008301866127fa565b61330f60208301856127fa565b61331c60408301846132de565b949350505050565b600061332f82612841565b915061333a83612841565b925082820261334881612841565b9150828204841483151761335f5761335e6131d8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133a082612841565b91506133ab83612841565b9250826133bb576133ba613366565b5b828204905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b60006133fc6010836130ef565b9150613407826133c6565b602082019050919050565b6000602082019050818103600083015261342b816133ef565b9050919050565b60006060820190506134476000830186612809565b6134546020830185612809565b6134616040830184612f52565b949350505050565b600061347482612841565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134a6576134a56131d8565b5b600182019050919050565b60006134cc6134c76134c284612877565b6132b2565b612841565b9050919050565b6134dc816134b1565b82525050565b82818337600083830152505050565b60006134fd83856130ef565b935061350a8385846134e2565b61351383612a17565b840190509392505050565b600060808201905061353360008301886134d3565b61354060208301876127fa565b61354d60408301866127fa565b81810360608301526135608184866134f1565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135b357607f821691505b6020821081036135c6576135c561356c565b5b50919050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b60006136026016836130ef565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b600060208201905061364d6000830184612f43565b92915050565b600060608201905061366860008301866127fa565b6136756020830185612809565b6136826040830184612ce5565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006136e6602e836130ef565b91506136f18261368a565b604082019050919050565b60006020820190508181036000830152613715816136d9565b9050919050565b6000819050919050565b600060ff82169050919050565b600061374e6137496137448461371c565b6132b2565b613726565b9050919050565b61375e81613733565b82525050565b60006020820190506137796000830184613755565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026137ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826137af565b6137f686836137af565b95508019841693508086168417925050509392505050565b600061382961382461381f84612841565b6132b2565b612841565b9050919050565b6000819050919050565b6138438361380e565b61385761384f82613830565b8484546137bc565b825550505050565b600090565b61386c61385f565b61387781848461383a565b505050565b5b8181101561389b57613890600082613864565b60018101905061387d565b5050565b601f8211156138e0576138b18161378a565b6138ba8461379f565b810160208510156138c9578190505b6138dd6138d58561379f565b83018261387c565b50505b505050565b600082821c905092915050565b6000613903600019846008026138e5565b1980831691505092915050565b600061391c83836138f2565b9150826002028217905092915050565b613936838361377f565b67ffffffffffffffff81111561394f5761394e612a28565b5b613959825461359b565b61396482828561389f565b6000601f8311600181146139935760008415613981578287013590505b61398b8582613910565b8655506139f3565b601f1984166139a18661378a565b60005b828110156139c9578489013582556001820191506020850194506020810190506139a4565b868310156139e657848901356139e2601f8916826138f2565b8355505b6001600288020188555050505b50505050505050565b6000613a088385612c22565b9350613a158385846134e2565b613a1e83612a17565b840190509392505050565b60006020820190508181036000830152613a448184866139fc565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613aa96026836130ef565b9150613ab482613a4d565b604082019050919050565b60006020820190508181036000830152613ad881613a9c565b9050919050565b6000613aea82612841565b9150613af583612841565b9250828203905081811115613b0d57613b0c6131d8565b5b92915050565b6000613b1e82612841565b9150613b2983612841565b9250828201905080821115613b4157613b406131d8565b5b92915050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613b7d6011836130ef565b9150613b8882613b47565b602082019050919050565b60006020820190508181036000830152613bac81613b70565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613be9600c836130ef565b9150613bf482613bb3565b602082019050919050565b60006020820190508181036000830152613c1881613bdc565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613c556010836130ef565b9150613c6082613c1f565b602082019050919050565b60006020820190508181036000830152613c8481613c48565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613cc16016836130ef565b9150613ccc82613c8b565b602082019050919050565b60006020820190508181036000830152613cf081613cb4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d2d6020836130ef565b9150613d3882613cf7565b602082019050919050565b60006020820190508181036000830152613d5c81613d20565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613dbf602b836130ef565b9150613dca82613d63565b604082019050919050565b60006020820190508181036000830152613dee81613db2565b905091905056fea264697066735822122095bbf3973ced310cd8777c31ea538f4beed34d4fea5f26c4beee1d63073174ea64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x87490D86 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xCB79455B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xD8E8DE34 EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0xE4683A79 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xE8D6E0DE EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x404 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x87490D86 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xB810C636 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x332 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x75151B63 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x768C6EC0 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x84630736 EQ PUSH2 0x28D JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x2621338 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x137764FB EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x2654EC7E EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x32200882 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x3AD59DBC EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x25DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x2738 JUMP JUMPDEST PUSH2 0x55E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x194 SWAP3 SWAP2 SWAP1 PUSH2 0x2818 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B2 SWAP2 SWAP1 PUSH2 0x2911 JUMP JUMPDEST PUSH2 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x29FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E2 SWAP2 SWAP1 PUSH2 0x2BBB JUMP JUMPDEST PUSH2 0xE21 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F1 PUSH2 0xF35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2C96 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH2 0xFC7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0xFDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x2CF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x1031 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x2E02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x28B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x1262 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x2E5E JUMP JUMPDEST PUSH2 0x13AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0x24C1 JUMP JUMPDEST PUSH2 0x141A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x2EBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E1 PUSH2 0x145B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2EE SWAP2 SWAP1 PUSH2 0x2ED5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x311 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x2EF0 JUMP JUMPDEST PUSH2 0x1485 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31B PUSH2 0x163A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x329 SWAP3 SWAP2 SWAP1 PUSH2 0x2F61 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x165F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x363 SWAP2 SWAP1 PUSH2 0x2FE0 JUMP JUMPDEST PUSH2 0x182B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x384 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37F SWAP2 SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x1882 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x391 SWAP2 SWAP1 PUSH2 0x2CF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3AF SWAP2 SWAP1 PUSH2 0x302D JUMP JUMPDEST PUSH2 0x18D8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x3080 JUMP JUMPDEST PUSH2 0x1964 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x2CF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH2 0x1C11 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP2 SWAP1 PUSH2 0x2ED5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x2CB8 JUMP JUMPDEST PUSH2 0x1C3B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x9D PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x49D JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x457 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C5 JUMPI PUSH2 0x4C4 PUSH2 0x2A28 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x4EB PUSH2 0x235B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x4E3 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x552 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x51F JUMPI PUSH2 0x51E PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53A JUMPI PUSH2 0x539 PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x504 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E8 SWAP1 PUSH2 0x314C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x655 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x64C SWAP1 PUSH2 0x31B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x9F PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6D7 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x71C DUP12 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x1CBE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7BB JUMPI PUSH1 0x1 PUSH1 0x9F PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD GT ISZERO PUSH2 0x7BA JUMPI PUSH2 0x7B9 DUP12 PUSH2 0x1DCF JUMP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD GT ISZERO PUSH2 0x86E JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x66 PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x829 SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x848 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x86C SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8AD SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8F0 SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH32 0xF26DE978CBAEA68EA699627155A10AD53DF3321B0F95A08264C0CFD6D4C05326 DUP15 DUP14 DUP11 PUSH1 0x40 MLOAD PUSH2 0x93C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x32ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP11 DUP3 SWAP4 POP SWAP4 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x968 DUP12 DUP12 DUP7 DUP10 DUP14 PUSH2 0x1F23 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP12 PUSH2 0x997 SWAP2 SWAP1 PUSH2 0x3324 JUMP JUMPDEST PUSH2 0x9A1 SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST DUP6 GT ISZERO PUSH2 0x9E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DA SWAP1 PUSH2 0x3412 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP14 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA20 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3432 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA63 SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP PUSH1 0xA0 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0xAB4 SWAP1 PUSH2 0x3469 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP CALLER PUSH1 0xA0 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB0B SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x65 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP1 DUP11 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C205F90C01160D42994A0EB521810056D94BB82A1FCB038D7179C4158A1F15B DUP11 DUP14 DUP14 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xE0B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x351E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE29 PUSH2 0x2132 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF2F JUMPI PUSH1 0x9D PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE60 JUMPI PUSH2 0xE5F PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEC5 JUMPI PUSH2 0xEC4 PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9E PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xEF1 JUMPI PUSH2 0xEF0 PUSH2 0x30C0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xE32 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x68 DUP1 SLOAD PUSH2 0xF44 SWAP1 PUSH2 0x359B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF70 SWAP1 PUSH2 0x359B JUMP JUMPDEST DUP1 ISZERO PUSH2 0xFBD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF92 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xFBD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xFA0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xFCF PUSH2 0x2132 JUMP JUMPDEST PUSH2 0xFD9 PUSH1 0x0 PUSH2 0x21B0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9B PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1039 PUSH2 0x237B JUMP JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x126A PUSH2 0x2132 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12D0 SWAP1 PUSH2 0x3618 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x1342 JUMPI DUP1 PUSH1 0x66 PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x13AB JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x13B7 PUSH2 0x2132 JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC8CA786C100BC62A0DFFBE768B5F0B770D84E8604C5DE54B54197B9066BB42A9 DUP2 PUSH1 0x40 MLOAD PUSH2 0x140F SWAP2 SWAP1 PUSH2 0x3638 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1422 PUSH2 0x243D JUMP JUMPDEST PUSH1 0x9E PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x148D PUSH2 0x2132 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x14FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14F3 SWAP1 PUSH2 0x3618 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x157B JUMPI DUP1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x15FA JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x162D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3653 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x65 SLOAD SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x1690 JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND LT JUMPDEST DUP1 PUSH2 0x16BD JUMPI POP PUSH2 0x169F ADDRESS PUSH2 0x2276 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x16BC JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ JUMPDEST JUMPDEST PUSH2 0x16FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16F3 SWAP1 PUSH2 0x36FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1739 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x186A0 PUSH1 0x65 DUP2 SWAP1 SSTORE POP PUSH2 0x1388 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x17CE PUSH2 0x2299 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1827 JUMPI PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x181E SWAP2 SWAP1 PUSH2 0x3764 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1833 PUSH2 0x2132 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x68 SWAP2 DUP3 PUSH2 0x1844 SWAP3 SWAP2 SWAP1 PUSH2 0x392C JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1876 SWAP3 SWAP2 SWAP1 PUSH2 0x3A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9C PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18E0 PUSH2 0x2132 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x191B SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x193A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x195E SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x19F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19ED SWAP1 PUSH2 0x314C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1A5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A51 SWAP1 PUSH2 0x31B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x9F PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x9F PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B8C SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCF SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP DUP3 PUSH31 0x7C875846B687732A7579C19BB1DADE66CD14E9F4F809565E2B2B5E76C72B4F DUP4 PUSH1 0x40 MLOAD PUSH2 0x1BFF SWAP2 SWAP1 PUSH2 0x29FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1C43 PUSH2 0x2132 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1CB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CA9 SWAP1 PUSH2 0x3ABF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1CBB DUP2 PUSH2 0x21B0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1CC6 PUSH2 0x245D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH2 0x1D03 SWAP2 SWAP1 PUSH2 0x3ADF JUMP JUMPDEST SWAP1 POP PUSH1 0x65 SLOAD DUP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1D22 SWAP2 SWAP1 PUSH2 0x3324 JUMP JUMPDEST PUSH2 0x1D2C SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1D68 SWAP2 SWAP1 PUSH2 0x3324 JUMP JUMPDEST PUSH2 0x1D72 SWAP2 SWAP1 PUSH2 0x3395 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1D8F SWAP2 SWAP1 PUSH2 0x3ADF JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP DUP3 ISZERO PUSH2 0x1DC7 JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x1DB4 SWAP2 SWAP1 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E96 SWAP3 SWAP2 SWAP1 PUSH2 0x3247 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ED9 SWAP2 SWAP1 PUSH2 0x3285 JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x96C76D5AEC8A8C11A9C8E02768E3FA309347330D08961E0CF9FD43B349B684C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x9B PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1FAF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FA6 SWAP1 PUSH2 0x3B93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x1FF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FE9 SWAP1 PUSH2 0x3BFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2061 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2058 SWAP1 PUSH2 0x3C6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x20D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20C7 SWAP1 PUSH2 0x3C6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SHL PUSH1 0x9E PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SUB PUSH2 0x212B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2122 SWAP1 PUSH2 0x3CD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x213A PUSH2 0x22F2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2158 PUSH2 0x145B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x21AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21A5 SWAP1 PUSH2 0x3D43 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x22E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22DF SWAP1 PUSH2 0x3DD5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22F0 PUSH2 0x22FA JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2349 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2340 SWAP1 PUSH2 0x3DD5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2359 PUSH2 0x2354 PUSH2 0x22F2 JUMP JUMPDEST PUSH2 0x21B0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x249E DUP2 PUSH2 0x248B JUMP JUMPDEST DUP2 EQ PUSH2 0x24A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x24BB DUP2 PUSH2 0x2495 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24D7 JUMPI PUSH2 0x24D6 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x24E5 DUP5 DUP3 DUP6 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2523 DUP2 PUSH2 0x248B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x253F PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x251A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2552 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x251A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2564 DUP4 DUP4 PUSH2 0x2529 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2588 DUP3 PUSH2 0x24EE JUMP JUMPDEST PUSH2 0x2592 DUP2 DUP6 PUSH2 0x24F9 JUMP JUMPDEST SWAP4 POP PUSH2 0x259D DUP4 PUSH2 0x250A JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25CE JUMPI DUP2 MLOAD PUSH2 0x25B5 DUP9 DUP3 PUSH2 0x2558 JUMP JUMPDEST SWAP8 POP PUSH2 0x25C0 DUP4 PUSH2 0x2570 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x25A1 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x25F5 DUP2 DUP5 PUSH2 0x257D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2622 JUMPI PUSH2 0x2621 PUSH2 0x25FD JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x263F JUMPI PUSH2 0x263E PUSH2 0x2602 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x265B JUMPI PUSH2 0x265A PUSH2 0x2607 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268D DUP3 PUSH2 0x2662 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x269D DUP2 PUSH2 0x2682 JUMP JUMPDEST DUP2 EQ PUSH2 0x26A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26BA DUP2 PUSH2 0x2694 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26DD DUP2 PUSH2 0x26C0 JUMP JUMPDEST DUP2 EQ PUSH2 0x26E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26FA DUP2 PUSH2 0x26D4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2715 DUP2 PUSH2 0x2700 JUMP JUMPDEST DUP2 EQ PUSH2 0x2720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2732 DUP2 PUSH2 0x270C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2758 JUMPI PUSH2 0x2757 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2766 DUP12 DUP3 DUP13 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x2777 DUP12 DUP3 DUP13 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x2788 DUP12 DUP3 DUP13 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27A9 JUMPI PUSH2 0x27A8 PUSH2 0x2486 JUMP JUMPDEST JUMPDEST PUSH2 0x27B5 DUP12 DUP3 DUP13 ADD PUSH2 0x260C JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x80 PUSH2 0x27C8 DUP12 DUP3 DUP13 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x27D9 DUP12 DUP3 DUP13 ADD PUSH2 0x26EB JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x27EA DUP12 DUP3 DUP13 ADD PUSH2 0x2723 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH2 0x2803 DUP2 PUSH2 0x248B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2812 DUP2 PUSH2 0x2682 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x282D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x283A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2809 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2854 DUP2 PUSH2 0x2841 JUMP JUMPDEST DUP2 EQ PUSH2 0x285F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2871 DUP2 PUSH2 0x284B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2898 DUP2 PUSH2 0x2877 JUMP JUMPDEST DUP2 EQ PUSH2 0x28A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x28B5 DUP2 PUSH2 0x288F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x28D1 JUMPI PUSH2 0x28D0 PUSH2 0x25FD JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x28EE JUMPI PUSH2 0x28ED PUSH2 0x2602 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x290A JUMPI PUSH2 0x2909 PUSH2 0x2607 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x2935 JUMPI PUSH2 0x2934 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2943 DUP14 DUP3 DUP15 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x2954 DUP14 DUP3 DUP15 ADD PUSH2 0x2862 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x2965 DUP14 DUP3 DUP15 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x2976 DUP14 DUP3 DUP15 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x2987 DUP14 DUP3 DUP15 ADD PUSH2 0x28A6 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x2998 DUP14 DUP3 DUP15 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x29A9 DUP14 DUP3 DUP15 ADD PUSH2 0x2862 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x29BA DUP14 DUP3 DUP15 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29DC JUMPI PUSH2 0x29DB PUSH2 0x2486 JUMP JUMPDEST JUMPDEST PUSH2 0x29E8 DUP14 DUP3 DUP15 ADD PUSH2 0x28BB JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2A11 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x27FA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2A60 DUP3 PUSH2 0x2A17 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2A7F JUMPI PUSH2 0x2A7E PUSH2 0x2A28 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A92 PUSH2 0x2477 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A9E DUP3 DUP3 PUSH2 0x2A57 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2ABE JUMPI PUSH2 0x2ABD PUSH2 0x2A28 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AEA JUMPI PUSH2 0x2AE9 PUSH2 0x2ACF JUMP JUMPDEST JUMPDEST PUSH2 0x2AF4 PUSH1 0x40 PUSH2 0x2A88 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B04 DUP5 DUP3 DUP6 ADD PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2B18 DUP5 DUP3 DUP6 ADD PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B37 PUSH2 0x2B32 DUP5 PUSH2 0x2AA3 JUMP JUMPDEST PUSH2 0x2A88 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2B5A JUMPI PUSH2 0x2B59 PUSH2 0x2607 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2B83 JUMPI DUP1 PUSH2 0x2B6F DUP9 DUP3 PUSH2 0x2AD4 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x2B5C JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2BA2 JUMPI PUSH2 0x2BA1 PUSH2 0x25FD JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2BB2 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2B24 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BD2 JUMPI PUSH2 0x2BD1 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2BE0 DUP6 DUP3 DUP7 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C01 JUMPI PUSH2 0x2C00 PUSH2 0x2486 JUMP JUMPDEST JUMPDEST PUSH2 0x2C0D DUP6 DUP3 DUP7 ADD PUSH2 0x2B8D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2C51 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2C36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C68 DUP3 PUSH2 0x2C17 JUMP JUMPDEST PUSH2 0x2C72 DUP2 DUP6 PUSH2 0x2C22 JUMP JUMPDEST SWAP4 POP PUSH2 0x2C82 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2C33 JUMP JUMPDEST PUSH2 0x2C8B DUP2 PUSH2 0x2A17 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2CB0 DUP2 DUP5 PUSH2 0x2C5D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CCE JUMPI PUSH2 0x2CCD PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2CDC DUP5 DUP3 DUP6 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2CEE DUP2 PUSH2 0x2700 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2D09 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2CE5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D18 DUP2 PUSH2 0x2682 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D27 DUP2 PUSH2 0x2841 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D36 DUP2 PUSH2 0x2877 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D45 DUP2 PUSH2 0x2700 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x120 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2D62 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2D75 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2D88 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2D9B PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2D1E JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2DAE PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2D2D JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2DC1 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2D3C JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x2DD4 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x2DE7 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2D2D JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x2DFC PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2D1E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 ADD SWAP1 POP PUSH2 0x2E18 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D4B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E35 JUMPI PUSH2 0x2E34 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E43 DUP6 DUP3 DUP7 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2E54 DUP6 DUP3 DUP7 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E74 JUMPI PUSH2 0x2E73 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E82 DUP5 DUP3 DUP6 ADD PUSH2 0x26EB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2EA1 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x251A JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2EB4 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x251A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2ECF PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2E8B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2EEA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2809 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2F09 JUMPI PUSH2 0x2F08 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F17 DUP7 DUP3 DUP8 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2F28 DUP7 DUP3 DUP8 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2F39 DUP7 DUP3 DUP8 ADD PUSH2 0x2723 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x2F4C DUP2 PUSH2 0x26C0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2F5B DUP2 PUSH2 0x2841 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2F76 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2F43 JUMP JUMPDEST PUSH2 0x2F83 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2F52 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2FA0 JUMPI PUSH2 0x2F9F PUSH2 0x25FD JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2FBD JUMPI PUSH2 0x2FBC PUSH2 0x2602 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2FD9 JUMPI PUSH2 0x2FD8 PUSH2 0x2607 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FF7 JUMPI PUSH2 0x2FF6 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3015 JUMPI PUSH2 0x3014 PUSH2 0x2486 JUMP JUMPDEST JUMPDEST PUSH2 0x3021 DUP6 DUP3 DUP7 ADD PUSH2 0x2F8A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3046 JUMPI PUSH2 0x3045 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3054 DUP7 DUP3 DUP8 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3065 DUP7 DUP3 DUP8 ADD PUSH2 0x26AB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x3076 DUP7 DUP3 DUP8 ADD PUSH2 0x2862 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3097 JUMPI PUSH2 0x3096 PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x30A5 DUP6 DUP3 DUP7 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x30B6 DUP6 DUP3 DUP7 ADD PUSH2 0x24AC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F6E6C7941676772656761746F72000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3136 PUSH1 0xE DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3141 DUP3 PUSH2 0x3100 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3165 DUP2 PUSH2 0x3129 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F7264657246756C66696C6C6564000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31A2 PUSH1 0xE DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x31AD DUP3 PUSH2 0x316C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x31D1 DUP2 PUSH2 0x3195 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3212 DUP3 PUSH2 0x2877 JUMP JUMPDEST SWAP2 POP PUSH2 0x321D DUP4 PUSH2 0x2877 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3241 JUMPI PUSH2 0x3240 PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x325C PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2809 JUMP JUMPDEST PUSH2 0x3269 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2F52 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x327F DUP2 PUSH2 0x270C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x329B JUMPI PUSH2 0x329A PUSH2 0x2481 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x32A9 DUP5 DUP3 DUP6 ADD PUSH2 0x3270 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32D7 PUSH2 0x32D2 PUSH2 0x32CD DUP5 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x2877 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x32E7 DUP2 PUSH2 0x32BC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3302 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x330F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x331C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x32DE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x332F DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH2 0x333A DUP4 PUSH2 0x2841 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3348 DUP2 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x335F JUMPI PUSH2 0x335E PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x33A0 DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH2 0x33AB DUP4 PUSH2 0x2841 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x33BB JUMPI PUSH2 0x33BA PUSH2 0x3366 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x53656E646572466565546F6F4869676800000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33FC PUSH1 0x10 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3407 DUP3 PUSH2 0x33C6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x342B DUP2 PUSH2 0x33EF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3447 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2809 JUMP JUMPDEST PUSH2 0x3454 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2809 JUMP JUMPDEST PUSH2 0x3461 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2F52 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3474 DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x34A6 JUMPI PUSH2 0x34A5 PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34CC PUSH2 0x34C7 PUSH2 0x34C2 DUP5 PUSH2 0x2877 JUMP JUMPDEST PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x2841 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x34DC DUP2 PUSH2 0x34B1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34FD DUP4 DUP6 PUSH2 0x30EF JUMP JUMPDEST SWAP4 POP PUSH2 0x350A DUP4 DUP6 DUP5 PUSH2 0x34E2 JUMP JUMPDEST PUSH2 0x3513 DUP4 PUSH2 0x2A17 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x3533 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x34D3 JUMP JUMPDEST PUSH2 0x3540 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x354D PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x27FA JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3560 DUP2 DUP5 DUP7 PUSH2 0x34F1 JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x35B3 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x35C6 JUMPI PUSH2 0x35C5 PUSH2 0x356C JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3602 PUSH1 0x16 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x360D DUP3 PUSH2 0x35CC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3631 DUP2 PUSH2 0x35F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x364D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F43 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3668 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x27FA JUMP JUMPDEST PUSH2 0x3675 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2809 JUMP JUMPDEST PUSH2 0x3682 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2CE5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36E6 PUSH1 0x2E DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x36F1 DUP3 PUSH2 0x368A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3715 DUP2 PUSH2 0x36D9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374E PUSH2 0x3749 PUSH2 0x3744 DUP5 PUSH2 0x371C JUMP JUMPDEST PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x3726 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x375E DUP2 PUSH2 0x3733 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3779 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3755 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x37EC PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x37AF JUMP JUMPDEST PUSH2 0x37F6 DUP7 DUP4 PUSH2 0x37AF JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3829 PUSH2 0x3824 PUSH2 0x381F DUP5 PUSH2 0x2841 JUMP JUMPDEST PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x2841 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3843 DUP4 PUSH2 0x380E JUMP JUMPDEST PUSH2 0x3857 PUSH2 0x384F DUP3 PUSH2 0x3830 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x37BC JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x386C PUSH2 0x385F JUMP JUMPDEST PUSH2 0x3877 DUP2 DUP5 DUP5 PUSH2 0x383A JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x389B JUMPI PUSH2 0x3890 PUSH1 0x0 DUP3 PUSH2 0x3864 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x387D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x38E0 JUMPI PUSH2 0x38B1 DUP2 PUSH2 0x378A JUMP JUMPDEST PUSH2 0x38BA DUP5 PUSH2 0x379F JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x38C9 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x38DD PUSH2 0x38D5 DUP6 PUSH2 0x379F JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x387C JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3903 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x38E5 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x391C DUP4 DUP4 PUSH2 0x38F2 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3936 DUP4 DUP4 PUSH2 0x377F JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x394F JUMPI PUSH2 0x394E PUSH2 0x2A28 JUMP JUMPDEST JUMPDEST PUSH2 0x3959 DUP3 SLOAD PUSH2 0x359B JUMP JUMPDEST PUSH2 0x3964 DUP3 DUP3 DUP6 PUSH2 0x389F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3993 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x3981 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x398B DUP6 DUP3 PUSH2 0x3910 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x39F3 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x39A1 DUP7 PUSH2 0x378A JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x39C9 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x39A4 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x39E6 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x39E2 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x38F2 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A08 DUP4 DUP6 PUSH2 0x2C22 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A15 DUP4 DUP6 DUP5 PUSH2 0x34E2 JUMP JUMPDEST PUSH2 0x3A1E DUP4 PUSH2 0x2A17 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A44 DUP2 DUP5 DUP7 PUSH2 0x39FC JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AA9 PUSH1 0x26 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3AB4 DUP3 PUSH2 0x3A4D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3AD8 DUP2 PUSH2 0x3A9C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AEA DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH2 0x3AF5 DUP4 PUSH2 0x2841 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3B0D JUMPI PUSH2 0x3B0C PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B1E DUP3 PUSH2 0x2841 JUMP JUMPDEST SWAP2 POP PUSH2 0x3B29 DUP4 PUSH2 0x2841 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3B41 JUMPI PUSH2 0x3B40 PUSH2 0x31D8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x546F6B656E4E6F74537570706F72746564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B7D PUSH1 0x11 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3B88 DUP3 PUSH2 0x3B47 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3BAC DUP2 PUSH2 0x3B70 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E7449735A65726F0000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BE9 PUSH1 0xC DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3BF4 DUP3 PUSH2 0x3BB3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C18 DUP2 PUSH2 0x3BDC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5468726F775A65726F4164647265737300000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C55 PUSH1 0x10 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3C60 DUP3 PUSH2 0x3C1F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C84 DUP2 PUSH2 0x3C48 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C6964496E737469747574696F6E436F646500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CC1 PUSH1 0x16 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3CCC DUP3 PUSH2 0x3C8B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CF0 DUP2 PUSH2 0x3CB4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2D PUSH1 0x20 DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3D38 DUP3 PUSH2 0x3CF7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D5C DUP2 PUSH2 0x3D20 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DBF PUSH1 0x2B DUP4 PUSH2 0x30EF JUMP JUMPDEST SWAP2 POP PUSH2 0x3DCA DUP3 PUSH2 0x3D63 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DEE DUP2 PUSH2 0x3DB2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 0xBB RETURN SWAP8 EXTCODECOPY 0xED BALANCE 0xC 0xD8 PUSH24 0x7C31EA538F4BEED34D4FEA5F26C4BEEE1D63073174EA6473 PUSH16 0x6C634300081200330000000000000000 ","sourceMap":"367:9323:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8266:487;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3830:1613;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1410:1608;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1751:500:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9343:96:12;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2064:101:0;;;:::i;:::-;;7917:119:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7746:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2443:263:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2257:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8103:157:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1441:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1401:344:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8806:139:12;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;841:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2712:161:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9170:120:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9536:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5838:546;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9005:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2314:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8266:487:12;8341:20;8373:33;8409:21;:31;8431:8;8409:31;;;;;;;;;;;8373:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8450:14;8467:12;:19;8450:36;;8496:27;8544:6;8526:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8496:55;;8575:9;8570:145;8594:6;8590:1;:10;8570:145;;;8630:12;8643:1;8630:15;;;;;;;;:::i;:::-;;;;;;;;8618:6;8625:1;8618:9;;;;;;;;:::i;:::-;;;;;;;:27;;;;8687:3;;;;;;;8570:145;;;;8740:6;8733:13;;;;;8266:487;;;:::o;3830:1613::-;4107:7;4116;1109:18;;;;;;;;;;;1095:32;;:10;:32;;;1087:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4201:5:::1;:15;4207:8;4201:15;;;;;;;;;;;:27;;;;;;;;;;;;4200:28;4192:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4295:13;4311:5;:15;4317:8;4311:15;;;;;;;;;;;:21;;;;;;;;;;;;4295:37;;4441:14;4411:44;;:5;:15;4417:8;4411:15;;;;;;;;;;;:26;;;:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4597:21;4624:52;4639:8;4649:14;4624:52;;4665:10;4624:14;:52::i;:::-;4595:81;;4719:1;4689:5;:15;4695:8;4689:15;;;;;;;;;;;:26;;;;;;;;;;;;:31;;::::0;4686:296:::1;;4820:4;4790:5;:15;4796:8;4790:15;;;;;;;;;;;:27;;;:34;;;;;;;;;;;;;;;;;;4870:1;4842:5;:15;4848:8;4842:15;;;;;;;;;;;:25;;;:29;4838:134;;;4930:27;4948:8;4930:17;:27::i;:::-;4838:134;4686:296;5029:1;5004:10;:22;;;:26;5000:154;;;5090:5;5083:22;;;5106:12;;;;;;;;;;;5120:10;:22;;;5083:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5000:154;5216:5;5209:22;;;5232:18;5252:10;:34;;;5209:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5367:18;5325:77;;5348:8;5325:77;5333:13;5358:6;5387:14;5325:77;;;;;;;;:::i;:::-;;;;;;;;5420:8;5430:5;5412:24;;;;;;3830:1613:::0;;;;;;;;;;;:::o;1410:1608::-;1722:15;1785:80;1794:6;1802:7;1811:14;1827:19;1848:16;1785:8;:80::i;:::-;1991:7;;1969:18;;;;;;;;;;;1959:28;;:7;:28;;;;:::i;:::-;1958:40;;;;:::i;:::-;1944:10;:54;;1936:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;2084:6;2077:27;;;2105:10;2125:4;2132:7;2077:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2206:6;:18;2213:10;2206:18;;;;;;;;;;;;;;;;:21;;;;;;;;;:::i;:::-;;;;;;2464:10;2476:6;:18;2483:10;2476:18;;;;;;;;;;;;;;;;2453:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2443:53;;;;;;2433:63;;2553:334;;;;;;;;2581:10;2553:334;;;;;;2612:6;2553:334;;;;;;2652:19;2553:334;;;;;;2696:10;2553:334;;;;2726:5;2553:334;;;;;;2758:5;2553:334;;;;;;2792:14;2553:334;;;;;;2839:7;;2553:334;;;;;;;;2869:7;2553:334;;;2536:5;:14;2542:7;2536:14;;;;;;;;;;;:351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2957:7;2948;2940:6;2932:79;;;2966:5;2973:16;2991:6;2999:11;;2932:79;;;;;;;;;;:::i;:::-;;;;;;;;1410:1608;;;;;;;;;;;;:::o;1751:500:13:-;1334:13:0;:11;:13::i;:::-;1868:14:13::1;1885:12;:19;1868:36;;1919:6;1914:331;1935:6;1931:1;:10;1914:331;;;1959:21;:31;1981:8;1959:31;;;;;;;;;;;1996:12;2009:1;1996:15;;;;;;;;:::i;:::-;;;;;;;;1959:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2078:97;;;;;;;;2120:12;2133:1;2120:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2078:97;;;;2152:8;2078:97;;::::0;2026:27:::1;:49;2054:12;2067:1;2054:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2026:49;;;;;;;;;;;:149;;;;;;;;;;;;;;;;;;;2217:3;;;;;;;1914:331;;;;1857:394;1751:500:::0;;:::o;9343:96:12:-;9390:12;9421:11;9414:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9343:96;:::o;2064:101:0:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;7917:119:12:-;7981:4;8004:17;:25;8022:6;8004:25;;;;;;;;;;;;;;;;;;;;;;;;;7997:32;;7917:119;;;:::o;7746:115::-;7808:12;;:::i;:::-;7839:5;:15;7845:8;7839:15;;;;;;;;;;;7832:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7746:115;;;:::o;2443:263:13:-;1334:13:0;:11;:13::i;:::-;2559:1:13::1;2542:19;;:5;:19;;::::0;2534:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2602:13;:4;:13:::0;2598:39:::1;;2632:5;2617:12;;:20;;;;;;;;;;;;;;;;;;2598:39;2651:20;:4;:20:::0;2647:52:::1;;2694:5;2673:18;;:26;;;;;;;;;;;;;;;;;;2647:52;2443:263:::0;;:::o;2257:180::-;1334:13:0;:11;:13::i;:::-;2363:19:13::1;2342:18;;:40;;;;;;;;;;;;;;;;;;2397:33;2410:19;2397:33;;;;;;:::i;:::-;;;;;;;;2257:180:::0;:::o;8103:157:12:-;8177:24;;:::i;:::-;8220:27;:33;8248:4;8220:33;;;;;;;;;;;8213:40;;;;;;;;;;;;;;;;;;;;;;;;;;;8103:157;;;:::o;1441:85:0:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;1401:344:13:-;1334:13:0;:11;:13::i;:::-;1525:1:13::1;1508:19;;:5;:19;;::::0;1500:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1568:15;:4;:15:::0;1564:54:::1;;1612:6;1585:17;:24;1603:5;1585:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1564:54;1632:19;:4;:19:::0;1628:55:::1;;1677:6;1653:14;:21;1668:5;1653:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1628:55;1699:39;1718:4;1724:5;1731:6;1699:39;;;;;;;;:::i;:::-;;;;;;;;1401:344:::0;;;:::o;8806:139:12:-;8862:6;8879:7;8910:18;;;;;;;;;;;8930:7;;8903:35;;;;8806:139;;:::o;841:206::-;3279:19:1;3302:13;;;;;;;;;;;3301:14;3279:36;;3347:14;:34;;;;;3380:1;3365:12;;;;;;;;;;:16;;;3347:34;3346:108;;;;3388:44;3426:4;3388:29;:44::i;:::-;3387:45;:66;;;;;3452:1;3436:12;;;;;;;;;;:17;;;3387:66;3346:108;3325:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;3551:1;3536:12;;:16;;;;;;;;;;;;;;;;;;3566:14;3562:65;;;3612:4;3596:13;;:20;;;;;;;;;;;;;;;;;;3562:65;938:4:12::1;911:17;:24;929:5;911:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;965:7;955;:17;;;;1004:4;983:18;;:25;;;;;;;;;;;;;;;;;;1024:16;:14;:16::i;:::-;3651:14:1::0;3647:99;;;3697:5;3681:13;;:21;;;;;;;;;;;;;;;;;;3721:14;3733:1;3721:14;;;;;;:::i;:::-;;;;;;;;3647:99;3269:483;841:206:12;:::o;2712:161:13:-;1334:13:0;:11;:13::i;:::-;2816:10:13::1;;2802:11;:24;;;;;;;:::i;:::-;;2841:25;2855:10;;2841:25;;;;;;;:::i;:::-;;;;;;;;2712:161:::0;;:::o;9170:120:12:-;9238:4;9261:14;:22;9276:6;9261:22;;;;;;;;;;;;;;;;;;;;;;;;;9254:29;;9170:120;;;:::o;9536:151::-;1334:13:0;:11;:13::i;:::-;9643:6:12::1;9636:23;;;9660:10;9672:7;9636:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9536:151:::0;;;:::o;5838:546::-;5923:4;1109:18;;;;;;;;;;;1095:32;;:10;:32;;;1087:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;6005:5:::1;:15;6011:8;6005:15;;;;;;;;;;;:27;;;;;;;;;;;;6004:28;5996:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6121:4;6091:5;:15;6097:8;6091:15;;;;;;;;;;;:27;;;:34;;;;;;;;;;;;;;;;;;6164:1;6135:5;:15;6141:8;6135:15;;;;;;;;;;;:26;;;:30;;;;;;;;;;;;;;;;;;6213:5;:15;6219:8;6213:15;;;;;;;;;;;:21;;;;;;;;;;;;6206:38;;;6245:5;:15;6251:8;6245:15;;;;;;;;;;;:29;;;;;;;;;;;;6276:5;:15;6282:8;6276:15;;;;;;;;;;;:22;;;6206:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6339:8;6330:26;6349:6;6330:26;;;;;;:::i;:::-;;;;;;;;6373:4;6366:11;;5838:546:::0;;;;:::o;9005:105::-;9059:7;9085:18;;;;;;;;;;;9078:25;;9005:105;:::o;2314:198:0:-;1334:13;:11;:13::i;:::-;2422:1:::1;2402:22;;:8;:22;;::::0;2394:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:28;2496:8;2477:18;:28::i;:::-;2314:198:::0;:::o;6390:1109:12:-;6493:21;;:::i;:::-;6587:14;6604:5;:15;6610:8;6604:15;;;;;;;;;;;:22;;;6587:39;;6692:5;:15;6698:8;6692:15;;;;;;;;;;;:25;;;6683:6;:34;;;;:::i;:::-;6674:43;;6861:7;;6843:14;6834:23;;:6;:23;;;;:::i;:::-;6833:35;;;;:::i;:::-;6796:10;:34;;:72;;;;;7021:7;;6999:18;;;;;;;;;;;6962:55;;:10;:34;;;:55;;;;:::i;:::-;6961:67;;;;:::i;:::-;6936:10;:22;;:92;;;;;7201:10;:22;;;7164:10;:34;;;:59;;;;:::i;:::-;7126:10;:34;;:98;;;;;7356:10;7352:141;;;7420:10;:22;;;7382:10;:34;;:60;;;;;;;:::i;:::-;;;;;;;;7481:1;7456:10;:22;;:26;;;;;7352:141;6517:982;6390:1109;;;;;:::o;5449:343::-;5513:17;5533:5;:15;5539:8;5533:15;;;;;;;;;;;:34;;;;;;;;;;;;5513:54;;5577:12;5592:5;:15;5598:8;5592:15;;;;;;;;;;;:25;;;5577:40;;5665:5;:15;5671:8;5665:15;;;;;;;;;;;:21;;;;;;;;;;;;5658:38;;;5697:9;5708:4;5658:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5780:4;5769:9;5751:34;;;;;;;;;;;;5503:289;;5449:343;:::o;3024:559::-;3235:17;:25;3253:6;3235:25;;;;;;;;;;;;;;;;;;;;;;;;;3227:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;3310:1;3300:7;:11;3292:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;3372:1;3346:28;;:14;:28;;;3338:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3444:1;3413:33;;:19;:33;;;3405:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;3547:1;3539:10;;3485:27;:45;3513:16;3485:45;;;;;;;;;;;:50;;;:64;3477:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;3024:559;;;;;:::o;1599:130:0:-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;2666:187::-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;1423:320:5:-;1483:4;1735:1;1713:7;:19;;;:23;1706:30;;1423:320;;;:::o;1003:95:0:-;5374:13:1;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1065:26:0::1;:24;:26::i;:::-;1003:95::o:0;850:96:6:-;903:7;929:10;922:17;;850:96;:::o;1104:111:0:-;5374:13:1;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:32:0::1;1195:12;:10;:12::i;:::-;1176:18;:32::i;:::-;1104:111::o:0;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:143::-;1121:6;1155:5;1149:12;1139:22;;1025:143;;;:::o;1174:213::-;1302:11;1336:6;1331:3;1324:19;1376:4;1371:3;1367:14;1352:29;;1174:213;;;;:::o;1393:161::-;1489:4;1512:3;1504:11;;1542:4;1537:3;1533:14;1525:22;;1393:161;;;:::o;1560:108::-;1637:24;1655:5;1637:24;:::i;:::-;1632:3;1625:37;1560:108;;:::o;1768:505::-;1913:4;1908:3;1904:14;2000:4;1993:5;1989:16;1983:23;2019:63;2076:4;2071:3;2067:14;2053:12;2019:63;:::i;:::-;1928:164;2174:4;2167:5;2163:16;2157:23;2193:63;2250:4;2245:3;2241:14;2227:12;2193:63;:::i;:::-;2102:164;1882:391;1768:505;;:::o;2279:295::-;2406:10;2427:104;2527:3;2519:6;2427:104;:::i;:::-;2563:4;2558:3;2554:14;2540:28;;2279:295;;;;:::o;2580:142::-;2679:4;2711;2706:3;2702:14;2694:22;;2580:142;;;:::o;2826:964::-;3003:3;3032:83;3109:5;3032:83;:::i;:::-;3131:115;3239:6;3234:3;3131:115;:::i;:::-;3124:122;;3270:85;3349:5;3270:85;:::i;:::-;3378:7;3409:1;3394:371;3419:6;3416:1;3413:13;3394:371;;;3495:6;3489:13;3522:121;3639:3;3624:13;3522:121;:::i;:::-;3515:128;;3666:89;3748:6;3666:89;:::i;:::-;3656:99;;3454:311;3441:1;3438;3434:9;3429:14;;3394:371;;;3398:14;3781:3;3774:10;;3008:782;;;2826:964;;;;:::o;3796:489::-;3997:4;4035:2;4024:9;4020:18;4012:26;;4084:9;4078:4;4074:20;4070:1;4059:9;4055:17;4048:47;4112:166;4273:4;4264:6;4112:166;:::i;:::-;4104:174;;3796:489;;;;:::o;4291:117::-;4400:1;4397;4390:12;4414:117;4523:1;4520;4513:12;4537:117;4646:1;4643;4636:12;4677:568;4750:8;4760:6;4810:3;4803:4;4795:6;4791:17;4787:27;4777:122;;4818:79;;:::i;:::-;4777:122;4931:6;4918:20;4908:30;;4961:18;4953:6;4950:30;4947:117;;;4983:79;;:::i;:::-;4947:117;5097:4;5089:6;5085:17;5073:29;;5151:3;5143:4;5135:6;5131:17;5121:8;5117:32;5114:41;5111:128;;;5158:79;;:::i;:::-;5111:128;4677:568;;;;;:::o;5251:126::-;5288:7;5328:42;5321:5;5317:54;5306:65;;5251:126;;;:::o;5383:96::-;5420:7;5449:24;5467:5;5449:24;:::i;:::-;5438:35;;5383:96;;;:::o;5485:122::-;5558:24;5576:5;5558:24;:::i;:::-;5551:5;5548:35;5538:63;;5597:1;5594;5587:12;5538:63;5485:122;:::o;5613:139::-;5659:5;5697:6;5684:20;5675:29;;5713:33;5740:5;5713:33;:::i;:::-;5613:139;;;;:::o;5758:101::-;5794:7;5834:18;5827:5;5823:30;5812:41;;5758:101;;;:::o;5865:120::-;5937:23;5954:5;5937:23;:::i;:::-;5930:5;5927:34;5917:62;;5975:1;5972;5965:12;5917:62;5865:120;:::o;5991:137::-;6036:5;6074:6;6061:20;6052:29;;6090:32;6116:5;6090:32;:::i;:::-;5991:137;;;;:::o;6134:90::-;6168:7;6211:5;6204:13;6197:21;6186:32;;6134:90;;;:::o;6230:116::-;6300:21;6315:5;6300:21;:::i;:::-;6293:5;6290:32;6280:60;;6336:1;6333;6326:12;6280:60;6230:116;:::o;6352:133::-;6395:5;6433:6;6420:20;6411:29;;6449:30;6473:5;6449:30;:::i;:::-;6352:133;;;;:::o;6491:1425::-;6627:6;6635;6643;6651;6659;6667;6675;6683;6732:3;6720:9;6711:7;6707:23;6703:33;6700:120;;;6739:79;;:::i;:::-;6700:120;6859:1;6884:53;6929:7;6920:6;6909:9;6905:22;6884:53;:::i;:::-;6874:63;;6830:117;6986:2;7012:53;7057:7;7048:6;7037:9;7033:22;7012:53;:::i;:::-;7002:63;;6957:118;7114:2;7140:53;7185:7;7176:6;7165:9;7161:22;7140:53;:::i;:::-;7130:63;;7085:118;7270:2;7259:9;7255:18;7242:32;7301:18;7293:6;7290:30;7287:117;;;7323:79;;:::i;:::-;7287:117;7436:80;7508:7;7499:6;7488:9;7484:22;7436:80;:::i;:::-;7418:98;;;;7213:313;7565:3;7592:53;7637:7;7628:6;7617:9;7613:22;7592:53;:::i;:::-;7582:63;;7536:119;7694:3;7721:52;7765:7;7756:6;7745:9;7741:22;7721:52;:::i;:::-;7711:62;;7665:118;7822:3;7849:50;7891:7;7882:6;7871:9;7867:22;7849:50;:::i;:::-;7839:60;;7793:116;6491:1425;;;;;;;;;;;:::o;7922:118::-;8009:24;8027:5;8009:24;:::i;:::-;8004:3;7997:37;7922:118;;:::o;8046:::-;8133:24;8151:5;8133:24;:::i;:::-;8128:3;8121:37;8046:118;;:::o;8170:332::-;8291:4;8329:2;8318:9;8314:18;8306:26;;8342:71;8410:1;8399:9;8395:17;8386:6;8342:71;:::i;:::-;8423:72;8491:2;8480:9;8476:18;8467:6;8423:72;:::i;:::-;8170:332;;;;;:::o;8508:77::-;8545:7;8574:5;8563:16;;8508:77;;;:::o;8591:122::-;8664:24;8682:5;8664:24;:::i;:::-;8657:5;8654:35;8644:63;;8703:1;8700;8693:12;8644:63;8591:122;:::o;8719:139::-;8765:5;8803:6;8790:20;8781:29;;8819:33;8846:5;8819:33;:::i;:::-;8719:139;;;;:::o;8864:109::-;8900:7;8940:26;8933:5;8929:38;8918:49;;8864:109;;;:::o;8979:120::-;9051:23;9068:5;9051:23;:::i;:::-;9044:5;9041:34;9031:62;;9089:1;9086;9079:12;9031:62;8979:120;:::o;9105:137::-;9150:5;9188:6;9175:20;9166:29;;9204:32;9230:5;9204:32;:::i;:::-;9105:137;;;;:::o;9262:553::-;9320:8;9330:6;9380:3;9373:4;9365:6;9361:17;9357:27;9347:122;;9388:79;;:::i;:::-;9347:122;9501:6;9488:20;9478:30;;9531:18;9523:6;9520:30;9517:117;;;9553:79;;:::i;:::-;9517:117;9667:4;9659:6;9655:17;9643:29;;9721:3;9713:4;9705:6;9701:17;9691:8;9687:32;9684:41;9681:128;;;9728:79;;:::i;:::-;9681:128;9262:553;;;;;:::o;9821:1693::-;9963:6;9971;9979;9987;9995;10003;10011;10019;10027;10035;10084:3;10072:9;10063:7;10059:23;10055:33;10052:120;;;10091:79;;:::i;:::-;10052:120;10211:1;10236:53;10281:7;10272:6;10261:9;10257:22;10236:53;:::i;:::-;10226:63;;10182:117;10338:2;10364:53;10409:7;10400:6;10389:9;10385:22;10364:53;:::i;:::-;10354:63;;10309:118;10466:2;10492:53;10537:7;10528:6;10517:9;10513:22;10492:53;:::i;:::-;10482:63;;10437:118;10594:2;10620:53;10665:7;10656:6;10645:9;10641:22;10620:53;:::i;:::-;10610:63;;10565:118;10722:3;10749:52;10793:7;10784:6;10773:9;10769:22;10749:52;:::i;:::-;10739:62;;10693:118;10850:3;10877:53;10922:7;10913:6;10902:9;10898:22;10877:53;:::i;:::-;10867:63;;10821:119;10979:3;11006:53;11051:7;11042:6;11031:9;11027:22;11006:53;:::i;:::-;10996:63;;10950:119;11108:3;11135:53;11180:7;11171:6;11160:9;11156:22;11135:53;:::i;:::-;11125:63;;11079:119;11265:3;11254:9;11250:19;11237:33;11297:18;11289:6;11286:30;11283:117;;;11319:79;;:::i;:::-;11283:117;11432:65;11489:7;11480:6;11469:9;11465:22;11432:65;:::i;:::-;11414:83;;;;11208:299;9821:1693;;;;;;;;;;;;;:::o;11520:222::-;11613:4;11651:2;11640:9;11636:18;11628:26;;11664:71;11732:1;11721:9;11717:17;11708:6;11664:71;:::i;:::-;11520:222;;;;:::o;11748:102::-;11789:6;11840:2;11836:7;11831:2;11824:5;11820:14;11816:28;11806:38;;11748:102;;;:::o;11856:180::-;11904:77;11901:1;11894:88;12001:4;11998:1;11991:15;12025:4;12022:1;12015:15;12042:281;12125:27;12147:4;12125:27;:::i;:::-;12117:6;12113:40;12255:6;12243:10;12240:22;12219:18;12207:10;12204:34;12201:62;12198:88;;;12266:18;;:::i;:::-;12198:88;12306:10;12302:2;12295:22;12085:238;12042:281;;:::o;12329:129::-;12363:6;12390:20;;:::i;:::-;12380:30;;12419:33;12447:4;12439:6;12419:33;:::i;:::-;12329:129;;;:::o;12464:340::-;12570:4;12660:18;12652:6;12649:30;12646:56;;;12682:18;;:::i;:::-;12646:56;12732:4;12724:6;12720:17;12712:25;;12792:4;12786;12782:15;12774:23;;12464:340;;;:::o;12810:117::-;12919:1;12916;12909:12;13105:578;13183:5;13227:4;13215:9;13210:3;13206:19;13202:30;13199:117;;;13235:79;;:::i;:::-;13199:117;13334:21;13350:4;13334:21;:::i;:::-;13325:30;;13414:1;13454:49;13499:3;13490:6;13479:9;13475:22;13454:49;:::i;:::-;13447:4;13440:5;13436:16;13429:75;13365:150;13574:2;13615:49;13660:3;13651:6;13640:9;13636:22;13615:49;:::i;:::-;13608:4;13601:5;13597:16;13590:75;13525:151;13105:578;;;;:::o;13740:797::-;13865:5;13890:110;13906:93;13992:6;13906:93;:::i;:::-;13890:110;:::i;:::-;13881:119;;14020:5;14049:6;14042:5;14035:21;14083:4;14076:5;14072:16;14065:23;;14136:4;14128:6;14124:17;14116:6;14112:30;14165:3;14157:6;14154:15;14151:122;;;14184:79;;:::i;:::-;14151:122;14299:6;14282:249;14316:6;14311:3;14308:15;14282:249;;;14391:3;14420:66;14482:3;14470:10;14420:66;:::i;:::-;14415:3;14408:79;14516:4;14511:3;14507:14;14500:21;;14358:173;14342:4;14337:3;14333:14;14326:21;;14282:249;;;14286:21;13871:666;;13740:797;;;;;:::o;14594:428::-;14694:5;14743:3;14736:4;14728:6;14724:17;14720:27;14710:122;;14751:79;;:::i;:::-;14710:122;14868:6;14855:20;14893:123;15012:3;15004:6;14997:4;14989:6;14985:17;14893:123;:::i;:::-;14884:132;;14700:322;14594:428;;;;:::o;15028:742::-;15150:6;15158;15207:2;15195:9;15186:7;15182:23;15178:32;15175:119;;;15213:79;;:::i;:::-;15175:119;15333:1;15358:53;15403:7;15394:6;15383:9;15379:22;15358:53;:::i;:::-;15348:63;;15304:117;15488:2;15477:9;15473:18;15460:32;15519:18;15511:6;15508:30;15505:117;;;15541:79;;:::i;:::-;15505:117;15646:107;15745:7;15736:6;15725:9;15721:22;15646:107;:::i;:::-;15636:117;;15431:332;15028:742;;;;;:::o;15776:98::-;15827:6;15861:5;15855:12;15845:22;;15776:98;;;:::o;15880:168::-;15963:11;15997:6;15992:3;15985:19;16037:4;16032:3;16028:14;16013:29;;15880:168;;;;:::o;16054:246::-;16135:1;16145:113;16159:6;16156:1;16153:13;16145:113;;;16244:1;16239:3;16235:11;16229:18;16225:1;16220:3;16216:11;16209:39;16181:2;16178:1;16174:10;16169:15;;16145:113;;;16292:1;16283:6;16278:3;16274:16;16267:27;16116:184;16054:246;;;:::o;16306:373::-;16392:3;16420:38;16452:5;16420:38;:::i;:::-;16474:70;16537:6;16532:3;16474:70;:::i;:::-;16467:77;;16553:65;16611:6;16606:3;16599:4;16592:5;16588:16;16553:65;:::i;:::-;16643:29;16665:6;16643:29;:::i;:::-;16638:3;16634:39;16627:46;;16396:283;16306:373;;;;:::o;16685:309::-;16796:4;16834:2;16823:9;16819:18;16811:26;;16883:9;16877:4;16873:20;16869:1;16858:9;16854:17;16847:47;16911:76;16982:4;16973:6;16911:76;:::i;:::-;16903:84;;16685:309;;;;:::o;17000:329::-;17059:6;17108:2;17096:9;17087:7;17083:23;17079:32;17076:119;;;17114:79;;:::i;:::-;17076:119;17234:1;17259:53;17304:7;17295:6;17284:9;17280:22;17259:53;:::i;:::-;17249:63;;17205:117;17000:329;;;;:::o;17335:109::-;17416:21;17431:5;17416:21;:::i;:::-;17411:3;17404:34;17335:109;;:::o;17450:210::-;17537:4;17575:2;17564:9;17560:18;17552:26;;17588:65;17650:1;17639:9;17635:17;17626:6;17588:65;:::i;:::-;17450:210;;;;:::o;17666:108::-;17743:24;17761:5;17743:24;:::i;:::-;17738:3;17731:37;17666:108;;:::o;17780:::-;17857:24;17875:5;17857:24;:::i;:::-;17852:3;17845:37;17780:108;;:::o;17894:105::-;17969:23;17986:5;17969:23;:::i;:::-;17964:3;17957:36;17894:105;;:::o;18005:99::-;18076:21;18091:5;18076:21;:::i;:::-;18071:3;18064:34;18005:99;;:::o;18166:1763::-;18309:6;18304:3;18300:16;18400:4;18393:5;18389:16;18383:23;18419:63;18476:4;18471:3;18467:14;18453:12;18419:63;:::i;:::-;18326:166;18575:4;18568:5;18564:16;18558:23;18594:63;18651:4;18646:3;18642:14;18628:12;18594:63;:::i;:::-;18502:165;18763:4;18756:5;18752:16;18746:23;18782:63;18839:4;18834:3;18830:14;18816:12;18782:63;:::i;:::-;18677:178;18942:4;18935:5;18931:16;18925:23;18961:63;19018:4;19013:3;19009:14;18995:12;18961:63;:::i;:::-;18865:169;19116:4;19109:5;19105:16;19099:23;19135:61;19190:4;19185:3;19181:14;19167:12;19135:61;:::i;:::-;19044:162;19295:4;19288:5;19284:16;19278:23;19314:57;19365:4;19360:3;19356:14;19342:12;19314:57;:::i;:::-;19216:165;19472:4;19465:5;19461:16;19455:23;19491:63;19548:4;19543:3;19539:14;19525:12;19491:63;:::i;:::-;19391:173;19652:4;19645:5;19641:16;19635:23;19671:61;19726:4;19721:3;19717:14;19703:12;19671:61;:::i;:::-;19574:168;19826:6;19819:5;19815:18;19809:25;19847:65;19904:6;19899:3;19895:16;19881:12;19847:65;:::i;:::-;19752:170;18278:1651;18166:1763;;:::o;19935:315::-;20074:4;20112:3;20101:9;20097:19;20089:27;;20126:117;20240:1;20229:9;20225:17;20216:6;20126:117;:::i;:::-;19935:315;;;;:::o;20256:474::-;20324:6;20332;20381:2;20369:9;20360:7;20356:23;20352:32;20349:119;;;20387:79;;:::i;:::-;20349:119;20507:1;20532:53;20577:7;20568:6;20557:9;20553:22;20532:53;:::i;:::-;20522:63;;20478:117;20634:2;20660:53;20705:7;20696:6;20685:9;20681:22;20660:53;:::i;:::-;20650:63;;20605:118;20256:474;;;;;:::o;20736:327::-;20794:6;20843:2;20831:9;20822:7;20818:23;20814:32;20811:119;;;20849:79;;:::i;:::-;20811:119;20969:1;20994:52;21038:7;21029:6;21018:9;21014:22;20994:52;:::i;:::-;20984:62;;20940:116;20736:327;;;;:::o;21175:531::-;21342:4;21337:3;21333:14;21429:4;21422:5;21418:16;21412:23;21448:63;21505:4;21500:3;21496:14;21482:12;21448:63;:::i;:::-;21357:164;21607:4;21600:5;21596:16;21590:23;21626:63;21683:4;21678:3;21674:14;21660:12;21626:63;:::i;:::-;21531:168;21311:395;21175:531;;:::o;21712:362::-;21875:4;21913:2;21902:9;21898:18;21890:26;;21926:141;22064:1;22053:9;22049:17;22040:6;21926:141;:::i;:::-;21712:362;;;;:::o;22080:222::-;22173:4;22211:2;22200:9;22196:18;22188:26;;22224:71;22292:1;22281:9;22277:17;22268:6;22224:71;:::i;:::-;22080:222;;;;:::o;22308:613::-;22382:6;22390;22398;22447:2;22435:9;22426:7;22422:23;22418:32;22415:119;;;22453:79;;:::i;:::-;22415:119;22573:1;22598:53;22643:7;22634:6;22623:9;22619:22;22598:53;:::i;:::-;22588:63;;22544:117;22700:2;22726:53;22771:7;22762:6;22751:9;22747:22;22726:53;:::i;:::-;22716:63;;22671:118;22828:2;22854:50;22896:7;22887:6;22876:9;22872:22;22854:50;:::i;:::-;22844:60;;22799:115;22308:613;;;;;:::o;22927:115::-;23012:23;23029:5;23012:23;:::i;:::-;23007:3;23000:36;22927:115;;:::o;23048:118::-;23135:24;23153:5;23135:24;:::i;:::-;23130:3;23123:37;23048:118;;:::o;23172:328::-;23291:4;23329:2;23318:9;23314:18;23306:26;;23342:69;23408:1;23397:9;23393:17;23384:6;23342:69;:::i;:::-;23421:72;23489:2;23478:9;23474:18;23465:6;23421:72;:::i;:::-;23172:328;;;;;:::o;23519:552::-;23576:8;23586:6;23636:3;23629:4;23621:6;23617:17;23613:27;23603:122;;23644:79;;:::i;:::-;23603:122;23757:6;23744:20;23734:30;;23787:18;23779:6;23776:30;23773:117;;;23809:79;;:::i;:::-;23773:117;23923:4;23915:6;23911:17;23899:29;;23977:3;23969:4;23961:6;23957:17;23947:8;23943:32;23940:41;23937:128;;;23984:79;;:::i;:::-;23937:128;23519:552;;;;;:::o;24077:527::-;24147:6;24155;24204:2;24192:9;24183:7;24179:23;24175:32;24172:119;;;24210:79;;:::i;:::-;24172:119;24358:1;24347:9;24343:17;24330:31;24388:18;24380:6;24377:30;24374:117;;;24410:79;;:::i;:::-;24374:117;24523:64;24579:7;24570:6;24559:9;24555:22;24523:64;:::i;:::-;24505:82;;;;24301:296;24077:527;;;;;:::o;24610:619::-;24687:6;24695;24703;24752:2;24740:9;24731:7;24727:23;24723:32;24720:119;;;24758:79;;:::i;:::-;24720:119;24878:1;24903:53;24948:7;24939:6;24928:9;24924:22;24903:53;:::i;:::-;24893:63;;24849:117;25005:2;25031:53;25076:7;25067:6;25056:9;25052:22;25031:53;:::i;:::-;25021:63;;24976:118;25133:2;25159:53;25204:7;25195:6;25184:9;25180:22;25159:53;:::i;:::-;25149:63;;25104:118;24610:619;;;;;:::o;25235:474::-;25303:6;25311;25360:2;25348:9;25339:7;25335:23;25331:32;25328:119;;;25366:79;;:::i;:::-;25328:119;25486:1;25511:53;25556:7;25547:6;25536:9;25532:22;25511:53;:::i;:::-;25501:63;;25457:117;25613:2;25639:53;25684:7;25675:6;25664:9;25660:22;25639:53;:::i;:::-;25629:63;;25584:118;25235:474;;;;;:::o;25715:180::-;25763:77;25760:1;25753:88;25860:4;25857:1;25850:15;25884:4;25881:1;25874:15;25901:169;25985:11;26019:6;26014:3;26007:19;26059:4;26054:3;26050:14;26035:29;;25901:169;;;;:::o;26076:164::-;26216:16;26212:1;26204:6;26200:14;26193:40;26076:164;:::o;26246:366::-;26388:3;26409:67;26473:2;26468:3;26409:67;:::i;:::-;26402:74;;26485:93;26574:3;26485:93;:::i;:::-;26603:2;26598:3;26594:12;26587:19;;26246:366;;;:::o;26618:419::-;26784:4;26822:2;26811:9;26807:18;26799:26;;26871:9;26865:4;26861:20;26857:1;26846:9;26842:17;26835:47;26899:131;27025:4;26899:131;:::i;:::-;26891:139;;26618:419;;;:::o;27043:164::-;27183:16;27179:1;27171:6;27167:14;27160:40;27043:164;:::o;27213:366::-;27355:3;27376:67;27440:2;27435:3;27376:67;:::i;:::-;27369:74;;27452:93;27541:3;27452:93;:::i;:::-;27570:2;27565:3;27561:12;27554:19;;27213:366;;;:::o;27585:419::-;27751:4;27789:2;27778:9;27774:18;27766:26;;27838:9;27832:4;27828:20;27824:1;27813:9;27809:17;27802:47;27866:131;27992:4;27866:131;:::i;:::-;27858:139;;27585:419;;;:::o;28010:180::-;28058:77;28055:1;28048:88;28155:4;28152:1;28145:15;28179:4;28176:1;28169:15;28196:216;28235:4;28255:19;28272:1;28255:19;:::i;:::-;28250:24;;28288:19;28305:1;28288:19;:::i;:::-;28283:24;;28331:1;28328;28324:9;28316:17;;28355:26;28349:4;28346:36;28343:62;;;28385:18;;:::i;:::-;28343:62;28196:216;;;;:::o;28418:332::-;28539:4;28577:2;28566:9;28562:18;28554:26;;28590:71;28658:1;28647:9;28643:17;28634:6;28590:71;:::i;:::-;28671:72;28739:2;28728:9;28724:18;28715:6;28671:72;:::i;:::-;28418:332;;;;;:::o;28756:137::-;28810:5;28841:6;28835:13;28826:22;;28857:30;28881:5;28857:30;:::i;:::-;28756:137;;;;:::o;28899:345::-;28966:6;29015:2;29003:9;28994:7;28990:23;28986:32;28983:119;;;29021:79;;:::i;:::-;28983:119;29141:1;29166:61;29219:7;29210:6;29199:9;29195:22;29166:61;:::i;:::-;29156:71;;29112:125;28899:345;;;;:::o;29250:60::-;29278:3;29299:5;29292:12;;29250:60;;;:::o;29316:138::-;29364:9;29397:51;29414:33;29423:23;29440:5;29423:23;:::i;:::-;29414:33;:::i;:::-;29397:51;:::i;:::-;29384:64;;29316:138;;;:::o;29460:127::-;29545:35;29574:5;29545:35;:::i;:::-;29540:3;29533:48;29460:127;;:::o;29593:438::-;29740:4;29778:2;29767:9;29763:18;29755:26;;29791:71;29859:1;29848:9;29844:17;29835:6;29791:71;:::i;:::-;29872:72;29940:2;29929:9;29925:18;29916:6;29872:72;:::i;:::-;29954:70;30020:2;30009:9;30005:18;29996:6;29954:70;:::i;:::-;29593:438;;;;;;:::o;30037:410::-;30077:7;30100:20;30118:1;30100:20;:::i;:::-;30095:25;;30134:20;30152:1;30134:20;:::i;:::-;30129:25;;30189:1;30186;30182:9;30211:30;30229:11;30211:30;:::i;:::-;30200:41;;30390:1;30381:7;30377:15;30374:1;30371:22;30351:1;30344:9;30324:83;30301:139;;30420:18;;:::i;:::-;30301:139;30085:362;30037:410;;;;:::o;30453:180::-;30501:77;30498:1;30491:88;30598:4;30595:1;30588:15;30622:4;30619:1;30612:15;30639:185;30679:1;30696:20;30714:1;30696:20;:::i;:::-;30691:25;;30730:20;30748:1;30730:20;:::i;:::-;30725:25;;30769:1;30759:35;;30774:18;;:::i;:::-;30759:35;30816:1;30813;30809:9;30804:14;;30639:185;;;;:::o;30830:166::-;30970:18;30966:1;30958:6;30954:14;30947:42;30830:166;:::o;31002:366::-;31144:3;31165:67;31229:2;31224:3;31165:67;:::i;:::-;31158:74;;31241:93;31330:3;31241:93;:::i;:::-;31359:2;31354:3;31350:12;31343:19;;31002:366;;;:::o;31374:419::-;31540:4;31578:2;31567:9;31563:18;31555:26;;31627:9;31621:4;31617:20;31613:1;31602:9;31598:17;31591:47;31655:131;31781:4;31655:131;:::i;:::-;31647:139;;31374:419;;;:::o;31799:442::-;31948:4;31986:2;31975:9;31971:18;31963:26;;31999:71;32067:1;32056:9;32052:17;32043:6;31999:71;:::i;:::-;32080:72;32148:2;32137:9;32133:18;32124:6;32080:72;:::i;:::-;32162;32230:2;32219:9;32215:18;32206:6;32162:72;:::i;:::-;31799:442;;;;;;:::o;32247:233::-;32286:3;32309:24;32327:5;32309:24;:::i;:::-;32300:33;;32355:66;32348:5;32345:77;32342:103;;32425:18;;:::i;:::-;32342:103;32472:1;32465:5;32461:13;32454:20;;32247:233;;;:::o;32486:140::-;32535:9;32568:52;32586:33;32595:23;32612:5;32595:23;:::i;:::-;32586:33;:::i;:::-;32568:52;:::i;:::-;32555:65;;32486:140;;;:::o;32632:129::-;32718:36;32748:5;32718:36;:::i;:::-;32713:3;32706:49;32632:129;;:::o;32767:146::-;32864:6;32859:3;32854;32841:30;32905:1;32896:6;32891:3;32887:16;32880:27;32767:146;;;:::o;32943:317::-;33041:3;33062:71;33126:6;33121:3;33062:71;:::i;:::-;33055:78;;33143:56;33192:6;33187:3;33180:5;33143:56;:::i;:::-;33224:29;33246:6;33224:29;:::i;:::-;33219:3;33215:39;33208:46;;32943:317;;;;;:::o;33266:662::-;33472:4;33510:3;33499:9;33495:19;33487:27;;33524:70;33591:1;33580:9;33576:17;33567:6;33524:70;:::i;:::-;33604:72;33672:2;33661:9;33657:18;33648:6;33604:72;:::i;:::-;33686;33754:2;33743:9;33739:18;33730:6;33686:72;:::i;:::-;33805:9;33799:4;33795:20;33790:2;33779:9;33775:18;33768:48;33833:88;33916:4;33907:6;33899;33833:88;:::i;:::-;33825:96;;33266:662;;;;;;;;:::o;33934:180::-;33982:77;33979:1;33972:88;34079:4;34076:1;34069:15;34103:4;34100:1;34093:15;34120:320;34164:6;34201:1;34195:4;34191:12;34181:22;;34248:1;34242:4;34238:12;34269:18;34259:81;;34325:4;34317:6;34313:17;34303:27;;34259:81;34387:2;34379:6;34376:14;34356:18;34353:38;34350:84;;34406:18;;:::i;:::-;34350:84;34171:269;34120:320;;;:::o;34446:172::-;34586:24;34582:1;34574:6;34570:14;34563:48;34446:172;:::o;34624:366::-;34766:3;34787:67;34851:2;34846:3;34787:67;:::i;:::-;34780:74;;34863:93;34952:3;34863:93;:::i;:::-;34981:2;34976:3;34972:12;34965:19;;34624:366;;;:::o;34996:419::-;35162:4;35200:2;35189:9;35185:18;35177:26;;35249:9;35243:4;35239:20;35235:1;35224:9;35220:17;35213:47;35277:131;35403:4;35277:131;:::i;:::-;35269:139;;34996:419;;;:::o;35421:218::-;35512:4;35550:2;35539:9;35535:18;35527:26;;35563:69;35629:1;35618:9;35614:17;35605:6;35563:69;:::i;:::-;35421:218;;;;:::o;35645:430::-;35788:4;35826:2;35815:9;35811:18;35803:26;;35839:71;35907:1;35896:9;35892:17;35883:6;35839:71;:::i;:::-;35920:72;35988:2;35977:9;35973:18;35964:6;35920:72;:::i;:::-;36002:66;36064:2;36053:9;36049:18;36040:6;36002:66;:::i;:::-;35645:430;;;;;;:::o;36081:233::-;36221:34;36217:1;36209:6;36205:14;36198:58;36290:16;36285:2;36277:6;36273:15;36266:41;36081:233;:::o;36320:366::-;36462:3;36483:67;36547:2;36542:3;36483:67;:::i;:::-;36476:74;;36559:93;36648:3;36559:93;:::i;:::-;36677:2;36672:3;36668:12;36661:19;;36320:366;;;:::o;36692:419::-;36858:4;36896:2;36885:9;36881:18;36873:26;;36945:9;36939:4;36935:20;36931:1;36920:9;36916:17;36909:47;36973:131;37099:4;36973:131;:::i;:::-;36965:139;;36692:419;;;:::o;37117:85::-;37162:7;37191:5;37180:16;;37117:85;;;:::o;37208:86::-;37243:7;37283:4;37276:5;37272:16;37261:27;;37208:86;;;:::o;37300:154::-;37356:9;37389:59;37405:42;37414:32;37440:5;37414:32;:::i;:::-;37405:42;:::i;:::-;37389:59;:::i;:::-;37376:72;;37300:154;;;:::o;37460:143::-;37553:43;37590:5;37553:43;:::i;:::-;37548:3;37541:56;37460:143;;:::o;37609:234::-;37708:4;37746:2;37735:9;37731:18;37723:26;;37759:77;37833:1;37822:9;37818:17;37809:6;37759:77;:::i;:::-;37609:234;;;;:::o;37849:96::-;37907:6;37935:3;37925:13;;37849:96;;;;:::o;37951:140::-;37999:4;38022:3;38014:11;;38045:3;38042:1;38035:14;38079:4;38076:1;38066:18;38058:26;;37951:140;;;:::o;38097:93::-;38134:6;38181:2;38176;38169:5;38165:14;38161:23;38151:33;;38097:93;;;:::o;38196:107::-;38240:8;38290:5;38284:4;38280:16;38259:37;;38196:107;;;;:::o;38309:393::-;38378:6;38428:1;38416:10;38412:18;38451:97;38481:66;38470:9;38451:97;:::i;:::-;38569:39;38599:8;38588:9;38569:39;:::i;:::-;38557:51;;38641:4;38637:9;38630:5;38626:21;38617:30;;38690:4;38680:8;38676:19;38669:5;38666:30;38656:40;;38385:317;;38309:393;;;;;:::o;38708:142::-;38758:9;38791:53;38809:34;38818:24;38836:5;38818:24;:::i;:::-;38809:34;:::i;:::-;38791:53;:::i;:::-;38778:66;;38708:142;;;:::o;38856:75::-;38899:3;38920:5;38913:12;;38856:75;;;:::o;38937:269::-;39047:39;39078:7;39047:39;:::i;:::-;39108:91;39157:41;39181:16;39157:41;:::i;:::-;39149:6;39142:4;39136:11;39108:91;:::i;:::-;39102:4;39095:105;39013:193;38937:269;;;:::o;39212:73::-;39257:3;39212:73;:::o;39291:189::-;39368:32;;:::i;:::-;39409:65;39467:6;39459;39453:4;39409:65;:::i;:::-;39344:136;39291:189;;:::o;39486:186::-;39546:120;39563:3;39556:5;39553:14;39546:120;;;39617:39;39654:1;39647:5;39617:39;:::i;:::-;39590:1;39583:5;39579:13;39570:22;;39546:120;;;39486:186;;:::o;39678:541::-;39778:2;39773:3;39770:11;39767:445;;;39812:37;39843:5;39812:37;:::i;:::-;39895:29;39913:10;39895:29;:::i;:::-;39885:8;39881:44;40078:2;40066:10;40063:18;40060:49;;;40099:8;40084:23;;40060:49;40122:80;40178:22;40196:3;40178:22;:::i;:::-;40168:8;40164:37;40151:11;40122:80;:::i;:::-;39782:430;;39767:445;39678:541;;;:::o;40225:117::-;40279:8;40329:5;40323:4;40319:16;40298:37;;40225:117;;;;:::o;40348:169::-;40392:6;40425:51;40473:1;40469:6;40461:5;40458:1;40454:13;40425:51;:::i;:::-;40421:56;40506:4;40500;40496:15;40486:25;;40399:118;40348:169;;;;:::o;40522:295::-;40598:4;40744:29;40769:3;40763:4;40744:29;:::i;:::-;40736:37;;40806:3;40803:1;40799:11;40793:4;40790:21;40782:29;;40522:295;;;;:::o;40822:1398::-;40944:43;40983:3;40978;40944:43;:::i;:::-;41052:18;41044:6;41041:30;41038:56;;;41074:18;;:::i;:::-;41038:56;41118:38;41150:4;41144:11;41118:38;:::i;:::-;41203:66;41262:6;41254;41248:4;41203:66;:::i;:::-;41296:1;41325:2;41317:6;41314:14;41342:1;41337:631;;;;42012:1;42029:6;42026:84;;;42085:9;42080:3;42076:19;42063:33;42054:42;;42026:84;42136:67;42196:6;42189:5;42136:67;:::i;:::-;42130:4;42123:81;41985:229;41307:907;;41337:631;41389:4;41385:9;41377:6;41373:22;41423:36;41454:4;41423:36;:::i;:::-;41481:1;41495:215;41509:7;41506:1;41503:14;41495:215;;;41595:9;41590:3;41586:19;41573:33;41565:6;41558:49;41646:1;41638:6;41634:14;41624:24;;41693:2;41682:9;41678:18;41665:31;;41532:4;41529:1;41525:12;41520:17;;41495:215;;;41738:6;41729:7;41726:19;41723:186;;;41803:9;41798:3;41794:19;41781:33;41846:48;41888:4;41880:6;41876:17;41865:9;41846:48;:::i;:::-;41838:6;41831:64;41746:163;41723:186;41955:1;41951;41943:6;41939:14;41935:22;41929:4;41922:36;41344:624;;;41307:907;;40919:1301;;;40822:1398;;;:::o;42248:314::-;42344:3;42365:70;42428:6;42423:3;42365:70;:::i;:::-;42358:77;;42445:56;42494:6;42489:3;42482:5;42445:56;:::i;:::-;42526:29;42548:6;42526:29;:::i;:::-;42521:3;42517:39;42510:46;;42248:314;;;;;:::o;42568:329::-;42689:4;42727:2;42716:9;42712:18;42704:26;;42776:9;42770:4;42766:20;42762:1;42751:9;42747:17;42740:47;42804:86;42885:4;42876:6;42868;42804:86;:::i;:::-;42796:94;;42568:329;;;;;:::o;42903:225::-;43043:34;43039:1;43031:6;43027:14;43020:58;43112:8;43107:2;43099:6;43095:15;43088:33;42903:225;:::o;43134:366::-;43276:3;43297:67;43361:2;43356:3;43297:67;:::i;:::-;43290:74;;43373:93;43462:3;43373:93;:::i;:::-;43491:2;43486:3;43482:12;43475:19;;43134:366;;;:::o;43506:419::-;43672:4;43710:2;43699:9;43695:18;43687:26;;43759:9;43753:4;43749:20;43745:1;43734:9;43730:17;43723:47;43787:131;43913:4;43787:131;:::i;:::-;43779:139;;43506:419;;;:::o;43931:194::-;43971:4;43991:20;44009:1;43991:20;:::i;:::-;43986:25;;44025:20;44043:1;44025:20;:::i;:::-;44020:25;;44069:1;44066;44062:9;44054:17;;44093:1;44087:4;44084:11;44081:37;;;44098:18;;:::i;:::-;44081:37;43931:194;;;;:::o;44131:191::-;44171:3;44190:20;44208:1;44190:20;:::i;:::-;44185:25;;44224:20;44242:1;44224:20;:::i;:::-;44219:25;;44267:1;44264;44260:9;44253:16;;44288:3;44285:1;44282:10;44279:36;;;44295:18;;:::i;:::-;44279:36;44131:191;;;;:::o;44328:167::-;44468:19;44464:1;44456:6;44452:14;44445:43;44328:167;:::o;44501:366::-;44643:3;44664:67;44728:2;44723:3;44664:67;:::i;:::-;44657:74;;44740:93;44829:3;44740:93;:::i;:::-;44858:2;44853:3;44849:12;44842:19;;44501:366;;;:::o;44873:419::-;45039:4;45077:2;45066:9;45062:18;45054:26;;45126:9;45120:4;45116:20;45112:1;45101:9;45097:17;45090:47;45154:131;45280:4;45154:131;:::i;:::-;45146:139;;44873:419;;;:::o;45298:162::-;45438:14;45434:1;45426:6;45422:14;45415:38;45298:162;:::o;45466:366::-;45608:3;45629:67;45693:2;45688:3;45629:67;:::i;:::-;45622:74;;45705:93;45794:3;45705:93;:::i;:::-;45823:2;45818:3;45814:12;45807:19;;45466:366;;;:::o;45838:419::-;46004:4;46042:2;46031:9;46027:18;46019:26;;46091:9;46085:4;46081:20;46077:1;46066:9;46062:17;46055:47;46119:131;46245:4;46119:131;:::i;:::-;46111:139;;45838:419;;;:::o;46263:166::-;46403:18;46399:1;46391:6;46387:14;46380:42;46263:166;:::o;46435:366::-;46577:3;46598:67;46662:2;46657:3;46598:67;:::i;:::-;46591:74;;46674:93;46763:3;46674:93;:::i;:::-;46792:2;46787:3;46783:12;46776:19;;46435:366;;;:::o;46807:419::-;46973:4;47011:2;47000:9;46996:18;46988:26;;47060:9;47054:4;47050:20;47046:1;47035:9;47031:17;47024:47;47088:131;47214:4;47088:131;:::i;:::-;47080:139;;46807:419;;;:::o;47232:172::-;47372:24;47368:1;47360:6;47356:14;47349:48;47232:172;:::o;47410:366::-;47552:3;47573:67;47637:2;47632:3;47573:67;:::i;:::-;47566:74;;47649:93;47738:3;47649:93;:::i;:::-;47767:2;47762:3;47758:12;47751:19;;47410:366;;;:::o;47782:419::-;47948:4;47986:2;47975:9;47971:18;47963:26;;48035:9;48029:4;48025:20;48021:1;48010:9;48006:17;47999:47;48063:131;48189:4;48063:131;:::i;:::-;48055:139;;47782:419;;;:::o;48207:182::-;48347:34;48343:1;48335:6;48331:14;48324:58;48207:182;:::o;48395:366::-;48537:3;48558:67;48622:2;48617:3;48558:67;:::i;:::-;48551:74;;48634:93;48723:3;48634:93;:::i;:::-;48752:2;48747:3;48743:12;48736:19;;48395:366;;;:::o;48767:419::-;48933:4;48971:2;48960:9;48956:18;48948:26;;49020:9;49014:4;49010:20;49006:1;48995:9;48991:17;48984:47;49048:131;49174:4;49048:131;:::i;:::-;49040:139;;48767:419;;;:::o;49192:230::-;49332:34;49328:1;49320:6;49316:14;49309:58;49401:13;49396:2;49388:6;49384:15;49377:38;49192:230;:::o;49428:366::-;49570:3;49591:67;49655:2;49650:3;49591:67;:::i;:::-;49584:74;;49667:93;49756:3;49667:93;:::i;:::-;49785:2;49780:3;49776:12;49769:19;;49428:366;;;:::o;49800:419::-;49966:4;50004:2;49993:9;49989:18;49981:26;;50053:9;50047:4;50043:20;50039:1;50028:9;50024:17;50017:47;50081:131;50207:4;50081:131;:::i;:::-;50073:139;;49800:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"3183000","executionCost":"infinite","totalCost":"infinite"},"external":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"infinite","getAggregator()":"infinite","getAggregatorAddress()":"2632","getFeeDetails()":"4782","getOrderInfo(bytes32)":"infinite","getSupportedInstitutionName(bytes32)":"infinite","getSupportedInstitutions(bytes32)":"infinite","getWhitelistedStatus(address)":"2927","initialize(address)":"187287","isTokenSupported(address)":"2928","owner()":"2567","refund(bytes32,bytes32)":"infinite","renounceOwnership()":"30421","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"infinite","settingManagerBool(bytes32,address,bool)":"infinite","settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":"infinite","transferOwnership(address)":"30876","updateProtocolAddresses(bytes32,address)":"51646","updateProtocolAggregator(bytes)":"infinite","updateProtocolFees(uint64)":"infinite","withdraw(address,address,uint256)":"infinite"},"internal":{"_calculateFees(bytes32,uint96,bool)":"infinite","_handler(address,uint256,address,address,bytes32)":"infinite","transferSenderFee(bytes32)":"infinite"}},"methodIdentifiers":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"2654ec7e","getAggregator()":"3ad59dbc","getAggregatorAddress()":"e8d6e0de","getFeeDetails()":"b810c636","getOrderInfo(bytes32)":"768c6ec0","getSupportedInstitutionName(bytes32)":"87490d86","getSupportedInstitutions(bytes32)":"02621338","getWhitelistedStatus(address)":"d8e8de34","initialize(address)":"c4d66de8","isTokenSupported(address)":"75151b63","owner()":"8da5cb5b","refund(bytes32,bytes32)":"e4683a79","renounceOwnership()":"715018a6","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"32200882","settingManagerBool(bytes32,address,bool)":"99e3c0b4","settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":"137764fb","transferOwnership(address)":"f2fde38b","updateProtocolAddresses(bytes32,address)":"79a0effb","updateProtocolAggregator(bytes)":"cb79455b","updateProtocolFees(uint64)":"84630736","withdraw(address,address,uint256)":"d9caed12"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"institutionCode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"protocolFee\",\"type\":\"uint64\"}],\"name\":\"PaycrestFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"Refunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"SetAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"SetFeeRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SettingManagerBool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"settlePercent\",\"type\":\"uint96\"}],\"name\":\"Settled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSenderFee\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_institutionCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"_rate\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"_senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_senderFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"createOrder\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"name\":\"getOrderInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"rate\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"isFulfilled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"currentBPS\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaycrest.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"getSupportedInstitutionName\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.InstitutionByCode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"}],\"name\":\"getSupportedInstitutions\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getWhitelistedStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_usdc\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"}],\"name\":\"refund\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"institutions\",\"type\":\"tuple[]\"}],\"name\":\"setSupportedInstitutions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"settingManagerBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_liquidityProvider\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_settlePercent\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isPartner\",\"type\":\"bool\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"updateProtocolAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"updateProtocolAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_protocolFeePercent\",\"type\":\"uint64\"}],\"name\":\"updateProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)\":{\"details\":\"Emitted when deposit is made.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Refunded(bytes32,bytes32)\":{\"details\":\"Emitted when aggregator refund transaction.\"},\"RewardValidator(address,uint256)\":{\"details\":\"Emitted when primary validator get therir rewards.\"},\"Settled(bytes32,bytes32,bytes32,address,uint96)\":{\"details\":\"Emitted when aggregator settle transaction.\"},\"TransferSenderFee(address,uint256)\":{\"details\":\"Emitted when sender get therir rewards.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"details\":\"See {createOrder-IPaycrest}. \"},\"getAggregator()\":{\"details\":\"See {getAggregator-IPaycrest}. \"},\"getAggregatorAddress()\":{\"details\":\"See {getAggregatorAddress-IPaycrest}. \"},\"getFeeDetails()\":{\"details\":\"See {getFeeDetails-IPaycrest}. \"},\"getOrderInfo(bytes32)\":{\"details\":\"See {getOrderInfo-IPaycrest}. \"},\"getSupportedInstitutionName(bytes32)\":{\"details\":\"See {getSupportedInstitutionName-IPaycrest}. \"},\"getWhitelistedStatus(address)\":{\"details\":\"See {getWhitelistedStatus-IPaycrest}. \"},\"isTokenSupported(address)\":{\"details\":\"See {isTokenSupported-IPaycrest}. \"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"refund(bytes32,bytes32)\":{\"details\":\"See {refund-IPaycrest}. \"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)\":{\"details\":\"See {settle-IPaycrest}. \"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Paycrest.sol\":\"Paycrest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n /**\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n /**\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n */\\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n /**\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n }\\n\\n /**\\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n }\\n }\\n\\n /**\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\n */\\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n _callOptionalReturn(token, approvalCall);\\n }\\n }\\n\\n /**\\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n * Revert on invalid signature.\\n */\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n *\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n */\\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n // and not revert is the subcall reverts.\\n\\n (bool success, bytes memory returndata) = address(token).call(data);\\n return\\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n mstore(0x1c, hash)\\n message := keccak256(0x00, 0x3c)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n mstore(add(ptr, 0x02), domainSeparator)\\n mstore(add(ptr, 0x22), structHash)\\n data := keccak256(ptr, 0x42)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n * `validator` and `data` according to the version 0 of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n }\\n}\\n\",\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/Paycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport {PaycrestSettingManager} from \\\"./PaycrestSettingManager.sol\\\";\\nimport {IPaycrest, IERC20} from \\\"./interface/IPaycrest.sol\\\";\\ncontract Paycrest is IPaycrest, PaycrestSettingManager { \\n using SafeERC20Upgradeable for IERC20;\\n using ECDSAUpgradeable for bytes32;\\n struct fee {\\n uint256 protocolFee;\\n uint256 liquidityProviderAmount;\\n }\\n mapping(bytes32 => Order) private order;\\n mapping(address => uint256) private _nonce;\\n uint256[50] private __gap;\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n function initialize(address _usdc) external initializer { \\n _isTokenSupported[_usdc] = true; \\n MAX_BPS = 100_000; \\n protocolFeePercent = 5000; // 5%\\n __Ownable_init();\\n }\\n\\n modifier onlyAggregator {\\n require(msg.sender == _aggregatorAddress, \\\"OnlyAggregator\\\");\\n _;\\n }\\n \\n /* ##################################################################\\n USER CALLS\\n ################################################################## */\\n /** @dev See {createOrder-IPaycrest}. */\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash\\n ) external returns(bytes32 orderId) {\\n // checks that are required\\n _handler(_token, _amount, _refundAddress, _senderFeeRecipient, _institutionCode);\\n // require that sender fee is less than protocol fee\\n require(_senderFee <= (_amount * protocolFeePercent) / MAX_BPS, \\\"SenderFeeTooHigh\\\");\\n // first transfer token from msg.sender\\n IERC20(_token).transferFrom(msg.sender, address(this), _amount);\\n // increase users nonce to avoid replay attacks\\n _nonce[msg.sender] ++;\\n // @chibie @5ran6\\n // @todo sender fee should have limit, let say the maximum amount of sender fee should be 1% of the amount\\n // generate transaction id for the transaction\\n orderId = keccak256(abi.encode(msg.sender, _nonce[msg.sender]));\\n // update transaction\\n order[orderId] = Order({\\n seller: msg.sender,\\n token: _token,\\n senderFeeRecipient: _senderFeeRecipient,\\n senderFee: _senderFee,\\n rate: _rate,\\n isFulfilled: false,\\n refundAddress: _refundAddress,\\n currentBPS: uint64(MAX_BPS),\\n amount: _amount\\n });\\n // emit deposit event\\n emit Deposit(_token, _amount, orderId, _rate, _institutionCode, _label, messageHash);\\n }\\n\\n function _handler(address _token, uint256 _amount, address _refundAddress, address _senderFeeRecipient, bytes32 _institutionCode) internal view {\\n // use require for all the custom errors\\n require(_isTokenSupported[_token], \\\"TokenNotSupported\\\");\\n require(_amount > 0, \\\"AmountIsZero\\\");\\n require(_refundAddress != address(0), \\\"ThrowZeroAddress\\\");\\n require(_senderFeeRecipient != address(0), \\\"ThrowZeroAddress\\\");\\n require(supportedInstitutionsByCode[_institutionCode].name != bytes32(0), \\\"InvalidInstitutionCode\\\");\\n }\\n\\n /* ##################################################################\\n AGGREGATOR FUNCTIONS\\n ################################################################## */\\n /** @dev See {settle-IPaycrest}. */\\n function settle(\\n bytes32 _splitOrderId,\\n bytes32 _orderId, \\n bytes32 _label,\\n address[] calldata _validators, \\n address _liquidityProvider, \\n uint64 _settlePercent,\\n bool _isPartner\\n ) external onlyAggregator() returns(bytes32, address) {\\n // ensure the transaction has not been fulfilled\\n require(!order[_orderId].isFulfilled, \\\"OrderFulfilled\\\");\\n // load the token into memory\\n address token = order[_orderId].token;\\n // substract sum of amount based on the input _settlePercent\\n order[_orderId].currentBPS -= _settlePercent;\\n // if transaction amount is zero\\n // load the fees and transfer associated protocol fees to protocol fee recipient\\n ( fee memory _feeParams ) = _calculateFees(_orderId, _settlePercent, _isPartner);\\n if(order[_orderId].currentBPS == 0) {\\n // update the transaction to be fulfilled\\n order[_orderId].isFulfilled = true;\\n if (order[_orderId].senderFee > 0) {\\n // transfer sender fee\\n transferSenderFee(_orderId);\\n }\\n }\\n \\n if (_feeParams.protocolFee > 0) {\\n // transfer protocol fee\\n IERC20(token).transfer(feeRecipient, _feeParams.protocolFee);\\n }\\n // // transfer to liquidity provider \\n IERC20(token).transfer(_liquidityProvider, _feeParams.liquidityProviderAmount);\\n\\n // emit event\\n emit Settled(_splitOrderId, _orderId, _label, _liquidityProvider, _settlePercent);\\n return (_orderId, token);\\n }\\n\\n function transferSenderFee(bytes32 _orderId) internal {\\n address recipient = order[_orderId].senderFeeRecipient;\\n uint256 _fee = order[_orderId].senderFee;\\n // transfer sender fee\\n IERC20(order[_orderId].token).transfer(recipient, _fee);\\n // emmit event\\n emit TransferSenderFee(recipient, _fee);\\n }\\n\\n /** @dev See {refund-IPaycrest}. */\\n function refund(bytes32 _orderId, bytes32 _label) external onlyAggregator() returns(bool) {\\n // ensure the transaction has not been fulfilled\\n require(!order[_orderId].isFulfilled, \\\"OrderFulfilled\\\");\\n // reser state values\\n order[_orderId].isFulfilled = true;\\n order[_orderId].currentBPS = 0;\\n // transfer to seller \\n IERC20(order[_orderId].token).transfer(order[_orderId].refundAddress, order[_orderId].amount);\\n // emit\\n emit Refunded(_orderId, _label);\\n return true;\\n }\\n\\n function _calculateFees(bytes32 _orderId, uint96 _settlePercent, bool _isPartner) private view returns(fee memory _feeParams ) {\\n // get the total amount associated with the orderId\\n uint256 amount = order[_orderId].amount;\\n // get sender fee from amount\\n amount = amount - order[_orderId].senderFee;\\n // get the settled percent that is scheduled for this amount\\n _feeParams.liquidityProviderAmount = (amount * _settlePercent) / MAX_BPS;\\n // deduct protocol fees from the new total amount\\n _feeParams.protocolFee = (_feeParams.liquidityProviderAmount * protocolFeePercent) / MAX_BPS; \\n // substract total fees from the new amount after getting the scheduled amount\\n _feeParams.liquidityProviderAmount = (_feeParams.liquidityProviderAmount - _feeParams.protocolFee);\\n // if (_isPartner) protocol fee should be 0, and the whole protocol fee should be added to liquidity provider\\n if (_isPartner) {\\n _feeParams.liquidityProviderAmount += _feeParams.protocolFee;\\n _feeParams.protocolFee = 0;\\n }\\n }\\n \\n /* ##################################################################\\n VIEW CALLS\\n ################################################################## */\\n /** @dev See {getOrderInfo-IPaycrest}. */\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory) {\\n return order[_orderId];\\n }\\n\\n /** @dev See {isTokenSupported-IPaycrest}. */\\n function isTokenSupported(address _token) external view returns(bool) {\\n return _isTokenSupported[_token];\\n }\\n\\n /** @dev See {getSupportedInstitutionName-IPaycrest}. */\\n function getSupportedInstitutionName(bytes32 code) external view returns (InstitutionByCode memory) {\\n return supportedInstitutionsByCode[code];\\n }\\n\\n function getSupportedInstitutions(bytes32 currency) external view returns (Institution[] memory) {\\n Institution[] memory institutions = supportedInstitutions[currency];\\n uint256 length = institutions.length;\\n Institution[] memory result = new Institution[](length);\\n \\n for (uint256 i = 0; i < length; ) {\\n result[i] = institutions[i];\\n unchecked {\\n i++;\\n }\\n }\\n \\n return result;\\n }\\n\\n /** @dev See {getFeeDetails-IPaycrest}. */\\n function getFeeDetails() external view returns(\\n uint64, \\n uint256\\n ) {\\n return(protocolFeePercent, MAX_BPS);\\n }\\n\\n /** @dev See {getAggregatorAddress-IPaycrest}. */\\n function getAggregatorAddress() external view returns(address) {\\n return _aggregatorAddress;\\n }\\n\\n /** @dev See {getWhitelistedStatus-IPaycrest}. */\\n function getWhitelistedStatus(address sender) external view returns(bool) {\\n return _isWhitelisted[sender];\\n }\\n\\n /** @dev See {getAggregator-IPaycrest}. */\\n function getAggregator() external view returns(bytes memory) {\\n return _aggregator;\\n }\\n\\n\\n // DECLARE A FUNCTION TO WITHDRAW ANY TOKEN FROM CONTRACT CAN ONLY NE CALLED BY OWNER\\n function withdraw(address _token, address _recipient, uint256 _amount) external onlyOwner {\\n IERC20(_token).transfer(_recipient, _amount);\\n }\\n\\n}\\n\",\"keccak256\":\"0xc1e0969044908481acc04b324fc755dd480cef392a7da363b7e1cc0257778035\",\"license\":\"UNLICENSED\"},\"contracts/PaycrestSettingManager.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\n\\ncontract PaycrestSettingManager is OwnableUpgradeable { \\n struct Institution {\\n bytes32 code; // usually not more than 8 letters\\n bytes32 name; // \\n }\\n struct InstitutionByCode {\\n bytes32 name;\\n bytes32 currency;\\n }\\n uint256 internal MAX_BPS;\\n uint64 internal protocolFeePercent; // 5%\\n address internal feeRecipient;\\n address internal _aggregatorAddress;\\n bytes internal _aggregator;\\n \\n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\\n uint256[50] private __gap;\\n\\n mapping(address => bool) internal _isTokenSupported;\\n mapping(address => bool) internal _isWhitelisted;\\n\\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\\n\\n event SettingManagerBool(bytes32 what, address value, bool status);\\n event PaycrestFees(uint64 protocolFee);\\n event SetAggregator(bytes aggregator);\\n event SetFeeRecipient(address feeRecipient);\\n \\n /* ##################################################################\\n OWNER FUNCTIONS\\n ################################################################## */\\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"token\\\") _isTokenSupported[value] = status;\\n if (what == \\\"whitelist\\\") _isWhitelisted[value] = status;\\n\\n emit SettingManagerBool(what, value, status);\\n }\\n\\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \\n uint256 length = institutions.length;\\n for (uint i = 0; i < length; ) {\\n supportedInstitutions[currency].push(institutions[i]);\\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\\n name: institutions[i].name, currency: currency\\n });\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function updateProtocolFees(uint64 _protocolFeePercent) external onlyOwner {\\n protocolFeePercent = _protocolFeePercent;\\n emit PaycrestFees(_protocolFeePercent);\\n }\\n\\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"fee\\\") feeRecipient = value;\\n if (what == \\\"aggregator\\\") _aggregatorAddress = value;\\n }\\n\\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\\n _aggregator = aggregator;\\n emit SetAggregator(aggregator);\\n }\\n\\n}\\n\",\"keccak256\":\"0xa7a73992f19899060ce30182c809c3bd02ce01e4675de7e0ddd1701deccb25f9\",\"license\":\"UNLICENSED\"},\"contracts/interface/IPaycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n/**\\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\\n * Factory and global config params\\n */\\ninterface IPaycrest {\\n \\n /* ##################################################################\\n EVENTS\\n ################################################################## */\\n /// @dev Emitted when deposit is made.\\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\\n /// @dev Emitted when aggregator settle transaction.\\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\\n /// @dev Emitted when aggregator refund transaction.\\n event Refunded(bytes32 indexed orderId, bytes32 label);\\n /// @dev Emitted when sender get therir rewards.\\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\\n /// @dev Emitted when primary validator get therir rewards.\\n event RewardValidator(address indexed validator, uint256 indexed amount);\\n\\n /* ##################################################################\\n STRUCTS\\n ################################################################## */\\n struct TransactionMetadata {\\n bytes8 identifier; // slot 0\\n bytes8 institution; // slot 0\\n bytes8 name; // slot 0\\n bytes8 currency; // slot 0\\n uint256 liquidityProviderID; // slot 1\\n }\\n\\n struct Order {\\n address seller; // slot 0\\n address token; // slot 1\\n address senderFeeRecipient;\\n uint256 senderFee;\\n uint96 rate; // slot 1\\n bool isFulfilled; // slot 2 {11 bytes available}\\n address refundAddress; // slot 2 {12 bytes available}\\n uint96 currentBPS; // slot 2 {}\\n uint256 amount; // slot 3\\n }\\n\\n\\n /* ##################################################################\\n EXTERNAL CALLS\\n ################################################################## */\\n /// @notice lock sender `_amount` of `token` into Paycrest.\\n /// Requirements:\\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _token address of the token.\\n /// @param _amount amount in the decimal of `_token` above.\\n /// @param _institutionCode institution code of the sender.\\n /// @param _label reference of the sender.\\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\\n /// @return _orderId the bytes20 which is the orderId\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash) external returns(bytes32 _orderId);\\n\\n /// @notice settle transaction and distribute rewards accordingly.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @param _validators arrays of secondary validators.\\n /// @param _liquidityProvider address of the liquidity provider.\\n /// @param _settlePercent rate at which the transaction is settled.\\n /// @param _isPartner is the liquidity provider a partner.\\n /// @return return the status of transaction {bool}\\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\\n\\n /// @notice refund to the specified refundable address.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `isFulfilled` must be false.\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @return return the status of transaction {bool}\\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\\n\\n /// @notice get supported token from Paycrest.\\n /// @param _token address of the token to check.\\n /// @return return the status of `_token` {bool}\\n function isTokenSupported(address _token) external view returns(bool);\\n\\n /// @notice get order details.\\n /// @param _orderId transaction Id.\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\\n\\n /// @notice get every rewards and address on Paycrest.\\n /// @return protocolReward amount that will be taken in percentage on all trade.\\n /// @return max_bps maximum amount in bps \\\"100% == 100_000\\\".\\n function getFeeDetails() external view returns(\\n uint64 protocolReward, \\n uint256 max_bps\\n );\\n\\n /// @notice get address of liquidity aggregator.\\n /// @return address of `Aggregator`.\\n function getAggregatorAddress() external view returns(address);\\n\\n /// @notice get aggregator public key.\\n /// @return aggregator public key.\\n function getAggregator() external view returns(bytes memory);\\n \\n /// @notice get address of sender whitelisting status.\\n /// @param sender address of the sender.\\n /// @return address of `status`.\\n function getWhitelistedStatus(address sender) external view returns(bool);\\n\\n}\\n\",\"keccak256\":\"0x00812f530758d6736a16754a83c21f42c344651238f845ada8b6d996c7d2c051\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"contracts/Paycrest.sol:Paycrest","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"contracts/Paycrest.sol:Paycrest","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"contracts/Paycrest.sol:Paycrest","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":3536,"contract":"contracts/Paycrest.sol:Paycrest","label":"MAX_BPS","offset":0,"slot":"101","type":"t_uint256"},{"astId":3538,"contract":"contracts/Paycrest.sol:Paycrest","label":"protocolFeePercent","offset":0,"slot":"102","type":"t_uint64"},{"astId":3540,"contract":"contracts/Paycrest.sol:Paycrest","label":"feeRecipient","offset":8,"slot":"102","type":"t_address"},{"astId":3542,"contract":"contracts/Paycrest.sol:Paycrest","label":"_aggregatorAddress","offset":0,"slot":"103","type":"t_address"},{"astId":3544,"contract":"contracts/Paycrest.sol:Paycrest","label":"_aggregator","offset":0,"slot":"104","type":"t_bytes_storage"},{"astId":3548,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"105","type":"t_array(t_uint256)50_storage"},{"astId":3552,"contract":"contracts/Paycrest.sol:Paycrest","label":"_isTokenSupported","offset":0,"slot":"155","type":"t_mapping(t_address,t_bool)"},{"astId":3556,"contract":"contracts/Paycrest.sol:Paycrest","label":"_isWhitelisted","offset":0,"slot":"156","type":"t_mapping(t_address,t_bool)"},{"astId":3562,"contract":"contracts/Paycrest.sol:Paycrest","label":"supportedInstitutions","offset":0,"slot":"157","type":"t_mapping(t_bytes32,t_array(t_struct(Institution)3529_storage)dyn_storage)"},{"astId":3567,"contract":"contracts/Paycrest.sol:Paycrest","label":"supportedInstitutionsByCode","offset":0,"slot":"158","type":"t_mapping(t_bytes32,t_struct(InstitutionByCode)3534_storage)"},{"astId":2836,"contract":"contracts/Paycrest.sol:Paycrest","label":"order","offset":0,"slot":"159","type":"t_mapping(t_bytes32,t_struct(Order)3844_storage)"},{"astId":2840,"contract":"contracts/Paycrest.sol:Paycrest","label":"_nonce","offset":0,"slot":"160","type":"t_mapping(t_address,t_uint256)"},{"astId":2844,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"161","type":"t_array(t_uint256)50_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Institution)3529_storage)dyn_storage":{"base":"t_struct(Institution)3529_storage","encoding":"dynamic_array","label":"struct PaycrestSettingManager.Institution[]","numberOfBytes":"32"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_array(t_struct(Institution)3529_storage)dyn_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])","numberOfBytes":"32","value":"t_array(t_struct(Institution)3529_storage)dyn_storage"},"t_mapping(t_bytes32,t_struct(InstitutionByCode)3534_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)","numberOfBytes":"32","value":"t_struct(InstitutionByCode)3534_storage"},"t_mapping(t_bytes32,t_struct(Order)3844_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct IPaycrest.Order)","numberOfBytes":"32","value":"t_struct(Order)3844_storage"},"t_struct(Institution)3529_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.Institution","members":[{"astId":3526,"contract":"contracts/Paycrest.sol:Paycrest","label":"code","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3528,"contract":"contracts/Paycrest.sol:Paycrest","label":"name","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(InstitutionByCode)3534_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.InstitutionByCode","members":[{"astId":3531,"contract":"contracts/Paycrest.sol:Paycrest","label":"name","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3533,"contract":"contracts/Paycrest.sol:Paycrest","label":"currency","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(Order)3844_storage":{"encoding":"inplace","label":"struct IPaycrest.Order","members":[{"astId":3827,"contract":"contracts/Paycrest.sol:Paycrest","label":"seller","offset":0,"slot":"0","type":"t_address"},{"astId":3829,"contract":"contracts/Paycrest.sol:Paycrest","label":"token","offset":0,"slot":"1","type":"t_address"},{"astId":3831,"contract":"contracts/Paycrest.sol:Paycrest","label":"senderFeeRecipient","offset":0,"slot":"2","type":"t_address"},{"astId":3833,"contract":"contracts/Paycrest.sol:Paycrest","label":"senderFee","offset":0,"slot":"3","type":"t_uint256"},{"astId":3835,"contract":"contracts/Paycrest.sol:Paycrest","label":"rate","offset":0,"slot":"4","type":"t_uint96"},{"astId":3837,"contract":"contracts/Paycrest.sol:Paycrest","label":"isFulfilled","offset":12,"slot":"4","type":"t_bool"},{"astId":3839,"contract":"contracts/Paycrest.sol:Paycrest","label":"refundAddress","offset":0,"slot":"5","type":"t_address"},{"astId":3841,"contract":"contracts/Paycrest.sol:Paycrest","label":"currentBPS","offset":20,"slot":"5","type":"t_uint96"},{"astId":3843,"contract":"contracts/Paycrest.sol:Paycrest","label":"amount","offset":0,"slot":"6","type":"t_uint256"}],"numberOfBytes":"224"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/PaycrestSettingManager.sol":{"PaycrestSettingManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"protocolFee","type":"uint64"}],"name":"PaycrestFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"SetAggregator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SettingManagerBool","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"institutions","type":"tuple[]"}],"name":"setSupportedInstitutions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"settingManagerBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"updateProtocolAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"updateProtocolAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_protocolFeePercent","type":"uint64"}],"name":"updateProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506112ec806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100eb57806399e3c0b414610109578063cb79455b14610125578063f2fde38b1461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b357806384630736146100cf575b600080fd5b6100a760048036038101906100a29190610a3a565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610af4565b610285565b005b6100e960048036038101906100e49190610b74565b6103d2565b005b6100f361043d565b6040516101009190610bb0565b60405180910390f35b610123600480360381019061011e9190610c03565b610467565b005b61013f600480360381019061013a9190610cb1565b61061c565b005b61015b60048036038101906101569190610cfe565b610673565b005b6101656106f6565b60008151905060005b8181101561026b57609d600085815260200190815260200160002083828151811061019c5761019b610d2b565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d2b565b5b602002602001015160200151815260200185815250609e600085848151811061022d5761022c610d2b565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b6102796106f6565b6102836000610774565b565b61028d6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610db7565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6103da6106f6565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a9816040516104329190610de6565b60405180910390a150565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61046f6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d590610db7565b60405180910390fd5b7f746f6b656e000000000000000000000000000000000000000000000000000000830361055d5780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105dc5780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161060f93929190610e1f565b60405180910390a1505050565b6106246106f6565b818160689182610635929190611077565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051610667929190611194565b60405180910390a15050565b61067b6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e19061122a565b60405180910390fd5b6106f381610774565b50565b6106fe61083a565b73ffffffffffffffffffffffffffffffffffffffff1661071c61043d565b73ffffffffffffffffffffffffffffffffffffffff1614610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611296565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61086981610856565b811461087457600080fd5b50565b60008135905061088681610860565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6108da82610891565b810181811067ffffffffffffffff821117156108f9576108f86108a2565b5b80604052505050565b600061090c610842565b905061091882826108d1565b919050565b600067ffffffffffffffff821115610938576109376108a2565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109695761096861094e565b5b6109736040610902565b9050600061098384828501610877565b600083015250602061099784828501610877565b60208301525092915050565b60006109b66109b18461091d565b610902565b905080838252602082019050604084028301858111156109d9576109d8610949565b5b835b81811015610a0257806109ee8882610953565b8452602084019350506040810190506109db565b5050509392505050565b600082601f830112610a2157610a2061088c565b5b8135610a318482602086016109a3565b91505092915050565b60008060408385031215610a5157610a5061084c565b5b6000610a5f85828601610877565b925050602083013567ffffffffffffffff811115610a8057610a7f610851565b5b610a8c85828601610a0c565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ac182610a96565b9050919050565b610ad181610ab6565b8114610adc57600080fd5b50565b600081359050610aee81610ac8565b92915050565b60008060408385031215610b0b57610b0a61084c565b5b6000610b1985828601610877565b9250506020610b2a85828601610adf565b9150509250929050565b600067ffffffffffffffff82169050919050565b610b5181610b34565b8114610b5c57600080fd5b50565b600081359050610b6e81610b48565b92915050565b600060208284031215610b8a57610b8961084c565b5b6000610b9884828501610b5f565b91505092915050565b610baa81610ab6565b82525050565b6000602082019050610bc56000830184610ba1565b92915050565b60008115159050919050565b610be081610bcb565b8114610beb57600080fd5b50565b600081359050610bfd81610bd7565b92915050565b600080600060608486031215610c1c57610c1b61084c565b5b6000610c2a86828701610877565b9350506020610c3b86828701610adf565b9250506040610c4c86828701610bee565b9150509250925092565b600080fd5b60008083601f840112610c7157610c7061088c565b5b8235905067ffffffffffffffff811115610c8e57610c8d610c56565b5b602083019150836001820283011115610caa57610ca9610949565b5b9250929050565b60008060208385031215610cc857610cc761084c565b5b600083013567ffffffffffffffff811115610ce657610ce5610851565b5b610cf285828601610c5b565b92509250509250929050565b600060208284031215610d1457610d1361084c565b5b6000610d2284828501610adf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610da1601683610d5a565b9150610dac82610d6b565b602082019050919050565b60006020820190508181036000830152610dd081610d94565b9050919050565b610de081610b34565b82525050565b6000602082019050610dfb6000830184610dd7565b92915050565b610e0a81610856565b82525050565b610e1981610bcb565b82525050565b6000606082019050610e346000830186610e01565b610e416020830185610ba1565b610e4e6040830184610e10565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ea857607f821691505b602082108103610ebb57610eba610e61565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610ee6565b610f2d8683610ee6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610f74610f6f610f6a84610f45565b610f4f565b610f45565b9050919050565b6000819050919050565b610f8e83610f59565b610fa2610f9a82610f7b565b848454610ef3565b825550505050565b600090565b610fb7610faa565b610fc2818484610f85565b505050565b5b81811015610fe657610fdb600082610faf565b600181019050610fc8565b5050565b601f82111561102b57610ffc81610ec1565b61100584610ed6565b81016020851015611014578190505b61102861102085610ed6565b830182610fc7565b50505b505050565b600082821c905092915050565b600061104e60001984600802611030565b1980831691505092915050565b6000611067838361103d565b9150826002028217905092915050565b6110818383610e56565b67ffffffffffffffff81111561109a576110996108a2565b5b6110a48254610e90565b6110af828285610fea565b6000601f8311600181146110de57600084156110cc578287013590505b6110d6858261105b565b86555061113e565b601f1984166110ec86610ec1565b60005b82811015611114578489013582556001820191506020850194506020810190506110ef565b86831015611131578489013561112d601f89168261103d565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111738385611147565b9350611180838584611158565b61118983610891565b840190509392505050565b600060208201905081810360008301526111af818486611167565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611214602683610d5a565b915061121f826111b8565b604082019050919050565b6000602082019050818103600083015261124381611207565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611280602083610d5a565b915061128b8261124a565b602082019050919050565b600060208201905081810360008301526112af81611273565b905091905056fea264697066735822122050b41f080926bf4f9f186583798e139b279542447fd028eba1d461cde298594564736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12EC DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x141 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x32200882 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x84630736 EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH2 0x3D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF3 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x100 SWAP2 SWAP1 PUSH2 0xBB0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x11E SWAP2 SWAP1 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x467 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13A SWAP2 SWAP1 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x61C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0xCFE JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x165 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x9D PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19C JUMPI PUSH2 0x19B PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x201 JUMPI PUSH2 0x200 PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9E PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x22D JUMPI PUSH2 0x22C PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x16E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x279 PUSH2 0x6F6 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x0 PUSH2 0x774 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x365 JUMPI DUP1 PUSH1 0x66 PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x3CE JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x6F6 JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC8CA786C100BC62A0DFFBE768B5F0B770D84E8604C5DE54B54197B9066BB42A9 DUP2 PUSH1 0x40 MLOAD PUSH2 0x432 SWAP2 SWAP1 PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x46F PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D5 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x55D JUMPI DUP1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x5DC JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x60F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x624 PUSH2 0x6F6 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x68 SWAP2 DUP3 PUSH2 0x635 SWAP3 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x667 SWAP3 SWAP2 SWAP1 PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x67B PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6E1 SWAP1 PUSH2 0x122A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6F3 DUP2 PUSH2 0x774 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6FE PUSH2 0x83A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x71C PUSH2 0x43D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x772 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x769 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x869 DUP2 PUSH2 0x856 JUMP JUMPDEST DUP2 EQ PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x886 DUP2 PUSH2 0x860 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x8DA DUP3 PUSH2 0x891 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x8F9 JUMPI PUSH2 0x8F8 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90C PUSH2 0x842 JUMP JUMPDEST SWAP1 POP PUSH2 0x918 DUP3 DUP3 PUSH2 0x8D1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x938 JUMPI PUSH2 0x937 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x969 JUMPI PUSH2 0x968 PUSH2 0x94E JUMP JUMPDEST JUMPDEST PUSH2 0x973 PUSH1 0x40 PUSH2 0x902 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x983 DUP5 DUP3 DUP6 ADD PUSH2 0x877 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x997 DUP5 DUP3 DUP6 ADD PUSH2 0x877 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B6 PUSH2 0x9B1 DUP5 PUSH2 0x91D JUMP JUMPDEST PUSH2 0x902 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x9D9 JUMPI PUSH2 0x9D8 PUSH2 0x949 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA02 JUMPI DUP1 PUSH2 0x9EE DUP9 DUP3 PUSH2 0x953 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x9DB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA21 JUMPI PUSH2 0xA20 PUSH2 0x88C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA31 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA51 JUMPI PUSH2 0xA50 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA5F DUP6 DUP3 DUP7 ADD PUSH2 0x877 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA80 JUMPI PUSH2 0xA7F PUSH2 0x851 JUMP JUMPDEST JUMPDEST PUSH2 0xA8C DUP6 DUP3 DUP7 ADD PUSH2 0xA0C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC1 DUP3 PUSH2 0xA96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAD1 DUP2 PUSH2 0xAB6 JUMP JUMPDEST DUP2 EQ PUSH2 0xADC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xAEE DUP2 PUSH2 0xAC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB0B JUMPI PUSH2 0xB0A PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB19 DUP6 DUP3 DUP7 ADD PUSH2 0x877 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB2A DUP6 DUP3 DUP7 ADD PUSH2 0xADF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB51 DUP2 PUSH2 0xB34 JUMP JUMPDEST DUP2 EQ PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB6E DUP2 PUSH2 0xB48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB8A JUMPI PUSH2 0xB89 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB98 DUP5 DUP3 DUP6 ADD PUSH2 0xB5F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBAA DUP2 PUSH2 0xAB6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBC5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBA1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBE0 DUP2 PUSH2 0xBCB JUMP JUMPDEST DUP2 EQ PUSH2 0xBEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBFD DUP2 PUSH2 0xBD7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC1C JUMPI PUSH2 0xC1B PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC2A DUP7 DUP3 DUP8 ADD PUSH2 0x877 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC3B DUP7 DUP3 DUP8 ADD PUSH2 0xADF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xC4C DUP7 DUP3 DUP8 ADD PUSH2 0xBEE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC71 JUMPI PUSH2 0xC70 PUSH2 0x88C JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC8E JUMPI PUSH2 0xC8D PUSH2 0xC56 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xCAA JUMPI PUSH2 0xCA9 PUSH2 0x949 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCC8 JUMPI PUSH2 0xCC7 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCE6 JUMPI PUSH2 0xCE5 PUSH2 0x851 JUMP JUMPDEST JUMPDEST PUSH2 0xCF2 DUP6 DUP3 DUP7 ADD PUSH2 0xC5B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD14 JUMPI PUSH2 0xD13 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD22 DUP5 DUP3 DUP6 ADD PUSH2 0xADF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA1 PUSH1 0x16 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0xDAC DUP3 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xDD0 DUP2 PUSH2 0xD94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDE0 DUP2 PUSH2 0xB34 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDFB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDD7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE0A DUP2 PUSH2 0x856 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE19 DUP2 PUSH2 0xBCB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xE34 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0xE41 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0xE4E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE10 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEA8 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEBB JUMPI PUSH2 0xEBA PUSH2 0xE61 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF23 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0xF2D DUP7 DUP4 PUSH2 0xEE6 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF74 PUSH2 0xF6F PUSH2 0xF6A DUP5 PUSH2 0xF45 JUMP JUMPDEST PUSH2 0xF4F JUMP JUMPDEST PUSH2 0xF45 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF8E DUP4 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0xFA2 PUSH2 0xF9A DUP3 PUSH2 0xF7B JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xEF3 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFB7 PUSH2 0xFAA JUMP JUMPDEST PUSH2 0xFC2 DUP2 DUP5 DUP5 PUSH2 0xF85 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFE6 JUMPI PUSH2 0xFDB PUSH1 0x0 DUP3 PUSH2 0xFAF JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xFC8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x102B JUMPI PUSH2 0xFFC DUP2 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x1005 DUP5 PUSH2 0xED6 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1014 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1028 PUSH2 0x1020 DUP6 PUSH2 0xED6 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0xFC7 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x104E PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1030 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1067 DUP4 DUP4 PUSH2 0x103D JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1081 DUP4 DUP4 PUSH2 0xE56 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109A JUMPI PUSH2 0x1099 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST PUSH2 0x10A4 DUP3 SLOAD PUSH2 0xE90 JUMP JUMPDEST PUSH2 0x10AF DUP3 DUP3 DUP6 PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x10DE JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x10CC JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x10D6 DUP6 DUP3 PUSH2 0x105B JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x113E JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x10EC DUP7 PUSH2 0xEC1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1114 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10EF JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x1131 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x112D PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x103D JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1173 DUP4 DUP6 PUSH2 0x1147 JUMP JUMPDEST SWAP4 POP PUSH2 0x1180 DUP4 DUP6 DUP5 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1189 DUP4 PUSH2 0x891 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11AF DUP2 DUP5 DUP7 PUSH2 0x1167 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1214 PUSH1 0x26 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0x121F DUP3 PUSH2 0x11B8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1243 DUP2 PUSH2 0x1207 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1280 PUSH1 0x20 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0x128B DUP3 PUSH2 0x124A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x12AF DUP2 PUSH2 0x1273 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0xB4 0x1F ADDMOD MULMOD 0x26 0xBF 0x4F SWAP16 XOR PUSH6 0x83798E139B27 SWAP6 TIMESTAMP PREVRANDAO PUSH32 0xD028EBA1D461CDE298594564736F6C6343000812003300000000000000000000 ","sourceMap":"139:2737:13:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkOwner_68":{"entryPoint":1782,"id":68,"parameterSlots":0,"returnSlots":0},"@_msgSender_1147":{"entryPoint":2106,"id":1147,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_125":{"entryPoint":1908,"id":125,"parameterSlots":1,"returnSlots":0},"@owner_54":{"entryPoint":1085,"id":54,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_82":{"entryPoint":625,"id":82,"parameterSlots":0,"returnSlots":0},"@setSupportedInstitutions_3689":{"entryPoint":349,"id":3689,"parameterSlots":2,"returnSlots":0},"@settingManagerBool_3635":{"entryPoint":1127,"id":3635,"parameterSlots":3,"returnSlots":0},"@transferOwnership_105":{"entryPoint":1651,"id":105,"parameterSlots":1,"returnSlots":0},"@updateProtocolAddresses_3741":{"entryPoint":645,"id":3741,"parameterSlots":2,"returnSlots":0},"@updateProtocolAggregator_3757":{"entryPoint":1564,"id":3757,"parameterSlots":2,"returnSlots":0},"@updateProtocolFees_3705":{"entryPoint":978,"id":3705,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":2467,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2783,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":2572,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":3054,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":2167,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":3163,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_struct$_Institution_$3529_memory_ptr":{"entryPoint":2387,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint64":{"entryPoint":2911,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3326,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":2804,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_addresst_bool":{"entryPoint":3075,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":2618,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":3249,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint64":{"entryPoint":2932,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":2977,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":3600,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":3585,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":4455,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":4615,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack":{"entryPoint":3476,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":4723,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint64_to_t_uint64_fromStack":{"entryPoint":3543,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":2992,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed":{"entryPoint":3615,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4500,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4650,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3511,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4758,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":3558,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":2306,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":2114,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr":{"entryPoint":2333,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_bytes_storage":{"entryPoint":3777,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_calldata_ptr":{"entryPoint":3670,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":4423,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":3418,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_bytes_storage":{"entryPoint":4074,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":2742,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":3019,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":2134,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2710,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":3909,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint64":{"entryPoint":2868,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":4039,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_uint256_to_t_uint256":{"entryPoint":3929,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage":{"entryPoint":4215,"id":null,"parameterSlots":3,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":4440,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":3798,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":3728,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":4187,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":2257,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":3919,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":4157,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x22":{"entryPoint":3681,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3371,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2210,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":3963,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":3158,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2188,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":2382,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2377,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":2129,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2124,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2193,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":3814,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":4144,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":4015,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":4536,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4":{"entryPoint":3435,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":4682,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":3827,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":3973,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2760,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":3031,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":2144,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint64":{"entryPoint":2888,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":4010,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:19957:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"379:32:15","statements":[{"nodeType":"YulAssignment","src":"389:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:15"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:15","type":""}],"src":"334:77:15"},{"body":{"nodeType":"YulBlock","src":"460:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:15"},"nodeType":"YulFunctionCall","src":"519:12:15"},"nodeType":"YulExpressionStatement","src":"519:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"490:17:15"},"nodeType":"YulFunctionCall","src":"490:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:15"},"nodeType":"YulFunctionCall","src":"480:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:15"},"nodeType":"YulFunctionCall","src":"473:43:15"},"nodeType":"YulIf","src":"470:63:15"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:15","type":""}],"src":"417:122:15"},{"body":{"nodeType":"YulBlock","src":"597:87:15","statements":[{"nodeType":"YulAssignment","src":"607:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:15"},"nodeType":"YulFunctionCall","src":"616:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:15"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"645:26:15"},"nodeType":"YulFunctionCall","src":"645:33:15"},"nodeType":"YulExpressionStatement","src":"645:33:15"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:15","type":""}],"src":"545:139:15"},{"body":{"nodeType":"YulBlock","src":"779:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"796:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"799:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"789:6:15"},"nodeType":"YulFunctionCall","src":"789:12:15"},"nodeType":"YulExpressionStatement","src":"789:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"690:117:15"},{"body":{"nodeType":"YulBlock","src":"861:54:15","statements":[{"nodeType":"YulAssignment","src":"871:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"889:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"896:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"885:3:15"},"nodeType":"YulFunctionCall","src":"885:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"905:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"901:3:15"},"nodeType":"YulFunctionCall","src":"901:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"881:3:15"},"nodeType":"YulFunctionCall","src":"881:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"871:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"844:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"854:6:15","type":""}],"src":"813:102:15"},{"body":{"nodeType":"YulBlock","src":"949:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"966:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"969:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"959:6:15"},"nodeType":"YulFunctionCall","src":"959:88:15"},"nodeType":"YulExpressionStatement","src":"959:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1063:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1066:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1056:6:15"},"nodeType":"YulFunctionCall","src":"1056:15:15"},"nodeType":"YulExpressionStatement","src":"1056:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1087:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1090:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1080:6:15"},"nodeType":"YulFunctionCall","src":"1080:15:15"},"nodeType":"YulExpressionStatement","src":"1080:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"921:180:15"},{"body":{"nodeType":"YulBlock","src":"1150:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1160:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1182:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1212:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1190:21:15"},"nodeType":"YulFunctionCall","src":"1190:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1178:3:15"},"nodeType":"YulFunctionCall","src":"1178:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1164:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1329:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1331:16:15"},"nodeType":"YulFunctionCall","src":"1331:18:15"},"nodeType":"YulExpressionStatement","src":"1331:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1272:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"1284:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1269:2:15"},"nodeType":"YulFunctionCall","src":"1269:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1308:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1320:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1305:2:15"},"nodeType":"YulFunctionCall","src":"1305:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1266:2:15"},"nodeType":"YulFunctionCall","src":"1266:62:15"},"nodeType":"YulIf","src":"1263:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1367:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1371:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1360:6:15"},"nodeType":"YulFunctionCall","src":"1360:22:15"},"nodeType":"YulExpressionStatement","src":"1360:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1136:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"1144:4:15","type":""}],"src":"1107:281:15"},{"body":{"nodeType":"YulBlock","src":"1435:88:15","statements":[{"nodeType":"YulAssignment","src":"1445:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1455:18:15"},"nodeType":"YulFunctionCall","src":"1455:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1445:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1504:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"1512:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1484:19:15"},"nodeType":"YulFunctionCall","src":"1484:33:15"},"nodeType":"YulExpressionStatement","src":"1484:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1419:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1428:6:15","type":""}],"src":"1394:129:15"},{"body":{"nodeType":"YulBlock","src":"1640:229:15","statements":[{"body":{"nodeType":"YulBlock","src":"1745:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1747:16:15"},"nodeType":"YulFunctionCall","src":"1747:18:15"},"nodeType":"YulExpressionStatement","src":"1747:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1717:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1725:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1714:2:15"},"nodeType":"YulFunctionCall","src":"1714:30:15"},"nodeType":"YulIf","src":"1711:56:15"},{"nodeType":"YulAssignment","src":"1777:25:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1789:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1797:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1785:3:15"},"nodeType":"YulFunctionCall","src":"1785:17:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1777:4:15"}]},{"nodeType":"YulAssignment","src":"1839:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1851:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"1857:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1847:3:15"},"nodeType":"YulFunctionCall","src":"1847:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1839:4:15"}]}]},"name":"array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1624:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1635:4:15","type":""}],"src":"1529:340:15"},{"body":{"nodeType":"YulBlock","src":"1964:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1981:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1984:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1974:6:15"},"nodeType":"YulFunctionCall","src":"1974:12:15"},"nodeType":"YulExpressionStatement","src":"1974:12:15"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"1875:117:15"},{"body":{"nodeType":"YulBlock","src":"2087:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2104:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2107:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2097:6:15"},"nodeType":"YulFunctionCall","src":"2097:12:15"},"nodeType":"YulExpressionStatement","src":"2097:12:15"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"1998:117:15"},{"body":{"nodeType":"YulBlock","src":"2210:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2227:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2230:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2220:6:15"},"nodeType":"YulFunctionCall","src":"2220:12:15"},"nodeType":"YulExpressionStatement","src":"2220:12:15"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"2121:117:15"},{"body":{"nodeType":"YulBlock","src":"2377:494:15","statements":[{"body":{"nodeType":"YulBlock","src":"2421:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"2423:77:15"},"nodeType":"YulFunctionCall","src":"2423:79:15"},"nodeType":"YulExpressionStatement","src":"2423:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"2398:3:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"2403:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2394:3:15"},"nodeType":"YulFunctionCall","src":"2394:19:15"},{"kind":"number","nodeType":"YulLiteral","src":"2415:4:15","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2390:3:15"},"nodeType":"YulFunctionCall","src":"2390:30:15"},"nodeType":"YulIf","src":"2387:117:15"},{"nodeType":"YulAssignment","src":"2513:30:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2538:4:15","type":"","value":"0x40"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2522:15:15"},"nodeType":"YulFunctionCall","src":"2522:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2513:5:15"}]},{"nodeType":"YulBlock","src":"2553:150:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2588:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"2602:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2592:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2628:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2635:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2624:3:15"},"nodeType":"YulFunctionCall","src":"2624:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2667:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"2678:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2663:3:15"},"nodeType":"YulFunctionCall","src":"2663:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"2687:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2642:20:15"},"nodeType":"YulFunctionCall","src":"2642:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2617:6:15"},"nodeType":"YulFunctionCall","src":"2617:75:15"},"nodeType":"YulExpressionStatement","src":"2617:75:15"}]},{"nodeType":"YulBlock","src":"2713:151:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2748:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"2762:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2752:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2789:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2796:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2785:3:15"},"nodeType":"YulFunctionCall","src":"2785:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2828:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"2839:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2824:3:15"},"nodeType":"YulFunctionCall","src":"2824:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"2848:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2803:20:15"},"nodeType":"YulFunctionCall","src":"2803:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2778:6:15"},"nodeType":"YulFunctionCall","src":"2778:75:15"},"nodeType":"YulExpressionStatement","src":"2778:75:15"}]}]},"name":"abi_decode_t_struct$_Institution_$3529_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2352:9:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"2363:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2371:5:15","type":""}],"src":"2293:578:15"},{"body":{"nodeType":"YulBlock","src":"3059:666:15","statements":[{"nodeType":"YulAssignment","src":"3069:119:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3180:6:15"}],"functionName":{"name":"array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3094:85:15"},"nodeType":"YulFunctionCall","src":"3094:93:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3078:15:15"},"nodeType":"YulFunctionCall","src":"3078:110:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3069:5:15"}]},{"nodeType":"YulVariableDeclaration","src":"3197:16:15","value":{"name":"array","nodeType":"YulIdentifier","src":"3208:5:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"3201:3:15","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3230:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"3237:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3223:6:15"},"nodeType":"YulFunctionCall","src":"3223:21:15"},"nodeType":"YulExpressionStatement","src":"3223:21:15"},{"nodeType":"YulAssignment","src":"3253:23:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3264:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"3271:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3260:3:15"},"nodeType":"YulFunctionCall","src":"3260:16:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3253:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"3286:44:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3304:6:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3316:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3324:4:15","type":"","value":"0x40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3312:3:15"},"nodeType":"YulFunctionCall","src":"3312:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3300:3:15"},"nodeType":"YulFunctionCall","src":"3300:30:15"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"3290:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3358:103:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"3372:77:15"},"nodeType":"YulFunctionCall","src":"3372:79:15"},"nodeType":"YulExpressionStatement","src":"3372:79:15"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"3345:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"3353:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3342:2:15"},"nodeType":"YulFunctionCall","src":"3342:15:15"},"nodeType":"YulIf","src":"3339:122:15"},{"body":{"nodeType":"YulBlock","src":"3546:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3561:21:15","value":{"name":"src","nodeType":"YulIdentifier","src":"3579:3:15"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"3565:10:15","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3603:3:15"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"3658:10:15"},{"name":"end","nodeType":"YulIdentifier","src":"3670:3:15"}],"functionName":{"name":"abi_decode_t_struct$_Institution_$3529_memory_ptr","nodeType":"YulIdentifier","src":"3608:49:15"},"nodeType":"YulFunctionCall","src":"3608:66:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3596:6:15"},"nodeType":"YulFunctionCall","src":"3596:79:15"},"nodeType":"YulExpressionStatement","src":"3596:79:15"},{"nodeType":"YulAssignment","src":"3688:21:15","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3699:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3704:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3695:3:15"},"nodeType":"YulFunctionCall","src":"3695:14:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3688:3:15"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3499:3:15"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3504:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3496:2:15"},"nodeType":"YulFunctionCall","src":"3496:15:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3512:25:15","statements":[{"nodeType":"YulAssignment","src":"3514:21:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3525:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3530:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:15"},"nodeType":"YulFunctionCall","src":"3521:14:15"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3514:3:15"}]}]},"pre":{"nodeType":"YulBlock","src":"3474:21:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3476:17:15","value":{"name":"offset","nodeType":"YulIdentifier","src":"3487:6:15"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3480:3:15","type":""}]}]},"src":"3470:249:15"}]},"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3029:6:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"3037:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3045:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3053:5:15","type":""}],"src":"2928:797:15"},{"body":{"nodeType":"YulBlock","src":"3888:322:15","statements":[{"body":{"nodeType":"YulBlock","src":"3937:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"3939:77:15"},"nodeType":"YulFunctionCall","src":"3939:79:15"},"nodeType":"YulExpressionStatement","src":"3939:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3916:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3924:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3912:3:15"},"nodeType":"YulFunctionCall","src":"3912:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"3931:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3908:3:15"},"nodeType":"YulFunctionCall","src":"3908:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3901:6:15"},"nodeType":"YulFunctionCall","src":"3901:35:15"},"nodeType":"YulIf","src":"3898:122:15"},{"nodeType":"YulVariableDeclaration","src":"4029:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4056:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4043:12:15"},"nodeType":"YulFunctionCall","src":"4043:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4033:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4072:132:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4177:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4185:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:15"},"nodeType":"YulFunctionCall","src":"4173:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"4192:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"4200:3:15"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4081:91:15"},"nodeType":"YulFunctionCall","src":"4081:123:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"4072:5:15"}]}]},"name":"abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3866:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3874:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3882:5:15","type":""}],"src":"3782:428:15"},{"body":{"nodeType":"YulBlock","src":"4353:605:15","statements":[{"body":{"nodeType":"YulBlock","src":"4399:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4401:77:15"},"nodeType":"YulFunctionCall","src":"4401:79:15"},"nodeType":"YulExpressionStatement","src":"4401:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4374:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4383:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4370:3:15"},"nodeType":"YulFunctionCall","src":"4370:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"4395:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4366:3:15"},"nodeType":"YulFunctionCall","src":"4366:32:15"},"nodeType":"YulIf","src":"4363:119:15"},{"nodeType":"YulBlock","src":"4492:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4507:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4521:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4511:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4536:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4582:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4567:3:15"},"nodeType":"YulFunctionCall","src":"4567:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4591:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"4546:20:15"},"nodeType":"YulFunctionCall","src":"4546:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4536:6:15"}]}]},{"nodeType":"YulBlock","src":"4619:332:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4634:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4665:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4676:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4661:3:15"},"nodeType":"YulFunctionCall","src":"4661:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4648:12:15"},"nodeType":"YulFunctionCall","src":"4648:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4638:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"4727:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4729:77:15"},"nodeType":"YulFunctionCall","src":"4729:79:15"},"nodeType":"YulExpressionStatement","src":"4729:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4699:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4707:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4696:2:15"},"nodeType":"YulFunctionCall","src":"4696:30:15"},"nodeType":"YulIf","src":"4693:117:15"},{"nodeType":"YulAssignment","src":"4824:117:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4913:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4924:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4909:3:15"},"nodeType":"YulFunctionCall","src":"4909:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4933:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4834:74:15"},"nodeType":"YulFunctionCall","src":"4834:107:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4824:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4315:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4326:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4338:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4346:6:15","type":""}],"src":"4216:742:15"},{"body":{"nodeType":"YulBlock","src":"5009:81:15","statements":[{"nodeType":"YulAssignment","src":"5019:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5034:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5041:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5030:3:15"},"nodeType":"YulFunctionCall","src":"5030:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5019:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4991:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5001:7:15","type":""}],"src":"4964:126:15"},{"body":{"nodeType":"YulBlock","src":"5141:51:15","statements":[{"nodeType":"YulAssignment","src":"5151:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5180:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5162:17:15"},"nodeType":"YulFunctionCall","src":"5162:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5151:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5123:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5133:7:15","type":""}],"src":"5096:96:15"},{"body":{"nodeType":"YulBlock","src":"5241:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"5298:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5307:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5310:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5300:6:15"},"nodeType":"YulFunctionCall","src":"5300:12:15"},"nodeType":"YulExpressionStatement","src":"5300:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5264:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5289:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5271:17:15"},"nodeType":"YulFunctionCall","src":"5271:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5261:2:15"},"nodeType":"YulFunctionCall","src":"5261:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5254:6:15"},"nodeType":"YulFunctionCall","src":"5254:43:15"},"nodeType":"YulIf","src":"5251:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5234:5:15","type":""}],"src":"5198:122:15"},{"body":{"nodeType":"YulBlock","src":"5378:87:15","statements":[{"nodeType":"YulAssignment","src":"5388:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5410:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5397:12:15"},"nodeType":"YulFunctionCall","src":"5397:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5388:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5453:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5426:26:15"},"nodeType":"YulFunctionCall","src":"5426:33:15"},"nodeType":"YulExpressionStatement","src":"5426:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5356:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5364:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5372:5:15","type":""}],"src":"5326:139:15"},{"body":{"nodeType":"YulBlock","src":"5554:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"5600:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5602:77:15"},"nodeType":"YulFunctionCall","src":"5602:79:15"},"nodeType":"YulExpressionStatement","src":"5602:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5575:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"5584:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5571:3:15"},"nodeType":"YulFunctionCall","src":"5571:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"5596:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5567:3:15"},"nodeType":"YulFunctionCall","src":"5567:32:15"},"nodeType":"YulIf","src":"5564:119:15"},{"nodeType":"YulBlock","src":"5693:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5708:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5722:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5712:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5737:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5772:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5783:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5768:3:15"},"nodeType":"YulFunctionCall","src":"5768:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5792:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"5747:20:15"},"nodeType":"YulFunctionCall","src":"5747:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5737:6:15"}]}]},{"nodeType":"YulBlock","src":"5820:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5835:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5849:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5839:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5865:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5900:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5911:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5896:3:15"},"nodeType":"YulFunctionCall","src":"5896:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5920:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5875:20:15"},"nodeType":"YulFunctionCall","src":"5875:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5865:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5516:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5527:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5539:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5547:6:15","type":""}],"src":"5471:474:15"},{"body":{"nodeType":"YulBlock","src":"5995:57:15","statements":[{"nodeType":"YulAssignment","src":"6005:41:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6020:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"6027:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6016:3:15"},"nodeType":"YulFunctionCall","src":"6016:30:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6005:7:15"}]}]},"name":"cleanup_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5977:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5987:7:15","type":""}],"src":"5951:101:15"},{"body":{"nodeType":"YulBlock","src":"6100:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"6156:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6165:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6168:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6158:6:15"},"nodeType":"YulFunctionCall","src":"6158:12:15"},"nodeType":"YulExpressionStatement","src":"6158:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6123:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6147:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"6130:16:15"},"nodeType":"YulFunctionCall","src":"6130:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6120:2:15"},"nodeType":"YulFunctionCall","src":"6120:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6113:6:15"},"nodeType":"YulFunctionCall","src":"6113:42:15"},"nodeType":"YulIf","src":"6110:62:15"}]},"name":"validator_revert_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6093:5:15","type":""}],"src":"6058:120:15"},{"body":{"nodeType":"YulBlock","src":"6235:86:15","statements":[{"nodeType":"YulAssignment","src":"6245:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6267:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6254:12:15"},"nodeType":"YulFunctionCall","src":"6254:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6245:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6309:5:15"}],"functionName":{"name":"validator_revert_t_uint64","nodeType":"YulIdentifier","src":"6283:25:15"},"nodeType":"YulFunctionCall","src":"6283:32:15"},"nodeType":"YulExpressionStatement","src":"6283:32:15"}]},"name":"abi_decode_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6213:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6221:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6229:5:15","type":""}],"src":"6184:137:15"},{"body":{"nodeType":"YulBlock","src":"6392:262:15","statements":[{"body":{"nodeType":"YulBlock","src":"6438:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6440:77:15"},"nodeType":"YulFunctionCall","src":"6440:79:15"},"nodeType":"YulExpressionStatement","src":"6440:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6413:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6422:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6409:3:15"},"nodeType":"YulFunctionCall","src":"6409:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6434:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6405:3:15"},"nodeType":"YulFunctionCall","src":"6405:32:15"},"nodeType":"YulIf","src":"6402:119:15"},{"nodeType":"YulBlock","src":"6531:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6546:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6560:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6550:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6575:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6609:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6620:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6605:3:15"},"nodeType":"YulFunctionCall","src":"6605:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6629:7:15"}],"functionName":{"name":"abi_decode_t_uint64","nodeType":"YulIdentifier","src":"6585:19:15"},"nodeType":"YulFunctionCall","src":"6585:52:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6575:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6362:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6373:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6385:6:15","type":""}],"src":"6327:327:15"},{"body":{"nodeType":"YulBlock","src":"6725:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6742:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6765:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6747:17:15"},"nodeType":"YulFunctionCall","src":"6747:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6735:6:15"},"nodeType":"YulFunctionCall","src":"6735:37:15"},"nodeType":"YulExpressionStatement","src":"6735:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6713:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6720:3:15","type":""}],"src":"6660:118:15"},{"body":{"nodeType":"YulBlock","src":"6882:124:15","statements":[{"nodeType":"YulAssignment","src":"6892:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6904:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6915:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6900:3:15"},"nodeType":"YulFunctionCall","src":"6900:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6892:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6972:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6985:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6996:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6981:3:15"},"nodeType":"YulFunctionCall","src":"6981:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"6928:43:15"},"nodeType":"YulFunctionCall","src":"6928:71:15"},"nodeType":"YulExpressionStatement","src":"6928:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6854:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6866:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6877:4:15","type":""}],"src":"6784:222:15"},{"body":{"nodeType":"YulBlock","src":"7054:48:15","statements":[{"nodeType":"YulAssignment","src":"7064:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7089:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7082:6:15"},"nodeType":"YulFunctionCall","src":"7082:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7075:6:15"},"nodeType":"YulFunctionCall","src":"7075:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"7064:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7036:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"7046:7:15","type":""}],"src":"7012:90:15"},{"body":{"nodeType":"YulBlock","src":"7148:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"7202:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7211:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7214:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7204:6:15"},"nodeType":"YulFunctionCall","src":"7204:12:15"},"nodeType":"YulExpressionStatement","src":"7204:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7171:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7193:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"7178:14:15"},"nodeType":"YulFunctionCall","src":"7178:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7168:2:15"},"nodeType":"YulFunctionCall","src":"7168:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7161:6:15"},"nodeType":"YulFunctionCall","src":"7161:40:15"},"nodeType":"YulIf","src":"7158:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7141:5:15","type":""}],"src":"7108:116:15"},{"body":{"nodeType":"YulBlock","src":"7279:84:15","statements":[{"nodeType":"YulAssignment","src":"7289:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7311:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7298:12:15"},"nodeType":"YulFunctionCall","src":"7298:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7289:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7351:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"7327:23:15"},"nodeType":"YulFunctionCall","src":"7327:30:15"},"nodeType":"YulExpressionStatement","src":"7327:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7257:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"7265:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"7273:5:15","type":""}],"src":"7230:133:15"},{"body":{"nodeType":"YulBlock","src":"7466:516:15","statements":[{"body":{"nodeType":"YulBlock","src":"7512:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"7514:77:15"},"nodeType":"YulFunctionCall","src":"7514:79:15"},"nodeType":"YulExpressionStatement","src":"7514:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7487:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"7496:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7483:3:15"},"nodeType":"YulFunctionCall","src":"7483:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"7508:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7479:3:15"},"nodeType":"YulFunctionCall","src":"7479:32:15"},"nodeType":"YulIf","src":"7476:119:15"},{"nodeType":"YulBlock","src":"7605:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7620:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7634:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7624:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7649:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7684:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7695:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7680:3:15"},"nodeType":"YulFunctionCall","src":"7680:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7704:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7659:20:15"},"nodeType":"YulFunctionCall","src":"7659:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7649:6:15"}]}]},{"nodeType":"YulBlock","src":"7732:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7747:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7761:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7751:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7777:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7812:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7823:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7808:3:15"},"nodeType":"YulFunctionCall","src":"7808:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7832:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7787:20:15"},"nodeType":"YulFunctionCall","src":"7787:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7777:6:15"}]}]},{"nodeType":"YulBlock","src":"7860:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7875:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7889:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7879:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7905:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7937:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7948:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7933:3:15"},"nodeType":"YulFunctionCall","src":"7933:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7957:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"7915:17:15"},"nodeType":"YulFunctionCall","src":"7915:50:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7905:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7420:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7431:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7443:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7451:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7459:6:15","type":""}],"src":"7369:613:15"},{"body":{"nodeType":"YulBlock","src":"8077:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8094:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8097:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8087:6:15"},"nodeType":"YulFunctionCall","src":"8087:12:15"},"nodeType":"YulExpressionStatement","src":"8087:12:15"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"7988:117:15"},{"body":{"nodeType":"YulBlock","src":"8198:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"8247:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"8249:77:15"},"nodeType":"YulFunctionCall","src":"8249:79:15"},"nodeType":"YulExpressionStatement","src":"8249:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8226:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8234:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8222:3:15"},"nodeType":"YulFunctionCall","src":"8222:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"8241:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8218:3:15"},"nodeType":"YulFunctionCall","src":"8218:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8211:6:15"},"nodeType":"YulFunctionCall","src":"8211:35:15"},"nodeType":"YulIf","src":"8208:122:15"},{"nodeType":"YulAssignment","src":"8339:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8362:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8349:12:15"},"nodeType":"YulFunctionCall","src":"8349:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8339:6:15"}]},{"body":{"nodeType":"YulBlock","src":"8412:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"8414:77:15"},"nodeType":"YulFunctionCall","src":"8414:79:15"},"nodeType":"YulExpressionStatement","src":"8414:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8384:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8392:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8381:2:15"},"nodeType":"YulFunctionCall","src":"8381:30:15"},"nodeType":"YulIf","src":"8378:117:15"},{"nodeType":"YulAssignment","src":"8504:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8520:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8528:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8516:3:15"},"nodeType":"YulFunctionCall","src":"8516:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"8504:8:15"}]},{"body":{"nodeType":"YulBlock","src":"8587:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"8589:77:15"},"nodeType":"YulFunctionCall","src":"8589:79:15"},"nodeType":"YulExpressionStatement","src":"8589:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"8552:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8566:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8574:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8562:3:15"},"nodeType":"YulFunctionCall","src":"8562:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8548:3:15"},"nodeType":"YulFunctionCall","src":"8548:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"8582:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8545:2:15"},"nodeType":"YulFunctionCall","src":"8545:41:15"},"nodeType":"YulIf","src":"8542:128:15"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8165:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"8173:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"8181:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"8191:6:15","type":""}],"src":"8124:552:15"},{"body":{"nodeType":"YulBlock","src":"8767:442:15","statements":[{"body":{"nodeType":"YulBlock","src":"8813:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8815:77:15"},"nodeType":"YulFunctionCall","src":"8815:79:15"},"nodeType":"YulExpressionStatement","src":"8815:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8788:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"8797:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8784:3:15"},"nodeType":"YulFunctionCall","src":"8784:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"8809:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8780:3:15"},"nodeType":"YulFunctionCall","src":"8780:32:15"},"nodeType":"YulIf","src":"8777:119:15"},{"nodeType":"YulBlock","src":"8906:296:15","statements":[{"nodeType":"YulVariableDeclaration","src":"8921:45:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8952:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8963:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8948:3:15"},"nodeType":"YulFunctionCall","src":"8948:17:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8935:12:15"},"nodeType":"YulFunctionCall","src":"8935:31:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8925:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"9013:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9015:77:15"},"nodeType":"YulFunctionCall","src":"9015:79:15"},"nodeType":"YulExpressionStatement","src":"9015:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8985:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8993:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8982:2:15"},"nodeType":"YulFunctionCall","src":"8982:30:15"},"nodeType":"YulIf","src":"8979:117:15"},{"nodeType":"YulAssignment","src":"9110:82:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9164:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9175:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9160:3:15"},"nodeType":"YulFunctionCall","src":"9160:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9184:7:15"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"9128:31:15"},"nodeType":"YulFunctionCall","src":"9128:64:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9110:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"9118:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8729:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8740:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8752:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8760:6:15","type":""}],"src":"8682:527:15"},{"body":{"nodeType":"YulBlock","src":"9281:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"9327:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9329:77:15"},"nodeType":"YulFunctionCall","src":"9329:79:15"},"nodeType":"YulExpressionStatement","src":"9329:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9302:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"9311:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9298:3:15"},"nodeType":"YulFunctionCall","src":"9298:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"9323:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9294:3:15"},"nodeType":"YulFunctionCall","src":"9294:32:15"},"nodeType":"YulIf","src":"9291:119:15"},{"nodeType":"YulBlock","src":"9420:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9435:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9449:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9439:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9464:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9499:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9510:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9495:3:15"},"nodeType":"YulFunctionCall","src":"9495:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9519:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9474:20:15"},"nodeType":"YulFunctionCall","src":"9474:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9464:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9251:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9262:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9274:6:15","type":""}],"src":"9215:329:15"},{"body":{"nodeType":"YulBlock","src":"9578:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9595:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9598:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9588:6:15"},"nodeType":"YulFunctionCall","src":"9588:88:15"},"nodeType":"YulExpressionStatement","src":"9588:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9692:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9695:4:15","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9685:6:15"},"nodeType":"YulFunctionCall","src":"9685:15:15"},"nodeType":"YulExpressionStatement","src":"9685:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9716:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9719:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9709:6:15"},"nodeType":"YulFunctionCall","src":"9709:15:15"},"nodeType":"YulExpressionStatement","src":"9709:15:15"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9550:180:15"},{"body":{"nodeType":"YulBlock","src":"9832:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9849:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"9854:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9842:6:15"},"nodeType":"YulFunctionCall","src":"9842:19:15"},"nodeType":"YulExpressionStatement","src":"9842:19:15"},{"nodeType":"YulAssignment","src":"9870:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9889:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"9894:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9885:3:15"},"nodeType":"YulFunctionCall","src":"9885:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"9870:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9804:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"9809:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"9820:11:15","type":""}],"src":"9736:169:15"},{"body":{"nodeType":"YulBlock","src":"10017:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10039:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"10047:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10035:3:15"},"nodeType":"YulFunctionCall","src":"10035:14:15"},{"hexValue":"50617963726573743a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"10051:24:15","type":"","value":"Paycrest: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10028:6:15"},"nodeType":"YulFunctionCall","src":"10028:48:15"},"nodeType":"YulExpressionStatement","src":"10028:48:15"}]},"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"10009:6:15","type":""}],"src":"9911:172:15"},{"body":{"nodeType":"YulBlock","src":"10235:220:15","statements":[{"nodeType":"YulAssignment","src":"10245:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10311:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10316:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10252:58:15"},"nodeType":"YulFunctionCall","src":"10252:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10245:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10417:3:15"}],"functionName":{"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulIdentifier","src":"10328:88:15"},"nodeType":"YulFunctionCall","src":"10328:93:15"},"nodeType":"YulExpressionStatement","src":"10328:93:15"},{"nodeType":"YulAssignment","src":"10430:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10441:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10446:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10437:3:15"},"nodeType":"YulFunctionCall","src":"10437:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10430:3:15"}]}]},"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10223:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10231:3:15","type":""}],"src":"10089:366:15"},{"body":{"nodeType":"YulBlock","src":"10632:248:15","statements":[{"nodeType":"YulAssignment","src":"10642:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10654:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"10665:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10650:3:15"},"nodeType":"YulFunctionCall","src":"10650:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10642:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10689:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"10700:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10685:3:15"},"nodeType":"YulFunctionCall","src":"10685:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10708:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"10714:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10704:3:15"},"nodeType":"YulFunctionCall","src":"10704:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10678:6:15"},"nodeType":"YulFunctionCall","src":"10678:47:15"},"nodeType":"YulExpressionStatement","src":"10678:47:15"},{"nodeType":"YulAssignment","src":"10734:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10868:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10742:124:15"},"nodeType":"YulFunctionCall","src":"10742:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10734:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10612:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10627:4:15","type":""}],"src":"10461:419:15"},{"body":{"nodeType":"YulBlock","src":"10949:52:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10966:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10988:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"10971:16:15"},"nodeType":"YulFunctionCall","src":"10971:23:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10959:6:15"},"nodeType":"YulFunctionCall","src":"10959:36:15"},"nodeType":"YulExpressionStatement","src":"10959:36:15"}]},"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10937:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10944:3:15","type":""}],"src":"10886:115:15"},{"body":{"nodeType":"YulBlock","src":"11103:122:15","statements":[{"nodeType":"YulAssignment","src":"11113:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11125:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11136:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11121:3:15"},"nodeType":"YulFunctionCall","src":"11121:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11113:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11191:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11204:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11215:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11200:3:15"},"nodeType":"YulFunctionCall","src":"11200:17:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulIdentifier","src":"11149:41:15"},"nodeType":"YulFunctionCall","src":"11149:69:15"},"nodeType":"YulExpressionStatement","src":"11149:69:15"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11075:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11087:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11098:4:15","type":""}],"src":"11007:218:15"},{"body":{"nodeType":"YulBlock","src":"11296:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11313:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11336:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"11318:17:15"},"nodeType":"YulFunctionCall","src":"11318:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11306:6:15"},"nodeType":"YulFunctionCall","src":"11306:37:15"},"nodeType":"YulExpressionStatement","src":"11306:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11284:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11291:3:15","type":""}],"src":"11231:118:15"},{"body":{"nodeType":"YulBlock","src":"11414:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11431:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11451:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"11436:14:15"},"nodeType":"YulFunctionCall","src":"11436:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11424:6:15"},"nodeType":"YulFunctionCall","src":"11424:34:15"},"nodeType":"YulExpressionStatement","src":"11424:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11402:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11409:3:15","type":""}],"src":"11355:109:15"},{"body":{"nodeType":"YulBlock","src":"11618:282:15","statements":[{"nodeType":"YulAssignment","src":"11628:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11640:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11651:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11636:3:15"},"nodeType":"YulFunctionCall","src":"11636:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11628:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11708:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11721:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11732:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11717:3:15"},"nodeType":"YulFunctionCall","src":"11717:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"11664:43:15"},"nodeType":"YulFunctionCall","src":"11664:71:15"},"nodeType":"YulExpressionStatement","src":"11664:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11789:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11802:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11813:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11798:3:15"},"nodeType":"YulFunctionCall","src":"11798:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"11745:43:15"},"nodeType":"YulFunctionCall","src":"11745:72:15"},"nodeType":"YulExpressionStatement","src":"11745:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11865:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11878:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11889:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11874:3:15"},"nodeType":"YulFunctionCall","src":"11874:18:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"11827:37:15"},"nodeType":"YulFunctionCall","src":"11827:66:15"},"nodeType":"YulExpressionStatement","src":"11827:66:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11574:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11586:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11594:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11602:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11613:4:15","type":""}],"src":"11470:430:15"},{"body":{"nodeType":"YulBlock","src":"11971:31:15","statements":[{"nodeType":"YulAssignment","src":"11982:13:15","value":{"name":"len","nodeType":"YulIdentifier","src":"11992:3:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"11982:6:15"}]}]},"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11949:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"11956:3:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"11964:6:15","type":""}],"src":"11906:96:15"},{"body":{"nodeType":"YulBlock","src":"12036:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12053:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12056:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12046:6:15"},"nodeType":"YulFunctionCall","src":"12046:88:15"},"nodeType":"YulExpressionStatement","src":"12046:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12150:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12153:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12143:6:15"},"nodeType":"YulFunctionCall","src":"12143:15:15"},"nodeType":"YulExpressionStatement","src":"12143:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12174:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12177:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12167:6:15"},"nodeType":"YulFunctionCall","src":"12167:15:15"},"nodeType":"YulExpressionStatement","src":"12167:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"12008:180:15"},{"body":{"nodeType":"YulBlock","src":"12245:269:15","statements":[{"nodeType":"YulAssignment","src":"12255:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"12269:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12275:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12265:3:15"},"nodeType":"YulFunctionCall","src":"12265:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12255:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"12286:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"12316:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12322:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12312:3:15"},"nodeType":"YulFunctionCall","src":"12312:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"12290:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"12363:51:15","statements":[{"nodeType":"YulAssignment","src":"12377:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12391:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12399:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12387:3:15"},"nodeType":"YulFunctionCall","src":"12387:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12377:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"12343:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12336:6:15"},"nodeType":"YulFunctionCall","src":"12336:26:15"},"nodeType":"YulIf","src":"12333:81:15"},{"body":{"nodeType":"YulBlock","src":"12466:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"12480:16:15"},"nodeType":"YulFunctionCall","src":"12480:18:15"},"nodeType":"YulExpressionStatement","src":"12480:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"12430:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12453:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12461:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12450:2:15"},"nodeType":"YulFunctionCall","src":"12450:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12427:2:15"},"nodeType":"YulFunctionCall","src":"12427:38:15"},"nodeType":"YulIf","src":"12424:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"12229:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"12238:6:15","type":""}],"src":"12194:320:15"},{"body":{"nodeType":"YulBlock","src":"12573:87:15","statements":[{"nodeType":"YulAssignment","src":"12583:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"12591:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12583:4:15"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12611:1:15","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"12614:3:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12604:6:15"},"nodeType":"YulFunctionCall","src":"12604:14:15"},"nodeType":"YulExpressionStatement","src":"12604:14:15"},{"nodeType":"YulAssignment","src":"12627:26:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12645:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12648:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"12635:9:15"},"nodeType":"YulFunctionCall","src":"12635:18:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12627:4:15"}]}]},"name":"array_dataslot_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"12560:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"12568:4:15","type":""}],"src":"12520:140:15"},{"body":{"nodeType":"YulBlock","src":"12710:49:15","statements":[{"nodeType":"YulAssignment","src":"12720:33:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12738:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"12745:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12734:3:15"},"nodeType":"YulFunctionCall","src":"12734:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"12750:2:15","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12730:3:15"},"nodeType":"YulFunctionCall","src":"12730:23:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"12720:6:15"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12693:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"12703:6:15","type":""}],"src":"12666:93:15"},{"body":{"nodeType":"YulBlock","src":"12818:54:15","statements":[{"nodeType":"YulAssignment","src":"12828:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"12853:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"12859:5:15"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12849:3:15"},"nodeType":"YulFunctionCall","src":"12849:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"12828:8:15"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"12793:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"12799:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"12809:8:15","type":""}],"src":"12765:107:15"},{"body":{"nodeType":"YulBlock","src":"12954:317:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12964:35:15","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"12985:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"12997:1:15","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12981:3:15"},"nodeType":"YulFunctionCall","src":"12981:18:15"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"12968:9:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13008:109:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"13039:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"13050:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"13020:18:15"},"nodeType":"YulFunctionCall","src":"13020:97:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"13012:4:15","type":""}]},{"nodeType":"YulAssignment","src":"13126:51:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"13157:9:15"},{"name":"toInsert","nodeType":"YulIdentifier","src":"13168:8:15"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"13138:18:15"},"nodeType":"YulFunctionCall","src":"13138:39:15"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"13126:8:15"}]},{"nodeType":"YulAssignment","src":"13186:30:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13199:5:15"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"13210:4:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"13206:3:15"},"nodeType":"YulFunctionCall","src":"13206:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13195:3:15"},"nodeType":"YulFunctionCall","src":"13195:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"13186:5:15"}]},{"nodeType":"YulAssignment","src":"13225:40:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13238:5:15"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"13249:8:15"},{"name":"mask","nodeType":"YulIdentifier","src":"13259:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13245:3:15"},"nodeType":"YulFunctionCall","src":"13245:19:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"13235:2:15"},"nodeType":"YulFunctionCall","src":"13235:30:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"13225:6:15"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12915:5:15","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"12922:10:15","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"12934:8:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"12947:6:15","type":""}],"src":"12878:393:15"},{"body":{"nodeType":"YulBlock","src":"13322:32:15","statements":[{"nodeType":"YulAssignment","src":"13332:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13343:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"13332:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13304:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"13314:7:15","type":""}],"src":"13277:77:15"},{"body":{"nodeType":"YulBlock","src":"13392:28:15","statements":[{"nodeType":"YulAssignment","src":"13402:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13409:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13402:3:15"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13378:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13388:3:15","type":""}],"src":"13360:60:15"},{"body":{"nodeType":"YulBlock","src":"13486:82:15","statements":[{"nodeType":"YulAssignment","src":"13496:66:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13554:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13536:17:15"},"nodeType":"YulFunctionCall","src":"13536:24:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"13527:8:15"},"nodeType":"YulFunctionCall","src":"13527:34:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13509:17:15"},"nodeType":"YulFunctionCall","src":"13509:53:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"13496:9:15"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13466:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"13476:9:15","type":""}],"src":"13426:142:15"},{"body":{"nodeType":"YulBlock","src":"13621:28:15","statements":[{"nodeType":"YulAssignment","src":"13631:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13638:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13631:3:15"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13607:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13617:3:15","type":""}],"src":"13574:75:15"},{"body":{"nodeType":"YulBlock","src":"13731:193:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13741:63:15","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"13796:7:15"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"13765:30:15"},"nodeType":"YulFunctionCall","src":"13765:39:15"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"13745:16:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13820:4:15"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13860:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"13854:5:15"},"nodeType":"YulFunctionCall","src":"13854:11:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13867:6:15"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"13899:16:15"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"13875:23:15"},"nodeType":"YulFunctionCall","src":"13875:41:15"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"13826:27:15"},"nodeType":"YulFunctionCall","src":"13826:91:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"13813:6:15"},"nodeType":"YulFunctionCall","src":"13813:105:15"},"nodeType":"YulExpressionStatement","src":"13813:105:15"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"13708:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"13714:6:15","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"13722:7:15","type":""}],"src":"13655:269:15"},{"body":{"nodeType":"YulBlock","src":"13979:24:15","statements":[{"nodeType":"YulAssignment","src":"13989:8:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13996:1:15","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13989:3:15"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13975:3:15","type":""}],"src":"13930:73:15"},{"body":{"nodeType":"YulBlock","src":"14062:136:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14072:46:15","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"14086:30:15"},"nodeType":"YulFunctionCall","src":"14086:32:15"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"14076:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"14171:4:15"},{"name":"offset","nodeType":"YulIdentifier","src":"14177:6:15"},{"name":"zero_0","nodeType":"YulIdentifier","src":"14185:6:15"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"14127:43:15"},"nodeType":"YulFunctionCall","src":"14127:65:15"},"nodeType":"YulExpressionStatement","src":"14127:65:15"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"14048:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"14054:6:15","type":""}],"src":"14009:189:15"},{"body":{"nodeType":"YulBlock","src":"14254:136:15","statements":[{"body":{"nodeType":"YulBlock","src":"14321:63:15","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14365:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14372:1:15","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"14335:29:15"},"nodeType":"YulFunctionCall","src":"14335:39:15"},"nodeType":"YulExpressionStatement","src":"14335:39:15"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14274:5:15"},{"name":"end","nodeType":"YulIdentifier","src":"14281:3:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14271:2:15"},"nodeType":"YulFunctionCall","src":"14271:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"14286:26:15","statements":[{"nodeType":"YulAssignment","src":"14288:22:15","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14301:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14308:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14297:3:15"},"nodeType":"YulFunctionCall","src":"14297:13:15"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"14288:5:15"}]}]},"pre":{"nodeType":"YulBlock","src":"14268:2:15","statements":[]},"src":"14264:120:15"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"14242:5:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"14249:3:15","type":""}],"src":"14204:186:15"},{"body":{"nodeType":"YulBlock","src":"14474:463:15","statements":[{"body":{"nodeType":"YulBlock","src":"14500:430:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14514:53:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14561:5:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"14530:30:15"},"nodeType":"YulFunctionCall","src":"14530:37:15"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"14518:8:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14580:63:15","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"14603:8:15"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14631:10:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"14613:17:15"},"nodeType":"YulFunctionCall","src":"14613:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14599:3:15"},"nodeType":"YulFunctionCall","src":"14599:44:15"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"14584:11:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"14800:27:15","statements":[{"nodeType":"YulAssignment","src":"14802:23:15","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"14817:8:15"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"14802:11:15"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14784:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"14796:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14781:2:15"},"nodeType":"YulFunctionCall","src":"14781:18:15"},"nodeType":"YulIf","src":"14778:49:15"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"14869:11:15"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"14886:8:15"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14914:3:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"14896:17:15"},"nodeType":"YulFunctionCall","src":"14896:22:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14882:3:15"},"nodeType":"YulFunctionCall","src":"14882:37:15"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"14840:28:15"},"nodeType":"YulFunctionCall","src":"14840:80:15"},"nodeType":"YulExpressionStatement","src":"14840:80:15"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14491:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14496:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14488:2:15"},"nodeType":"YulFunctionCall","src":"14488:11:15"},"nodeType":"YulIf","src":"14485:445:15"}]},"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"14450:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"14457:3:15","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"14462:10:15","type":""}],"src":"14396:541:15"},{"body":{"nodeType":"YulBlock","src":"15006:54:15","statements":[{"nodeType":"YulAssignment","src":"15016:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"15041:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"15047:5:15"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"15037:3:15"},"nodeType":"YulFunctionCall","src":"15037:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"15016:8:15"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"14981:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"14987:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"14997:8:15","type":""}],"src":"14943:117:15"},{"body":{"nodeType":"YulBlock","src":"15117:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15127:68:15","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15176:1:15","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"15179:5:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15172:3:15"},"nodeType":"YulFunctionCall","src":"15172:13:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15191:1:15","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15187:3:15"},"nodeType":"YulFunctionCall","src":"15187:6:15"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"15143:28:15"},"nodeType":"YulFunctionCall","src":"15143:51:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15139:3:15"},"nodeType":"YulFunctionCall","src":"15139:56:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"15131:4:15","type":""}]},{"nodeType":"YulAssignment","src":"15204:25:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15218:4:15"},{"name":"mask","nodeType":"YulIdentifier","src":"15224:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15214:3:15"},"nodeType":"YulFunctionCall","src":"15214:15:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"15204:6:15"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"15094:4:15","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"15100:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"15110:6:15","type":""}],"src":"15066:169:15"},{"body":{"nodeType":"YulBlock","src":"15321:214:15","statements":[{"nodeType":"YulAssignment","src":"15454:37:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15481:4:15"},{"name":"len","nodeType":"YulIdentifier","src":"15487:3:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"15462:18:15"},"nodeType":"YulFunctionCall","src":"15462:29:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15454:4:15"}]},{"nodeType":"YulAssignment","src":"15500:29:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15511:4:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15521:1:15","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"15524:3:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15517:3:15"},"nodeType":"YulFunctionCall","src":"15517:11:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"15508:2:15"},"nodeType":"YulFunctionCall","src":"15508:21:15"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"15500:4:15"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"15302:4:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"15308:3:15","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"15316:4:15","type":""}],"src":"15240:295:15"},{"body":{"nodeType":"YulBlock","src":"15637:1301:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15648:57:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15696:3:15"},{"name":"len","nodeType":"YulIdentifier","src":"15701:3:15"}],"functionName":{"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"15662:33:15"},"nodeType":"YulFunctionCall","src":"15662:43:15"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"15652:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"15790:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"15792:16:15"},"nodeType":"YulFunctionCall","src":"15792:18:15"},"nodeType":"YulExpressionStatement","src":"15792:18:15"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"15762:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15770:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15759:2:15"},"nodeType":"YulFunctionCall","src":"15759:30:15"},"nodeType":"YulIf","src":"15756:56:15"},{"nodeType":"YulVariableDeclaration","src":"15822:52:15","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15868:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"15862:5:15"},"nodeType":"YulFunctionCall","src":"15862:11:15"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"15836:25:15"},"nodeType":"YulFunctionCall","src":"15836:38:15"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"15826:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15966:4:15"},{"name":"oldLen","nodeType":"YulIdentifier","src":"15972:6:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"15980:6:15"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulIdentifier","src":"15921:44:15"},"nodeType":"YulFunctionCall","src":"15921:66:15"},"nodeType":"YulExpressionStatement","src":"15921:66:15"},{"nodeType":"YulVariableDeclaration","src":"15997:18:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16014:1:15","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"16001:9:15","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"16062:624:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16076:37:15","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16095:6:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16107:4:15","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"16103:3:15"},"nodeType":"YulFunctionCall","src":"16103:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16091:3:15"},"nodeType":"YulFunctionCall","src":"16091:22:15"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"16080:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16127:50:15","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16172:4:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"16141:30:15"},"nodeType":"YulFunctionCall","src":"16141:36:15"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"16131:6:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16190:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16199:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16194:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16258:170:15","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16283:6:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16308:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16313:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16304:3:15"},"nodeType":"YulFunctionCall","src":"16304:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16291:12:15"},"nodeType":"YulFunctionCall","src":"16291:33:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16276:6:15"},"nodeType":"YulFunctionCall","src":"16276:49:15"},"nodeType":"YulExpressionStatement","src":"16276:49:15"},{"nodeType":"YulAssignment","src":"16342:24:15","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16356:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16364:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16352:3:15"},"nodeType":"YulFunctionCall","src":"16352:14:15"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16342:6:15"}]},{"nodeType":"YulAssignment","src":"16383:31:15","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16400:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16411:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16396:3:15"},"nodeType":"YulFunctionCall","src":"16396:18:15"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16383:9:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16224:1:15"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"16227:7:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16221:2:15"},"nodeType":"YulFunctionCall","src":"16221:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16236:21:15","statements":[{"nodeType":"YulAssignment","src":"16238:17:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16247:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"16250:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16243:3:15"},"nodeType":"YulFunctionCall","src":"16243:12:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16238:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"16217:3:15","statements":[]},"src":"16213:215:15"},{"body":{"nodeType":"YulBlock","src":"16464:163:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16482:50:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16516:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16521:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16512:3:15"},"nodeType":"YulFunctionCall","src":"16512:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16499:12:15"},"nodeType":"YulFunctionCall","src":"16499:33:15"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"16486:9:15","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16556:6:15"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"16583:9:15"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16598:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16606:4:15","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16594:3:15"},"nodeType":"YulFunctionCall","src":"16594:17:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"16564:18:15"},"nodeType":"YulFunctionCall","src":"16564:48:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16549:6:15"},"nodeType":"YulFunctionCall","src":"16549:64:15"},"nodeType":"YulExpressionStatement","src":"16549:64:15"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"16447:7:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"16456:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16444:2:15"},"nodeType":"YulFunctionCall","src":"16444:19:15"},"nodeType":"YulIf","src":"16441:186:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16647:4:15"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16661:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16669:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"16657:3:15"},"nodeType":"YulFunctionCall","src":"16657:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"16673:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16653:3:15"},"nodeType":"YulFunctionCall","src":"16653:22:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16640:6:15"},"nodeType":"YulFunctionCall","src":"16640:36:15"},"nodeType":"YulExpressionStatement","src":"16640:36:15"}]},"nodeType":"YulCase","src":"16055:631:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16060:1:15","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"16703:229:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16717:14:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16730:1:15","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"16721:5:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16754:74:15","statements":[{"nodeType":"YulAssignment","src":"16772:42:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16798:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16803:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16794:3:15"},"nodeType":"YulFunctionCall","src":"16794:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16781:12:15"},"nodeType":"YulFunctionCall","src":"16781:33:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"16772:5:15"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"16747:6:15"},"nodeType":"YulIf","src":"16744:84:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16848:4:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16907:5:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"16914:6:15"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"16854:52:15"},"nodeType":"YulFunctionCall","src":"16854:67:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16841:6:15"},"nodeType":"YulFunctionCall","src":"16841:81:15"},"nodeType":"YulExpressionStatement","src":"16841:81:15"}]},"nodeType":"YulCase","src":"16695:237:15","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16035:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16043:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16032:2:15"},"nodeType":"YulFunctionCall","src":"16032:14:15"},"nodeType":"YulSwitch","src":"16025:907:15"}]},"name":"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"15621:4:15","type":""},{"name":"src","nodeType":"YulTypedName","src":"15627:3:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"15632:3:15","type":""}],"src":"15540:1398:15"},{"body":{"nodeType":"YulBlock","src":"17039:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17056:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17061:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17049:6:15"},"nodeType":"YulFunctionCall","src":"17049:19:15"},"nodeType":"YulExpressionStatement","src":"17049:19:15"},{"nodeType":"YulAssignment","src":"17077:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17096:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17101:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17092:3:15"},"nodeType":"YulFunctionCall","src":"17092:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"17077:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17011:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"17016:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"17027:11:15","type":""}],"src":"16944:168:15"},{"body":{"nodeType":"YulBlock","src":"17182:82:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17205:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"17210:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17215:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"17192:12:15"},"nodeType":"YulFunctionCall","src":"17192:30:15"},"nodeType":"YulExpressionStatement","src":"17192:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17242:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17247:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17238:3:15"},"nodeType":"YulFunctionCall","src":"17238:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"17256:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17231:6:15"},"nodeType":"YulFunctionCall","src":"17231:27:15"},"nodeType":"YulExpressionStatement","src":"17231:27:15"}]},"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17164:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17169:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"17174:6:15","type":""}],"src":"17118:146:15"},{"body":{"nodeType":"YulBlock","src":"17392:214:15","statements":[{"nodeType":"YulAssignment","src":"17402:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17467:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17472:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17409:57:15"},"nodeType":"YulFunctionCall","src":"17409:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17402:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"17526:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"17533:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17538:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"17489:36:15"},"nodeType":"YulFunctionCall","src":"17489:56:15"},"nodeType":"YulExpressionStatement","src":"17489:56:15"},{"nodeType":"YulAssignment","src":"17554:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17565:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"17592:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"17570:21:15"},"nodeType":"YulFunctionCall","src":"17570:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17561:3:15"},"nodeType":"YulFunctionCall","src":"17561:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17554:3:15"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"17365:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"17372:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17380:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17388:3:15","type":""}],"src":"17292:314:15"},{"body":{"nodeType":"YulBlock","src":"17738:203:15","statements":[{"nodeType":"YulAssignment","src":"17748:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17760:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17771:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17756:3:15"},"nodeType":"YulFunctionCall","src":"17756:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17748:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17795:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17806:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17791:3:15"},"nodeType":"YulFunctionCall","src":"17791:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17814:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"17820:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17810:3:15"},"nodeType":"YulFunctionCall","src":"17810:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17784:6:15"},"nodeType":"YulFunctionCall","src":"17784:47:15"},"nodeType":"YulExpressionStatement","src":"17784:47:15"},{"nodeType":"YulAssignment","src":"17840:94:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17912:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"17920:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"17929:4:15"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17848:63:15"},"nodeType":"YulFunctionCall","src":"17848:86:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17840:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17702:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17714:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17722:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17733:4:15","type":""}],"src":"17612:329:15"},{"body":{"nodeType":"YulBlock","src":"18053:119:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18075:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"18083:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18071:3:15"},"nodeType":"YulFunctionCall","src":"18071:14:15"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"18087:34:15","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18064:6:15"},"nodeType":"YulFunctionCall","src":"18064:58:15"},"nodeType":"YulExpressionStatement","src":"18064:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18143:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"18151:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18139:3:15"},"nodeType":"YulFunctionCall","src":"18139:15:15"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"18156:8:15","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18132:6:15"},"nodeType":"YulFunctionCall","src":"18132:33:15"},"nodeType":"YulExpressionStatement","src":"18132:33:15"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18045:6:15","type":""}],"src":"17947:225:15"},{"body":{"nodeType":"YulBlock","src":"18324:220:15","statements":[{"nodeType":"YulAssignment","src":"18334:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18400:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18405:2:15","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18341:58:15"},"nodeType":"YulFunctionCall","src":"18341:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18334:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18506:3:15"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"18417:88:15"},"nodeType":"YulFunctionCall","src":"18417:93:15"},"nodeType":"YulExpressionStatement","src":"18417:93:15"},{"nodeType":"YulAssignment","src":"18519:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18530:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18535:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18526:3:15"},"nodeType":"YulFunctionCall","src":"18526:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18519:3:15"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18312:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18320:3:15","type":""}],"src":"18178:366:15"},{"body":{"nodeType":"YulBlock","src":"18721:248:15","statements":[{"nodeType":"YulAssignment","src":"18731:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18743:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18754:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18739:3:15"},"nodeType":"YulFunctionCall","src":"18739:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18731:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18778:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18789:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18774:3:15"},"nodeType":"YulFunctionCall","src":"18774:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18797:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"18803:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18793:3:15"},"nodeType":"YulFunctionCall","src":"18793:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18767:6:15"},"nodeType":"YulFunctionCall","src":"18767:47:15"},"nodeType":"YulExpressionStatement","src":"18767:47:15"},{"nodeType":"YulAssignment","src":"18823:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18957:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18831:124:15"},"nodeType":"YulFunctionCall","src":"18831:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18823:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18701:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18716:4:15","type":""}],"src":"18550:419:15"},{"body":{"nodeType":"YulBlock","src":"19081:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19103:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"19111:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19099:3:15"},"nodeType":"YulFunctionCall","src":"19099:14:15"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"19115:34:15","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19092:6:15"},"nodeType":"YulFunctionCall","src":"19092:58:15"},"nodeType":"YulExpressionStatement","src":"19092:58:15"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19073:6:15","type":""}],"src":"18975:182:15"},{"body":{"nodeType":"YulBlock","src":"19309:220:15","statements":[{"nodeType":"YulAssignment","src":"19319:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19385:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19390:2:15","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19326:58:15"},"nodeType":"YulFunctionCall","src":"19326:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19319:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19491:3:15"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"19402:88:15"},"nodeType":"YulFunctionCall","src":"19402:93:15"},"nodeType":"YulExpressionStatement","src":"19402:93:15"},{"nodeType":"YulAssignment","src":"19504:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19515:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19520:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19511:3:15"},"nodeType":"YulFunctionCall","src":"19511:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19504:3:15"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"19297:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"19305:3:15","type":""}],"src":"19163:366:15"},{"body":{"nodeType":"YulBlock","src":"19706:248:15","statements":[{"nodeType":"YulAssignment","src":"19716:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19728:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19739:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19724:3:15"},"nodeType":"YulFunctionCall","src":"19724:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19716:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19763:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19774:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19759:3:15"},"nodeType":"YulFunctionCall","src":"19759:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19782:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"19788:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19778:3:15"},"nodeType":"YulFunctionCall","src":"19778:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19752:6:15"},"nodeType":"YulFunctionCall","src":"19752:47:15"},"nodeType":"YulExpressionStatement","src":"19752:47:15"},{"nodeType":"YulAssignment","src":"19808:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19942:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19816:124:15"},"nodeType":"YulFunctionCall","src":"19816:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19808:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19686:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19701:4:15","type":""}],"src":"19535:419:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n // struct PaycrestSettingManager.Institution\n function abi_decode_t_struct$_Institution_$3529_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x40) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x40)\n\n {\n // code\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n {\n // name\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x40))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x40) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_struct$_Institution_$3529_memory_ptr(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_struct$_Institution_$3529_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bytes32t_addresst_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(memPtr) {\n\n mstore(add(memPtr, 0), \"Paycrest: zero address\")\n\n }\n\n function abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function array_length_t_bytes_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len) {\n\n let newLen := array_length_t_bytes_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100eb57806399e3c0b414610109578063cb79455b14610125578063f2fde38b1461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b357806384630736146100cf575b600080fd5b6100a760048036038101906100a29190610a3a565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610af4565b610285565b005b6100e960048036038101906100e49190610b74565b6103d2565b005b6100f361043d565b6040516101009190610bb0565b60405180910390f35b610123600480360381019061011e9190610c03565b610467565b005b61013f600480360381019061013a9190610cb1565b61061c565b005b61015b60048036038101906101569190610cfe565b610673565b005b6101656106f6565b60008151905060005b8181101561026b57609d600085815260200190815260200160002083828151811061019c5761019b610d2b565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d2b565b5b602002602001015160200151815260200185815250609e600085848151811061022d5761022c610d2b565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b6102796106f6565b6102836000610774565b565b61028d6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610db7565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6103da6106f6565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a9816040516104329190610de6565b60405180910390a150565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61046f6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d590610db7565b60405180910390fd5b7f746f6b656e000000000000000000000000000000000000000000000000000000830361055d5780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105dc5780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161060f93929190610e1f565b60405180910390a1505050565b6106246106f6565b818160689182610635929190611077565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051610667929190611194565b60405180910390a15050565b61067b6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e19061122a565b60405180910390fd5b6106f381610774565b50565b6106fe61083a565b73ffffffffffffffffffffffffffffffffffffffff1661071c61043d565b73ffffffffffffffffffffffffffffffffffffffff1614610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611296565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61086981610856565b811461087457600080fd5b50565b60008135905061088681610860565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6108da82610891565b810181811067ffffffffffffffff821117156108f9576108f86108a2565b5b80604052505050565b600061090c610842565b905061091882826108d1565b919050565b600067ffffffffffffffff821115610938576109376108a2565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109695761096861094e565b5b6109736040610902565b9050600061098384828501610877565b600083015250602061099784828501610877565b60208301525092915050565b60006109b66109b18461091d565b610902565b905080838252602082019050604084028301858111156109d9576109d8610949565b5b835b81811015610a0257806109ee8882610953565b8452602084019350506040810190506109db565b5050509392505050565b600082601f830112610a2157610a2061088c565b5b8135610a318482602086016109a3565b91505092915050565b60008060408385031215610a5157610a5061084c565b5b6000610a5f85828601610877565b925050602083013567ffffffffffffffff811115610a8057610a7f610851565b5b610a8c85828601610a0c565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ac182610a96565b9050919050565b610ad181610ab6565b8114610adc57600080fd5b50565b600081359050610aee81610ac8565b92915050565b60008060408385031215610b0b57610b0a61084c565b5b6000610b1985828601610877565b9250506020610b2a85828601610adf565b9150509250929050565b600067ffffffffffffffff82169050919050565b610b5181610b34565b8114610b5c57600080fd5b50565b600081359050610b6e81610b48565b92915050565b600060208284031215610b8a57610b8961084c565b5b6000610b9884828501610b5f565b91505092915050565b610baa81610ab6565b82525050565b6000602082019050610bc56000830184610ba1565b92915050565b60008115159050919050565b610be081610bcb565b8114610beb57600080fd5b50565b600081359050610bfd81610bd7565b92915050565b600080600060608486031215610c1c57610c1b61084c565b5b6000610c2a86828701610877565b9350506020610c3b86828701610adf565b9250506040610c4c86828701610bee565b9150509250925092565b600080fd5b60008083601f840112610c7157610c7061088c565b5b8235905067ffffffffffffffff811115610c8e57610c8d610c56565b5b602083019150836001820283011115610caa57610ca9610949565b5b9250929050565b60008060208385031215610cc857610cc761084c565b5b600083013567ffffffffffffffff811115610ce657610ce5610851565b5b610cf285828601610c5b565b92509250509250929050565b600060208284031215610d1457610d1361084c565b5b6000610d2284828501610adf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610da1601683610d5a565b9150610dac82610d6b565b602082019050919050565b60006020820190508181036000830152610dd081610d94565b9050919050565b610de081610b34565b82525050565b6000602082019050610dfb6000830184610dd7565b92915050565b610e0a81610856565b82525050565b610e1981610bcb565b82525050565b6000606082019050610e346000830186610e01565b610e416020830185610ba1565b610e4e6040830184610e10565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ea857607f821691505b602082108103610ebb57610eba610e61565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610ee6565b610f2d8683610ee6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610f74610f6f610f6a84610f45565b610f4f565b610f45565b9050919050565b6000819050919050565b610f8e83610f59565b610fa2610f9a82610f7b565b848454610ef3565b825550505050565b600090565b610fb7610faa565b610fc2818484610f85565b505050565b5b81811015610fe657610fdb600082610faf565b600181019050610fc8565b5050565b601f82111561102b57610ffc81610ec1565b61100584610ed6565b81016020851015611014578190505b61102861102085610ed6565b830182610fc7565b50505b505050565b600082821c905092915050565b600061104e60001984600802611030565b1980831691505092915050565b6000611067838361103d565b9150826002028217905092915050565b6110818383610e56565b67ffffffffffffffff81111561109a576110996108a2565b5b6110a48254610e90565b6110af828285610fea565b6000601f8311600181146110de57600084156110cc578287013590505b6110d6858261105b565b86555061113e565b601f1984166110ec86610ec1565b60005b82811015611114578489013582556001820191506020850194506020810190506110ef565b86831015611131578489013561112d601f89168261103d565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111738385611147565b9350611180838584611158565b61118983610891565b840190509392505050565b600060208201905081810360008301526111af818486611167565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611214602683610d5a565b915061121f826111b8565b604082019050919050565b6000602082019050818103600083015261124381611207565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611280602083610d5a565b915061128b8261124a565b602082019050919050565b600060208201905081810360008301526112af81611273565b905091905056fea264697066735822122050b41f080926bf4f9f186583798e139b279542447fd028eba1d461cde298594564736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x141 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x32200882 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x84630736 EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH2 0x3D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF3 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x100 SWAP2 SWAP1 PUSH2 0xBB0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x11E SWAP2 SWAP1 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x467 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13A SWAP2 SWAP1 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x61C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0xCFE JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x165 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x9D PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19C JUMPI PUSH2 0x19B PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x201 JUMPI PUSH2 0x200 PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9E PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x22D JUMPI PUSH2 0x22C PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x16E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x279 PUSH2 0x6F6 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x0 PUSH2 0x774 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x365 JUMPI DUP1 PUSH1 0x66 PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x3CE JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x6F6 JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC8CA786C100BC62A0DFFBE768B5F0B770D84E8604C5DE54B54197B9066BB42A9 DUP2 PUSH1 0x40 MLOAD PUSH2 0x432 SWAP2 SWAP1 PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x46F PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D5 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x55D JUMPI DUP1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x5DC JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x60F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x624 PUSH2 0x6F6 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x68 SWAP2 DUP3 PUSH2 0x635 SWAP3 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x667 SWAP3 SWAP2 SWAP1 PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x67B PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6E1 SWAP1 PUSH2 0x122A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6F3 DUP2 PUSH2 0x774 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6FE PUSH2 0x83A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x71C PUSH2 0x43D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x772 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x769 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x869 DUP2 PUSH2 0x856 JUMP JUMPDEST DUP2 EQ PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x886 DUP2 PUSH2 0x860 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x8DA DUP3 PUSH2 0x891 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x8F9 JUMPI PUSH2 0x8F8 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90C PUSH2 0x842 JUMP JUMPDEST SWAP1 POP PUSH2 0x918 DUP3 DUP3 PUSH2 0x8D1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x938 JUMPI PUSH2 0x937 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x969 JUMPI PUSH2 0x968 PUSH2 0x94E JUMP JUMPDEST JUMPDEST PUSH2 0x973 PUSH1 0x40 PUSH2 0x902 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x983 DUP5 DUP3 DUP6 ADD PUSH2 0x877 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x997 DUP5 DUP3 DUP6 ADD PUSH2 0x877 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B6 PUSH2 0x9B1 DUP5 PUSH2 0x91D JUMP JUMPDEST PUSH2 0x902 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x9D9 JUMPI PUSH2 0x9D8 PUSH2 0x949 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA02 JUMPI DUP1 PUSH2 0x9EE DUP9 DUP3 PUSH2 0x953 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x9DB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA21 JUMPI PUSH2 0xA20 PUSH2 0x88C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA31 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA51 JUMPI PUSH2 0xA50 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA5F DUP6 DUP3 DUP7 ADD PUSH2 0x877 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA80 JUMPI PUSH2 0xA7F PUSH2 0x851 JUMP JUMPDEST JUMPDEST PUSH2 0xA8C DUP6 DUP3 DUP7 ADD PUSH2 0xA0C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC1 DUP3 PUSH2 0xA96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAD1 DUP2 PUSH2 0xAB6 JUMP JUMPDEST DUP2 EQ PUSH2 0xADC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xAEE DUP2 PUSH2 0xAC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB0B JUMPI PUSH2 0xB0A PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB19 DUP6 DUP3 DUP7 ADD PUSH2 0x877 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB2A DUP6 DUP3 DUP7 ADD PUSH2 0xADF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB51 DUP2 PUSH2 0xB34 JUMP JUMPDEST DUP2 EQ PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB6E DUP2 PUSH2 0xB48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB8A JUMPI PUSH2 0xB89 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB98 DUP5 DUP3 DUP6 ADD PUSH2 0xB5F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBAA DUP2 PUSH2 0xAB6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBC5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBA1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBE0 DUP2 PUSH2 0xBCB JUMP JUMPDEST DUP2 EQ PUSH2 0xBEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBFD DUP2 PUSH2 0xBD7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC1C JUMPI PUSH2 0xC1B PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC2A DUP7 DUP3 DUP8 ADD PUSH2 0x877 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC3B DUP7 DUP3 DUP8 ADD PUSH2 0xADF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xC4C DUP7 DUP3 DUP8 ADD PUSH2 0xBEE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC71 JUMPI PUSH2 0xC70 PUSH2 0x88C JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC8E JUMPI PUSH2 0xC8D PUSH2 0xC56 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xCAA JUMPI PUSH2 0xCA9 PUSH2 0x949 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCC8 JUMPI PUSH2 0xCC7 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCE6 JUMPI PUSH2 0xCE5 PUSH2 0x851 JUMP JUMPDEST JUMPDEST PUSH2 0xCF2 DUP6 DUP3 DUP7 ADD PUSH2 0xC5B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD14 JUMPI PUSH2 0xD13 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD22 DUP5 DUP3 DUP6 ADD PUSH2 0xADF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA1 PUSH1 0x16 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0xDAC DUP3 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xDD0 DUP2 PUSH2 0xD94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDE0 DUP2 PUSH2 0xB34 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDFB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDD7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE0A DUP2 PUSH2 0x856 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE19 DUP2 PUSH2 0xBCB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xE34 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0xE41 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0xE4E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE10 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEA8 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEBB JUMPI PUSH2 0xEBA PUSH2 0xE61 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF23 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0xF2D DUP7 DUP4 PUSH2 0xEE6 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF74 PUSH2 0xF6F PUSH2 0xF6A DUP5 PUSH2 0xF45 JUMP JUMPDEST PUSH2 0xF4F JUMP JUMPDEST PUSH2 0xF45 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF8E DUP4 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0xFA2 PUSH2 0xF9A DUP3 PUSH2 0xF7B JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xEF3 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFB7 PUSH2 0xFAA JUMP JUMPDEST PUSH2 0xFC2 DUP2 DUP5 DUP5 PUSH2 0xF85 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFE6 JUMPI PUSH2 0xFDB PUSH1 0x0 DUP3 PUSH2 0xFAF JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xFC8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x102B JUMPI PUSH2 0xFFC DUP2 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x1005 DUP5 PUSH2 0xED6 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1014 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1028 PUSH2 0x1020 DUP6 PUSH2 0xED6 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0xFC7 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x104E PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1030 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1067 DUP4 DUP4 PUSH2 0x103D JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1081 DUP4 DUP4 PUSH2 0xE56 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109A JUMPI PUSH2 0x1099 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST PUSH2 0x10A4 DUP3 SLOAD PUSH2 0xE90 JUMP JUMPDEST PUSH2 0x10AF DUP3 DUP3 DUP6 PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x10DE JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x10CC JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x10D6 DUP6 DUP3 PUSH2 0x105B JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x113E JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x10EC DUP7 PUSH2 0xEC1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1114 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10EF JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x1131 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x112D PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x103D JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1173 DUP4 DUP6 PUSH2 0x1147 JUMP JUMPDEST SWAP4 POP PUSH2 0x1180 DUP4 DUP6 DUP5 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1189 DUP4 PUSH2 0x891 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11AF DUP2 DUP5 DUP7 PUSH2 0x1167 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1214 PUSH1 0x26 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0x121F DUP3 PUSH2 0x11B8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1243 DUP2 PUSH2 0x1207 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1280 PUSH1 0x20 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0x128B DUP3 PUSH2 0x124A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x12AF DUP2 PUSH2 0x1273 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0xB4 0x1F ADDMOD MULMOD 0x26 0xBF 0x4F SWAP16 XOR PUSH6 0x83798E139B27 SWAP6 TIMESTAMP PREVRANDAO PUSH32 0xD028EBA1D461CDE298594564736F6C6343000812003300000000000000000000 ","sourceMap":"139:2737:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1751:500;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2064:101:0;;;:::i;:::-;;2443:263:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2257:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1441:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1401:344:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2712:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2314:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1751:500:13;1334:13:0;:11;:13::i;:::-;1868:14:13::1;1885:12;:19;1868:36;;1919:6;1914:331;1935:6;1931:1;:10;1914:331;;;1959:21;:31;1981:8;1959:31;;;;;;;;;;;1996:12;2009:1;1996:15;;;;;;;;:::i;:::-;;;;;;;;1959:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2078:97;;;;;;;;2120:12;2133:1;2120:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2078:97;;;;2152:8;2078:97;;::::0;2026:27:::1;:49;2054:12;2067:1;2054:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2026:49;;;;;;;;;;;:149;;;;;;;;;;;;;;;;;;;2217:3;;;;;;;1914:331;;;;1857:394;1751:500:::0;;:::o;2064:101:0:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;2443:263:13:-;1334:13:0;:11;:13::i;:::-;2559:1:13::1;2542:19;;:5;:19;;::::0;2534:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2602:13;:4;:13:::0;2598:39:::1;;2632:5;2617:12;;:20;;;;;;;;;;;;;;;;;;2598:39;2651:20;:4;:20:::0;2647:52:::1;;2694:5;2673:18;;:26;;;;;;;;;;;;;;;;;;2647:52;2443:263:::0;;:::o;2257:180::-;1334:13:0;:11;:13::i;:::-;2363:19:13::1;2342:18;;:40;;;;;;;;;;;;;;;;;;2397:33;2410:19;2397:33;;;;;;:::i;:::-;;;;;;;;2257:180:::0;:::o;1441:85:0:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;1401:344:13:-;1334:13:0;:11;:13::i;:::-;1525:1:13::1;1508:19;;:5;:19;;::::0;1500:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1568:15;:4;:15:::0;1564:54:::1;;1612:6;1585:17;:24;1603:5;1585:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1564:54;1632:19;:4;:19:::0;1628:55:::1;;1677:6;1653:14;:21;1668:5;1653:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1628:55;1699:39;1718:4;1724:5;1731:6;1699:39;;;;;;;;:::i;:::-;;;;;;;;1401:344:::0;;;:::o;2712:161::-;1334:13:0;:11;:13::i;:::-;2816:10:13::1;;2802:11;:24;;;;;;;:::i;:::-;;2841:25;2855:10;;2841:25;;;;;;;:::i;:::-;;;;;;;;2712:161:::0;;:::o;2314:198:0:-;1334:13;:11;:13::i;:::-;2422:1:::1;2402:22;;:8;:22;;::::0;2394:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:28;2496:8;2477:18;:28::i;:::-;2314:198:::0;:::o;1599:130::-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;2666:187::-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;850:96:6:-;903:7;929:10;922:17;;850:96;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;813:102;854:6;905:2;901:7;896:2;889:5;885:14;881:28;871:38;;813:102;;;:::o;921:180::-;969:77;966:1;959:88;1066:4;1063:1;1056:15;1090:4;1087:1;1080:15;1107:281;1190:27;1212:4;1190:27;:::i;:::-;1182:6;1178:40;1320:6;1308:10;1305:22;1284:18;1272:10;1269:34;1266:62;1263:88;;;1331:18;;:::i;:::-;1263:88;1371:10;1367:2;1360:22;1150:238;1107:281;;:::o;1394:129::-;1428:6;1455:20;;:::i;:::-;1445:30;;1484:33;1512:4;1504:6;1484:33;:::i;:::-;1394:129;;;:::o;1529:340::-;1635:4;1725:18;1717:6;1714:30;1711:56;;;1747:18;;:::i;:::-;1711:56;1797:4;1789:6;1785:17;1777:25;;1857:4;1851;1847:15;1839:23;;1529:340;;;:::o;1875:117::-;1984:1;1981;1974:12;1998:117;2107:1;2104;2097:12;2293:578;2371:5;2415:4;2403:9;2398:3;2394:19;2390:30;2387:117;;;2423:79;;:::i;:::-;2387:117;2522:21;2538:4;2522:21;:::i;:::-;2513:30;;2602:1;2642:49;2687:3;2678:6;2667:9;2663:22;2642:49;:::i;:::-;2635:4;2628:5;2624:16;2617:75;2553:150;2762:2;2803:49;2848:3;2839:6;2828:9;2824:22;2803:49;:::i;:::-;2796:4;2789:5;2785:16;2778:75;2713:151;2293:578;;;;:::o;2928:797::-;3053:5;3078:110;3094:93;3180:6;3094:93;:::i;:::-;3078:110;:::i;:::-;3069:119;;3208:5;3237:6;3230:5;3223:21;3271:4;3264:5;3260:16;3253:23;;3324:4;3316:6;3312:17;3304:6;3300:30;3353:3;3345:6;3342:15;3339:122;;;3372:79;;:::i;:::-;3339:122;3487:6;3470:249;3504:6;3499:3;3496:15;3470:249;;;3579:3;3608:66;3670:3;3658:10;3608:66;:::i;:::-;3603:3;3596:79;3704:4;3699:3;3695:14;3688:21;;3546:173;3530:4;3525:3;3521:14;3514:21;;3470:249;;;3474:21;3059:666;;2928:797;;;;;:::o;3782:428::-;3882:5;3931:3;3924:4;3916:6;3912:17;3908:27;3898:122;;3939:79;;:::i;:::-;3898:122;4056:6;4043:20;4081:123;4200:3;4192:6;4185:4;4177:6;4173:17;4081:123;:::i;:::-;4072:132;;3888:322;3782:428;;;;:::o;4216:742::-;4338:6;4346;4395:2;4383:9;4374:7;4370:23;4366:32;4363:119;;;4401:79;;:::i;:::-;4363:119;4521:1;4546:53;4591:7;4582:6;4571:9;4567:22;4546:53;:::i;:::-;4536:63;;4492:117;4676:2;4665:9;4661:18;4648:32;4707:18;4699:6;4696:30;4693:117;;;4729:79;;:::i;:::-;4693:117;4834:107;4933:7;4924:6;4913:9;4909:22;4834:107;:::i;:::-;4824:117;;4619:332;4216:742;;;;;:::o;4964:126::-;5001:7;5041:42;5034:5;5030:54;5019:65;;4964:126;;;:::o;5096:96::-;5133:7;5162:24;5180:5;5162:24;:::i;:::-;5151:35;;5096:96;;;:::o;5198:122::-;5271:24;5289:5;5271:24;:::i;:::-;5264:5;5261:35;5251:63;;5310:1;5307;5300:12;5251:63;5198:122;:::o;5326:139::-;5372:5;5410:6;5397:20;5388:29;;5426:33;5453:5;5426:33;:::i;:::-;5326:139;;;;:::o;5471:474::-;5539:6;5547;5596:2;5584:9;5575:7;5571:23;5567:32;5564:119;;;5602:79;;:::i;:::-;5564:119;5722:1;5747:53;5792:7;5783:6;5772:9;5768:22;5747:53;:::i;:::-;5737:63;;5693:117;5849:2;5875:53;5920:7;5911:6;5900:9;5896:22;5875:53;:::i;:::-;5865:63;;5820:118;5471:474;;;;;:::o;5951:101::-;5987:7;6027:18;6020:5;6016:30;6005:41;;5951:101;;;:::o;6058:120::-;6130:23;6147:5;6130:23;:::i;:::-;6123:5;6120:34;6110:62;;6168:1;6165;6158:12;6110:62;6058:120;:::o;6184:137::-;6229:5;6267:6;6254:20;6245:29;;6283:32;6309:5;6283:32;:::i;:::-;6184:137;;;;:::o;6327:327::-;6385:6;6434:2;6422:9;6413:7;6409:23;6405:32;6402:119;;;6440:79;;:::i;:::-;6402:119;6560:1;6585:52;6629:7;6620:6;6609:9;6605:22;6585:52;:::i;:::-;6575:62;;6531:116;6327:327;;;;:::o;6660:118::-;6747:24;6765:5;6747:24;:::i;:::-;6742:3;6735:37;6660:118;;:::o;6784:222::-;6877:4;6915:2;6904:9;6900:18;6892:26;;6928:71;6996:1;6985:9;6981:17;6972:6;6928:71;:::i;:::-;6784:222;;;;:::o;7012:90::-;7046:7;7089:5;7082:13;7075:21;7064:32;;7012:90;;;:::o;7108:116::-;7178:21;7193:5;7178:21;:::i;:::-;7171:5;7168:32;7158:60;;7214:1;7211;7204:12;7158:60;7108:116;:::o;7230:133::-;7273:5;7311:6;7298:20;7289:29;;7327:30;7351:5;7327:30;:::i;:::-;7230:133;;;;:::o;7369:613::-;7443:6;7451;7459;7508:2;7496:9;7487:7;7483:23;7479:32;7476:119;;;7514:79;;:::i;:::-;7476:119;7634:1;7659:53;7704:7;7695:6;7684:9;7680:22;7659:53;:::i;:::-;7649:63;;7605:117;7761:2;7787:53;7832:7;7823:6;7812:9;7808:22;7787:53;:::i;:::-;7777:63;;7732:118;7889:2;7915:50;7957:7;7948:6;7937:9;7933:22;7915:50;:::i;:::-;7905:60;;7860:115;7369:613;;;;;:::o;7988:117::-;8097:1;8094;8087:12;8124:552;8181:8;8191:6;8241:3;8234:4;8226:6;8222:17;8218:27;8208:122;;8249:79;;:::i;:::-;8208:122;8362:6;8349:20;8339:30;;8392:18;8384:6;8381:30;8378:117;;;8414:79;;:::i;:::-;8378:117;8528:4;8520:6;8516:17;8504:29;;8582:3;8574:4;8566:6;8562:17;8552:8;8548:32;8545:41;8542:128;;;8589:79;;:::i;:::-;8542:128;8124:552;;;;;:::o;8682:527::-;8752:6;8760;8809:2;8797:9;8788:7;8784:23;8780:32;8777:119;;;8815:79;;:::i;:::-;8777:119;8963:1;8952:9;8948:17;8935:31;8993:18;8985:6;8982:30;8979:117;;;9015:79;;:::i;:::-;8979:117;9128:64;9184:7;9175:6;9164:9;9160:22;9128:64;:::i;:::-;9110:82;;;;8906:296;8682:527;;;;;:::o;9215:329::-;9274:6;9323:2;9311:9;9302:7;9298:23;9294:32;9291:119;;;9329:79;;:::i;:::-;9291:119;9449:1;9474:53;9519:7;9510:6;9499:9;9495:22;9474:53;:::i;:::-;9464:63;;9420:117;9215:329;;;;:::o;9550:180::-;9598:77;9595:1;9588:88;9695:4;9692:1;9685:15;9719:4;9716:1;9709:15;9736:169;9820:11;9854:6;9849:3;9842:19;9894:4;9889:3;9885:14;9870:29;;9736:169;;;;:::o;9911:172::-;10051:24;10047:1;10039:6;10035:14;10028:48;9911:172;:::o;10089:366::-;10231:3;10252:67;10316:2;10311:3;10252:67;:::i;:::-;10245:74;;10328:93;10417:3;10328:93;:::i;:::-;10446:2;10441:3;10437:12;10430:19;;10089:366;;;:::o;10461:419::-;10627:4;10665:2;10654:9;10650:18;10642:26;;10714:9;10708:4;10704:20;10700:1;10689:9;10685:17;10678:47;10742:131;10868:4;10742:131;:::i;:::-;10734:139;;10461:419;;;:::o;10886:115::-;10971:23;10988:5;10971:23;:::i;:::-;10966:3;10959:36;10886:115;;:::o;11007:218::-;11098:4;11136:2;11125:9;11121:18;11113:26;;11149:69;11215:1;11204:9;11200:17;11191:6;11149:69;:::i;:::-;11007:218;;;;:::o;11231:118::-;11318:24;11336:5;11318:24;:::i;:::-;11313:3;11306:37;11231:118;;:::o;11355:109::-;11436:21;11451:5;11436:21;:::i;:::-;11431:3;11424:34;11355:109;;:::o;11470:430::-;11613:4;11651:2;11640:9;11636:18;11628:26;;11664:71;11732:1;11721:9;11717:17;11708:6;11664:71;:::i;:::-;11745:72;11813:2;11802:9;11798:18;11789:6;11745:72;:::i;:::-;11827:66;11889:2;11878:9;11874:18;11865:6;11827:66;:::i;:::-;11470:430;;;;;;:::o;11906:96::-;11964:6;11992:3;11982:13;;11906:96;;;;:::o;12008:180::-;12056:77;12053:1;12046:88;12153:4;12150:1;12143:15;12177:4;12174:1;12167:15;12194:320;12238:6;12275:1;12269:4;12265:12;12255:22;;12322:1;12316:4;12312:12;12343:18;12333:81;;12399:4;12391:6;12387:17;12377:27;;12333:81;12461:2;12453:6;12450:14;12430:18;12427:38;12424:84;;12480:18;;:::i;:::-;12424:84;12245:269;12194:320;;;:::o;12520:140::-;12568:4;12591:3;12583:11;;12614:3;12611:1;12604:14;12648:4;12645:1;12635:18;12627:26;;12520:140;;;:::o;12666:93::-;12703:6;12750:2;12745;12738:5;12734:14;12730:23;12720:33;;12666:93;;;:::o;12765:107::-;12809:8;12859:5;12853:4;12849:16;12828:37;;12765:107;;;;:::o;12878:393::-;12947:6;12997:1;12985:10;12981:18;13020:97;13050:66;13039:9;13020:97;:::i;:::-;13138:39;13168:8;13157:9;13138:39;:::i;:::-;13126:51;;13210:4;13206:9;13199:5;13195:21;13186:30;;13259:4;13249:8;13245:19;13238:5;13235:30;13225:40;;12954:317;;12878:393;;;;;:::o;13277:77::-;13314:7;13343:5;13332:16;;13277:77;;;:::o;13360:60::-;13388:3;13409:5;13402:12;;13360:60;;;:::o;13426:142::-;13476:9;13509:53;13527:34;13536:24;13554:5;13536:24;:::i;:::-;13527:34;:::i;:::-;13509:53;:::i;:::-;13496:66;;13426:142;;;:::o;13574:75::-;13617:3;13638:5;13631:12;;13574:75;;;:::o;13655:269::-;13765:39;13796:7;13765:39;:::i;:::-;13826:91;13875:41;13899:16;13875:41;:::i;:::-;13867:6;13860:4;13854:11;13826:91;:::i;:::-;13820:4;13813:105;13731:193;13655:269;;;:::o;13930:73::-;13975:3;13930:73;:::o;14009:189::-;14086:32;;:::i;:::-;14127:65;14185:6;14177;14171:4;14127:65;:::i;:::-;14062:136;14009:189;;:::o;14204:186::-;14264:120;14281:3;14274:5;14271:14;14264:120;;;14335:39;14372:1;14365:5;14335:39;:::i;:::-;14308:1;14301:5;14297:13;14288:22;;14264:120;;;14204:186;;:::o;14396:541::-;14496:2;14491:3;14488:11;14485:445;;;14530:37;14561:5;14530:37;:::i;:::-;14613:29;14631:10;14613:29;:::i;:::-;14603:8;14599:44;14796:2;14784:10;14781:18;14778:49;;;14817:8;14802:23;;14778:49;14840:80;14896:22;14914:3;14896:22;:::i;:::-;14886:8;14882:37;14869:11;14840:80;:::i;:::-;14500:430;;14485:445;14396:541;;;:::o;14943:117::-;14997:8;15047:5;15041:4;15037:16;15016:37;;14943:117;;;;:::o;15066:169::-;15110:6;15143:51;15191:1;15187:6;15179:5;15176:1;15172:13;15143:51;:::i;:::-;15139:56;15224:4;15218;15214:15;15204:25;;15117:118;15066:169;;;;:::o;15240:295::-;15316:4;15462:29;15487:3;15481:4;15462:29;:::i;:::-;15454:37;;15524:3;15521:1;15517:11;15511:4;15508:21;15500:29;;15240:295;;;;:::o;15540:1398::-;15662:43;15701:3;15696;15662:43;:::i;:::-;15770:18;15762:6;15759:30;15756:56;;;15792:18;;:::i;:::-;15756:56;15836:38;15868:4;15862:11;15836:38;:::i;:::-;15921:66;15980:6;15972;15966:4;15921:66;:::i;:::-;16014:1;16043:2;16035:6;16032:14;16060:1;16055:631;;;;16730:1;16747:6;16744:84;;;16803:9;16798:3;16794:19;16781:33;16772:42;;16744:84;16854:67;16914:6;16907:5;16854:67;:::i;:::-;16848:4;16841:81;16703:229;16025:907;;16055:631;16107:4;16103:9;16095:6;16091:22;16141:36;16172:4;16141:36;:::i;:::-;16199:1;16213:215;16227:7;16224:1;16221:14;16213:215;;;16313:9;16308:3;16304:19;16291:33;16283:6;16276:49;16364:1;16356:6;16352:14;16342:24;;16411:2;16400:9;16396:18;16383:31;;16250:4;16247:1;16243:12;16238:17;;16213:215;;;16456:6;16447:7;16444:19;16441:186;;;16521:9;16516:3;16512:19;16499:33;16564:48;16606:4;16598:6;16594:17;16583:9;16564:48;:::i;:::-;16556:6;16549:64;16464:163;16441:186;16673:1;16669;16661:6;16657:14;16653:22;16647:4;16640:36;16062:624;;;16025:907;;15637:1301;;;15540:1398;;;:::o;16944:168::-;17027:11;17061:6;17056:3;17049:19;17101:4;17096:3;17092:14;17077:29;;16944:168;;;;:::o;17118:146::-;17215:6;17210:3;17205;17192:30;17256:1;17247:6;17242:3;17238:16;17231:27;17118:146;;;:::o;17292:314::-;17388:3;17409:70;17472:6;17467:3;17409:70;:::i;:::-;17402:77;;17489:56;17538:6;17533:3;17526:5;17489:56;:::i;:::-;17570:29;17592:6;17570:29;:::i;:::-;17565:3;17561:39;17554:46;;17292:314;;;;;:::o;17612:329::-;17733:4;17771:2;17760:9;17756:18;17748:26;;17820:9;17814:4;17810:20;17806:1;17795:9;17791:17;17784:47;17848:86;17929:4;17920:6;17912;17848:86;:::i;:::-;17840:94;;17612:329;;;;;:::o;17947:225::-;18087:34;18083:1;18075:6;18071:14;18064:58;18156:8;18151:2;18143:6;18139:15;18132:33;17947:225;:::o;18178:366::-;18320:3;18341:67;18405:2;18400:3;18341:67;:::i;:::-;18334:74;;18417:93;18506:3;18417:93;:::i;:::-;18535:2;18530:3;18526:12;18519:19;;18178:366;;;:::o;18550:419::-;18716:4;18754:2;18743:9;18739:18;18731:26;;18803:9;18797:4;18793:20;18789:1;18778:9;18774:17;18767:47;18831:131;18957:4;18831:131;:::i;:::-;18823:139;;18550:419;;;:::o;18975:182::-;19115:34;19111:1;19103:6;19099:14;19092:58;18975:182;:::o;19163:366::-;19305:3;19326:67;19390:2;19385:3;19326:67;:::i;:::-;19319:74;;19402:93;19491:3;19402:93;:::i;:::-;19520:2;19515:3;19511:12;19504:19;;19163:366;;;:::o;19535:419::-;19701:4;19739:2;19728:9;19724:18;19716:26;;19788:9;19782:4;19778:20;19774:1;19763:9;19759:17;19752:47;19816:131;19942:4;19816:131;:::i;:::-;19808:139;;19535:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"968800","executionCost":"1008","totalCost":"969808"},"external":{"owner()":"2522","renounceOwnership()":"30421","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"infinite","settingManagerBool(bytes32,address,bool)":"infinite","transferOwnership(address)":"30810","updateProtocolAddresses(bytes32,address)":"51602","updateProtocolAggregator(bytes)":"infinite","updateProtocolFees(uint64)":"infinite"}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"32200882","settingManagerBool(bytes32,address,bool)":"99e3c0b4","transferOwnership(address)":"f2fde38b","updateProtocolAddresses(bytes32,address)":"79a0effb","updateProtocolAggregator(bytes)":"cb79455b","updateProtocolFees(uint64)":"84630736"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"protocolFee\",\"type\":\"uint64\"}],\"name\":\"PaycrestFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"SetAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"SetFeeRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SettingManagerBool\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"institutions\",\"type\":\"tuple[]\"}],\"name\":\"setSupportedInstitutions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"settingManagerBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"updateProtocolAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"updateProtocolAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_protocolFeePercent\",\"type\":\"uint64\"}],\"name\":\"updateProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PaycrestSettingManager.sol\":\"PaycrestSettingManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"contracts/PaycrestSettingManager.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\n\\ncontract PaycrestSettingManager is OwnableUpgradeable { \\n struct Institution {\\n bytes32 code; // usually not more than 8 letters\\n bytes32 name; // \\n }\\n struct InstitutionByCode {\\n bytes32 name;\\n bytes32 currency;\\n }\\n uint256 internal MAX_BPS;\\n uint64 internal protocolFeePercent; // 5%\\n address internal feeRecipient;\\n address internal _aggregatorAddress;\\n bytes internal _aggregator;\\n \\n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\\n uint256[50] private __gap;\\n\\n mapping(address => bool) internal _isTokenSupported;\\n mapping(address => bool) internal _isWhitelisted;\\n\\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\\n\\n event SettingManagerBool(bytes32 what, address value, bool status);\\n event PaycrestFees(uint64 protocolFee);\\n event SetAggregator(bytes aggregator);\\n event SetFeeRecipient(address feeRecipient);\\n \\n /* ##################################################################\\n OWNER FUNCTIONS\\n ################################################################## */\\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"token\\\") _isTokenSupported[value] = status;\\n if (what == \\\"whitelist\\\") _isWhitelisted[value] = status;\\n\\n emit SettingManagerBool(what, value, status);\\n }\\n\\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \\n uint256 length = institutions.length;\\n for (uint i = 0; i < length; ) {\\n supportedInstitutions[currency].push(institutions[i]);\\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\\n name: institutions[i].name, currency: currency\\n });\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function updateProtocolFees(uint64 _protocolFeePercent) external onlyOwner {\\n protocolFeePercent = _protocolFeePercent;\\n emit PaycrestFees(_protocolFeePercent);\\n }\\n\\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"fee\\\") feeRecipient = value;\\n if (what == \\\"aggregator\\\") _aggregatorAddress = value;\\n }\\n\\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\\n _aggregator = aggregator;\\n emit SetAggregator(aggregator);\\n }\\n\\n}\\n\",\"keccak256\":\"0xa7a73992f19899060ce30182c809c3bd02ce01e4675de7e0ddd1701deccb25f9\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":3536,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"MAX_BPS","offset":0,"slot":"101","type":"t_uint256"},{"astId":3538,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"protocolFeePercent","offset":0,"slot":"102","type":"t_uint64"},{"astId":3540,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"feeRecipient","offset":8,"slot":"102","type":"t_address"},{"astId":3542,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_aggregatorAddress","offset":0,"slot":"103","type":"t_address"},{"astId":3544,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_aggregator","offset":0,"slot":"104","type":"t_bytes_storage"},{"astId":3548,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"105","type":"t_array(t_uint256)50_storage"},{"astId":3552,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_isTokenSupported","offset":0,"slot":"155","type":"t_mapping(t_address,t_bool)"},{"astId":3556,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_isWhitelisted","offset":0,"slot":"156","type":"t_mapping(t_address,t_bool)"},{"astId":3562,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"supportedInstitutions","offset":0,"slot":"157","type":"t_mapping(t_bytes32,t_array(t_struct(Institution)3529_storage)dyn_storage)"},{"astId":3567,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"supportedInstitutionsByCode","offset":0,"slot":"158","type":"t_mapping(t_bytes32,t_struct(InstitutionByCode)3534_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Institution)3529_storage)dyn_storage":{"base":"t_struct(Institution)3529_storage","encoding":"dynamic_array","label":"struct PaycrestSettingManager.Institution[]","numberOfBytes":"32"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_array(t_struct(Institution)3529_storage)dyn_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])","numberOfBytes":"32","value":"t_array(t_struct(Institution)3529_storage)dyn_storage"},"t_mapping(t_bytes32,t_struct(InstitutionByCode)3534_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)","numberOfBytes":"32","value":"t_struct(InstitutionByCode)3534_storage"},"t_struct(Institution)3529_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.Institution","members":[{"astId":3526,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"code","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3528,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"name","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(InstitutionByCode)3534_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.InstitutionByCode","members":[{"astId":3531,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"name","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3533,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"currency","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interface/IPaycrest.sol":{"IPaycrest":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"institutionCode","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"string","name":"messageHash","type":"string"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardValidator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"uint96","name":"settlePercent","type":"uint96"}],"name":"Settled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSenderFee","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_institutionCode","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"uint96","name":"_rate","type":"uint96"},{"internalType":"address","name":"_senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"_senderFee","type":"uint256"},{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"string","name":"messageHash","type":"string"}],"name":"createOrder","outputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAggregator","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint64","name":"protocolReward","type":"uint64"},{"internalType":"uint256","name":"max_bps","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"name":"getOrderInfo","outputs":[{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"senderFee","type":"uint256"},{"internalType":"uint96","name":"rate","type":"uint96"},{"internalType":"bool","name":"isFulfilled","type":"bool"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint96","name":"currentBPS","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPaycrest.Order","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"}],"name":"refund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"address[]","name":"_validators","type":"address[]"},{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint64","name":"_settlePercent","type":"uint64"},{"internalType":"bool","name":"_isPartner","type":"bool"}],"name":"settle","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Chef Photons, Paycrest Team serving high quality drinks; drink responsibly. Factory and global config params","events":{"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)":{"details":"Emitted when deposit is made."},"Refunded(bytes32,bytes32)":{"details":"Emitted when aggregator refund transaction."},"RewardValidator(address,uint256)":{"details":"Emitted when primary validator get therir rewards."},"Settled(bytes32,bytes32,bytes32,address,uint96)":{"details":"Emitted when aggregator settle transaction."},"TransferSenderFee(address,uint256)":{"details":"Emitted when sender get therir rewards."}},"kind":"dev","methods":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"details":"See {isTokenSupported}. `amount` must be greater than minimum `_refundable` refundable address must not be zero address","params":{"_amount":"amount in the decimal of `_token` above.","_institutionCode":"institution code of the sender.","_label":"reference of the sender.","_rate":"rate at which sender intended to sell `_amount` of `_token`.","_refundAddress":"address that is going to recieve `_amount` in `_token` when there is a need to refund.","_senderFee":"amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.","_senderFeeRecipient":"address that is going to recieve `_senderFee` in `_token` when there is a need to refund.","_token":"address of the token.","messageHash":"hash must be the result of a hash operation for the verification to be secure. message"},"returns":{"_orderId":"the bytes20 which is the orderId"}},"getAggregator()":{"returns":{"_0":"aggregator public key."}},"getAggregatorAddress()":{"returns":{"_0":"address of `Aggregator`."}},"getFeeDetails()":{"returns":{"max_bps":"maximum amount in bps \"100% == 100_000\".","protocolReward":"amount that will be taken in percentage on all trade."}},"getOrderInfo(bytes32)":{"params":{"_orderId":"transaction Id."}},"getWhitelistedStatus(address)":{"params":{"sender":"address of the sender."},"returns":{"_0":"address of `status`."}},"isTokenSupported(address)":{"params":{"_token":"address of the token to check."},"returns":{"_0":"return the status of `_token` {bool}"}},"refund(bytes32,bytes32)":{"params":{"_label":"reference of the sender.","_orderId":"transaction Id."},"returns":{"_0":"return the status of transaction {bool}"}},"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":{"params":{"_isPartner":"is the liquidity provider a partner.","_label":"reference of the sender.","_liquidityProvider":"address of the liquidity provider.","_orderId":"transaction Id.","_settlePercent":"rate at which the transaction is settled.","_validators":"arrays of secondary validators."},"returns":{"_0":"return the status of transaction {bool}"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"2654ec7e","getAggregator()":"3ad59dbc","getAggregatorAddress()":"e8d6e0de","getFeeDetails()":"b810c636","getOrderInfo(bytes32)":"768c6ec0","getWhitelistedStatus(address)":"d8e8de34","isTokenSupported(address)":"75151b63","refund(bytes32,bytes32)":"e4683a79","settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":"137764fb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"institutionCode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"Refunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"settlePercent\",\"type\":\"uint96\"}],\"name\":\"Settled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSenderFee\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_institutionCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"_rate\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"_senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_senderFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"createOrder\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"protocolReward\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"max_bps\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"name\":\"getOrderInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"rate\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"isFulfilled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"currentBPS\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaycrest.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getWhitelistedStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"}],\"name\":\"refund\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_liquidityProvider\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_settlePercent\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isPartner\",\"type\":\"bool\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Chef Photons, Paycrest Team serving high quality drinks; drink responsibly. Factory and global config params\",\"events\":{\"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)\":{\"details\":\"Emitted when deposit is made.\"},\"Refunded(bytes32,bytes32)\":{\"details\":\"Emitted when aggregator refund transaction.\"},\"RewardValidator(address,uint256)\":{\"details\":\"Emitted when primary validator get therir rewards.\"},\"Settled(bytes32,bytes32,bytes32,address,uint96)\":{\"details\":\"Emitted when aggregator settle transaction.\"},\"TransferSenderFee(address,uint256)\":{\"details\":\"Emitted when sender get therir rewards.\"}},\"kind\":\"dev\",\"methods\":{\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"details\":\"See {isTokenSupported}. `amount` must be greater than minimum `_refundable` refundable address must not be zero address\",\"params\":{\"_amount\":\"amount in the decimal of `_token` above.\",\"_institutionCode\":\"institution code of the sender.\",\"_label\":\"reference of the sender.\",\"_rate\":\"rate at which sender intended to sell `_amount` of `_token`.\",\"_refundAddress\":\"address that is going to recieve `_amount` in `_token` when there is a need to refund.\",\"_senderFee\":\"amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\",\"_senderFeeRecipient\":\"address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\",\"_token\":\"address of the token.\",\"messageHash\":\"hash must be the result of a hash operation for the verification to be secure. message\"},\"returns\":{\"_orderId\":\"the bytes20 which is the orderId\"}},\"getAggregator()\":{\"returns\":{\"_0\":\"aggregator public key.\"}},\"getAggregatorAddress()\":{\"returns\":{\"_0\":\"address of `Aggregator`.\"}},\"getFeeDetails()\":{\"returns\":{\"max_bps\":\"maximum amount in bps \\\"100% == 100_000\\\".\",\"protocolReward\":\"amount that will be taken in percentage on all trade.\"}},\"getOrderInfo(bytes32)\":{\"params\":{\"_orderId\":\"transaction Id.\"}},\"getWhitelistedStatus(address)\":{\"params\":{\"sender\":\"address of the sender.\"},\"returns\":{\"_0\":\"address of `status`.\"}},\"isTokenSupported(address)\":{\"params\":{\"_token\":\"address of the token to check.\"},\"returns\":{\"_0\":\"return the status of `_token` {bool}\"}},\"refund(bytes32,bytes32)\":{\"params\":{\"_label\":\"reference of the sender.\",\"_orderId\":\"transaction Id.\"},\"returns\":{\"_0\":\"return the status of transaction {bool}\"}},\"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)\":{\"params\":{\"_isPartner\":\"is the liquidity provider a partner.\",\"_label\":\"reference of the sender.\",\"_liquidityProvider\":\"address of the liquidity provider.\",\"_orderId\":\"transaction Id.\",\"_settlePercent\":\"rate at which the transaction is settled.\",\"_validators\":\"arrays of secondary validators.\"},\"returns\":{\"_0\":\"return the status of transaction {bool}\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"notice\":\"lock sender `_amount` of `token` into Paycrest. Requirements: `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\"},\"getAggregator()\":{\"notice\":\"get aggregator public key.\"},\"getAggregatorAddress()\":{\"notice\":\"get address of liquidity aggregator.\"},\"getFeeDetails()\":{\"notice\":\"get every rewards and address on Paycrest.\"},\"getOrderInfo(bytes32)\":{\"notice\":\"get order details.\"},\"getWhitelistedStatus(address)\":{\"notice\":\"get address of sender whitelisting status.\"},\"isTokenSupported(address)\":{\"notice\":\"get supported token from Paycrest.\"},\"refund(bytes32,bytes32)\":{\"notice\":\"refund to the specified refundable address. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `isFulfilled` must be false.\"},\"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)\":{\"notice\":\"settle transaction and distribute rewards accordingly. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `_primaryValidator` must have stake on the Paycrest staking platform. `_secondaryValidators` must have stake on the Paycrest staking platform. `amount` must be greater than minimum `_refundable` refundable address must not be zero address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interface/IPaycrest.sol\":\"IPaycrest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/interface/IPaycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n/**\\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\\n * Factory and global config params\\n */\\ninterface IPaycrest {\\n \\n /* ##################################################################\\n EVENTS\\n ################################################################## */\\n /// @dev Emitted when deposit is made.\\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\\n /// @dev Emitted when aggregator settle transaction.\\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\\n /// @dev Emitted when aggregator refund transaction.\\n event Refunded(bytes32 indexed orderId, bytes32 label);\\n /// @dev Emitted when sender get therir rewards.\\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\\n /// @dev Emitted when primary validator get therir rewards.\\n event RewardValidator(address indexed validator, uint256 indexed amount);\\n\\n /* ##################################################################\\n STRUCTS\\n ################################################################## */\\n struct TransactionMetadata {\\n bytes8 identifier; // slot 0\\n bytes8 institution; // slot 0\\n bytes8 name; // slot 0\\n bytes8 currency; // slot 0\\n uint256 liquidityProviderID; // slot 1\\n }\\n\\n struct Order {\\n address seller; // slot 0\\n address token; // slot 1\\n address senderFeeRecipient;\\n uint256 senderFee;\\n uint96 rate; // slot 1\\n bool isFulfilled; // slot 2 {11 bytes available}\\n address refundAddress; // slot 2 {12 bytes available}\\n uint96 currentBPS; // slot 2 {}\\n uint256 amount; // slot 3\\n }\\n\\n\\n /* ##################################################################\\n EXTERNAL CALLS\\n ################################################################## */\\n /// @notice lock sender `_amount` of `token` into Paycrest.\\n /// Requirements:\\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _token address of the token.\\n /// @param _amount amount in the decimal of `_token` above.\\n /// @param _institutionCode institution code of the sender.\\n /// @param _label reference of the sender.\\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\\n /// @return _orderId the bytes20 which is the orderId\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash) external returns(bytes32 _orderId);\\n\\n /// @notice settle transaction and distribute rewards accordingly.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @param _validators arrays of secondary validators.\\n /// @param _liquidityProvider address of the liquidity provider.\\n /// @param _settlePercent rate at which the transaction is settled.\\n /// @param _isPartner is the liquidity provider a partner.\\n /// @return return the status of transaction {bool}\\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\\n\\n /// @notice refund to the specified refundable address.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `isFulfilled` must be false.\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @return return the status of transaction {bool}\\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\\n\\n /// @notice get supported token from Paycrest.\\n /// @param _token address of the token to check.\\n /// @return return the status of `_token` {bool}\\n function isTokenSupported(address _token) external view returns(bool);\\n\\n /// @notice get order details.\\n /// @param _orderId transaction Id.\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\\n\\n /// @notice get every rewards and address on Paycrest.\\n /// @return protocolReward amount that will be taken in percentage on all trade.\\n /// @return max_bps maximum amount in bps \\\"100% == 100_000\\\".\\n function getFeeDetails() external view returns(\\n uint64 protocolReward, \\n uint256 max_bps\\n );\\n\\n /// @notice get address of liquidity aggregator.\\n /// @return address of `Aggregator`.\\n function getAggregatorAddress() external view returns(address);\\n\\n /// @notice get aggregator public key.\\n /// @return aggregator public key.\\n function getAggregator() external view returns(bytes memory);\\n \\n /// @notice get address of sender whitelisting status.\\n /// @param sender address of the sender.\\n /// @return address of `status`.\\n function getWhitelistedStatus(address sender) external view returns(bool);\\n\\n}\\n\",\"keccak256\":\"0x00812f530758d6736a16754a83c21f42c344651238f845ada8b6d996c7d2c051\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"notice":"lock sender `_amount` of `token` into Paycrest. Requirements: `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call."},"getAggregator()":{"notice":"get aggregator public key."},"getAggregatorAddress()":{"notice":"get address of liquidity aggregator."},"getFeeDetails()":{"notice":"get every rewards and address on Paycrest."},"getOrderInfo(bytes32)":{"notice":"get order details."},"getWhitelistedStatus(address)":{"notice":"get address of sender whitelisting status."},"isTokenSupported(address)":{"notice":"get supported token from Paycrest."},"refund(bytes32,bytes32)":{"notice":"refund to the specified refundable address. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `isFulfilled` must be false."},"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":{"notice":"settle transaction and distribute rewards accordingly. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `_primaryValidator` must have stake on the Paycrest staking platform. `_secondaryValidators` must have stake on the Paycrest staking platform. `amount` must be greater than minimum `_refundable` refundable address must not be zero address"}},"version":1}}}}}} \ No newline at end of file diff --git a/artifacts/build-info/c1e7e423d2b99f08521b07865d24a278.json b/artifacts/build-info/c1e7e423d2b99f08521b07865d24a278.json new file mode 100644 index 0000000..80d6efa --- /dev/null +++ b/artifacts/build-info/c1e7e423d2b99f08521b07865d24a278.json @@ -0,0 +1 @@ +{"id":"c1e7e423d2b99f08521b07865d24a278","_format":"hh-sol-build-info-1","solcVersion":"0.8.18","solcLongVersion":"0.8.18+commit.87f61d96","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n function __Ownable_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable_init_unchained() internal onlyInitializing {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20PermitUpgradeable {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20Upgradeable {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20Upgradeable.sol\";\nimport \"../extensions/IERC20PermitUpgradeable.sol\";\nimport \"../../../utils/AddressUpgradeable.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20Upgradeable {\n using AddressUpgradeable for address;\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n unchecked {\n uint256 oldAllowance = token.allowance(address(this), spender);\n require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n */\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n * Revert on invalid signature.\n */\n function safePermit(\n IERC20PermitUpgradeable token,\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal {\n uint256 nonceBefore = token.nonces(owner);\n token.permit(owner, spender, value, deadline, v, r, s);\n uint256 nonceAfter = token.nonces(owner);\n require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\n // and not revert is the subcall reverts.\n\n (bool success, bytes memory returndata) = address(token).call(data);\n return\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../StringsUpgradeable.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSAUpgradeable {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV // Deprecated in v4.8\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\")\n mstore(0x1c, hash)\n message := keccak256(0x00, 0x3c)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", StringsUpgradeable.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, \"\\x19\\x01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n data := keccak256(ptr, 0x42)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\n * `validator` and `data` according to the version 0 of EIP-191.\n *\n * See {recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x00\", validator, data));\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary MathUpgradeable {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMathUpgradeable {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/MathUpgradeable.sol\";\nimport \"./math/SignedMathUpgradeable.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary StringsUpgradeable {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = MathUpgradeable.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMathUpgradeable.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, MathUpgradeable.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"contracts/interface/IPaycrest.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n/**\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\n * Factory and global config params\n */\ninterface IPaycrest {\n \n /* ##################################################################\n EVENTS\n ################################################################## */\n /// @dev Emitted when deposit is made.\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\n /// @dev Emitted when aggregator settle transaction.\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\n /// @dev Emitted when aggregator refund transaction.\n event Refunded(bytes32 indexed orderId, bytes32 label);\n /// @dev Emitted when sender get therir rewards.\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\n /// @dev Emitted when primary validator get therir rewards.\n event RewardValidator(address indexed validator, uint256 indexed amount);\n\n /* ##################################################################\n STRUCTS\n ################################################################## */\n struct TransactionMetadata {\n bytes8 identifier; // slot 0\n bytes8 institution; // slot 0\n bytes8 name; // slot 0\n bytes8 currency; // slot 0\n uint256 liquidityProviderID; // slot 1\n }\n\n struct Order {\n address seller; // slot 0\n address token; // slot 1\n address senderFeeRecipient;\n uint256 senderFee;\n uint96 rate; // slot 1\n bool isFulfilled; // slot 2 {11 bytes available}\n address refundAddress; // slot 2 {12 bytes available}\n uint96 currentBPS; // slot 2 {}\n uint256 amount; // slot 3\n }\n\n\n /* ##################################################################\n EXTERNAL CALLS\n ################################################################## */\n /// @notice lock sender `_amount` of `token` into Paycrest.\n /// Requirements:\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\n /// `amount` must be greater than minimum\n /// `_refundable` refundable address must not be zero address\n /// @param _token address of the token.\n /// @param _amount amount in the decimal of `_token` above.\n /// @param _institutionCode institution code of the sender.\n /// @param _label reference of the sender.\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\n /// @return _orderId the bytes20 which is the orderId\n function createOrder(\n address _token, \n uint256 _amount, \n bytes32 _institutionCode,\n bytes32 _label,\n uint96 _rate, \n address _senderFeeRecipient,\n uint256 _senderFee,\n address _refundAddress, \n string calldata messageHash) external returns(bytes32 _orderId);\n\n /// @notice settle transaction and distribute rewards accordingly.\n /// Requirements:\n /// {only aggregators call}.\n /// `_orderId` it must be less than total ids.\n /// `_orderId` it must be an open Id.\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\n /// `amount` must be greater than minimum\n /// `_refundable` refundable address must not be zero address\n /// @param _orderId transaction Id.\n /// @param _label reference of the sender.\n /// @param _liquidityProvider address of the liquidity provider.\n /// @param _settlePercent rate at which the transaction is settled.\n /// @param _isPartner is the liquidity provider a partner.\n /// @return return the status of transaction {bool}\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\n\n /// @notice refund to the specified refundable address.\n /// Requirements:\n /// {only aggregators call}.\n /// `_orderId` it must be less than total ids.\n /// `_orderId` it must be an open Id.\n /// `isFulfilled` must be false.\n /// @param _orderId transaction Id.\n /// @param _label reference of the sender.\n /// @return return the status of transaction {bool}\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\n\n /// @notice get supported token from Paycrest.\n /// @param _token address of the token to check.\n /// @return return the status of `_token` {bool}\n function isTokenSupported(address _token) external view returns(bool);\n\n /// @notice get order details.\n /// @param _orderId transaction Id.\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\n\n /// @notice get every rewards and address on Paycrest.\n /// @return protocolReward amount that will be taken in percentage on all trade.\n /// @return max_bps maximum amount in bps \"100% == 100_000\".\n function getFeeDetails() external view returns(\n uint64 protocolReward, \n uint256 max_bps\n );\n\n /// @notice get address of liquidity aggregator.\n /// @return address of `Aggregator`.\n function getAggregatorAddress() external view returns(address);\n\n /// @notice get aggregator public key.\n /// @return aggregator public key.\n function getAggregator() external view returns(bytes memory);\n \n /// @notice get address of sender whitelisting status.\n /// @param sender address of the sender.\n /// @return address of `status`.\n function getWhitelistedStatus(address sender) external view returns(bool);\n\n}\n"},"contracts/Paycrest.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\nimport \"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\";\nimport {PaycrestSettingManager} from \"./PaycrestSettingManager.sol\";\nimport {IPaycrest, IERC20} from \"./interface/IPaycrest.sol\";\ncontract Paycrest is IPaycrest, PaycrestSettingManager { \n using SafeERC20Upgradeable for IERC20;\n using ECDSAUpgradeable for bytes32;\n struct fee {\n uint256 protocolFee;\n uint256 liquidityProviderAmount;\n }\n mapping(bytes32 => Order) private order;\n mapping(address => uint256) private _nonce;\n uint256[50] private __gap;\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize(address _usdc) external initializer { \n _isTokenSupported[_usdc] = true; \n MAX_BPS = 100_000; \n protocolFeePercent = 5000; // 5%\n __Ownable_init();\n }\n\n modifier onlyAggregator {\n require(msg.sender == _aggregatorAddress, \"OnlyAggregator\");\n _;\n }\n \n /* ##################################################################\n USER CALLS\n ################################################################## */\n /** @dev See {createOrder-IPaycrest}. */\n function createOrder(\n address _token, \n uint256 _amount, \n bytes32 _institutionCode,\n bytes32 _label,\n uint96 _rate, \n address _senderFeeRecipient,\n uint256 _senderFee,\n address _refundAddress, \n string calldata messageHash\n ) external returns(bytes32 orderId) {\n // checks that are required\n _handler(_token, _amount, _refundAddress, _senderFeeRecipient, _institutionCode);\n // require that sender fee is less than protocol fee\n require(_senderFee <= (_amount * protocolFeePercent) / MAX_BPS, \"SenderFeeTooHigh\");\n // first transfer token from msg.sender\n IERC20(_token).transferFrom(msg.sender, address(this), _amount);\n // increase users nonce to avoid replay attacks\n _nonce[msg.sender] ++;\n // @chibie @5ran6\n // @todo sender fee should have limit, let say the maximum amount of sender fee should be 1% of the amount\n // generate transaction id for the transaction\n orderId = keccak256(abi.encode(msg.sender, _nonce[msg.sender]));\n // update transaction\n order[orderId] = Order({\n seller: msg.sender,\n token: _token,\n senderFeeRecipient: _senderFeeRecipient,\n senderFee: _senderFee,\n rate: _rate,\n isFulfilled: false,\n refundAddress: _refundAddress,\n currentBPS: uint64(MAX_BPS),\n amount: _amount\n });\n // emit deposit event\n emit Deposit(_token, _amount, orderId, _rate, _institutionCode, _label, messageHash);\n }\n\n function _handler(address _token, uint256 _amount, address _refundAddress, address _senderFeeRecipient, bytes32 _institutionCode) internal view {\n // use require for all the custom errors\n require(_isTokenSupported[_token], \"TokenNotSupported\");\n require(_amount > 0, \"AmountIsZero\");\n require(_refundAddress != address(0), \"ThrowZeroAddress\");\n require(_senderFeeRecipient != address(0), \"ThrowZeroAddress\");\n require(supportedInstitutionsByCode[_institutionCode].name != bytes32(0), \"InvalidInstitutionCode\");\n }\n\n /* ##################################################################\n AGGREGATOR FUNCTIONS\n ################################################################## */\n /** @dev See {settle-IPaycrest}. */\n function settle(\n bytes32 _splitOrderId,\n bytes32 _orderId, \n bytes32 _label,\n address _liquidityProvider, \n uint64 _settlePercent,\n bool _isPartner\n ) external onlyAggregator() returns(bytes32, address) {\n // ensure the transaction has not been fulfilled\n require(!order[_orderId].isFulfilled, \"OrderFulfilled\");\n // load the token into memory\n address token = order[_orderId].token;\n // substract sum of amount based on the input _settlePercent\n order[_orderId].currentBPS -= _settlePercent;\n // if transaction amount is zero\n // load the fees and transfer associated protocol fees to protocol fee recipient\n ( fee memory _feeParams ) = _calculateFees(_orderId, _settlePercent, _isPartner);\n if(order[_orderId].currentBPS == 0) {\n // update the transaction to be fulfilled\n order[_orderId].isFulfilled = true;\n if (order[_orderId].senderFee > 0) {\n // transfer sender fee\n transferSenderFee(_orderId);\n }\n }\n \n if (_feeParams.protocolFee > 0) {\n // transfer protocol fee\n IERC20(token).transfer(feeRecipient, _feeParams.protocolFee);\n }\n // // transfer to liquidity provider \n IERC20(token).transfer(_liquidityProvider, _feeParams.liquidityProviderAmount);\n\n // emit event\n emit Settled(_splitOrderId, _orderId, _label, _liquidityProvider, _settlePercent);\n return (_orderId, token);\n }\n\n function transferSenderFee(bytes32 _orderId) internal {\n address recipient = order[_orderId].senderFeeRecipient;\n uint256 _fee = order[_orderId].senderFee;\n // transfer sender fee\n IERC20(order[_orderId].token).transfer(recipient, _fee);\n // emmit event\n emit TransferSenderFee(recipient, _fee);\n }\n\n /** @dev See {refund-IPaycrest}. */\n function refund(bytes32 _orderId, bytes32 _label) external onlyAggregator() returns(bool) {\n // ensure the transaction has not been fulfilled\n require(!order[_orderId].isFulfilled, \"OrderFulfilled\");\n // reser state values\n order[_orderId].isFulfilled = true;\n order[_orderId].currentBPS = 0;\n // transfer to seller \n IERC20(order[_orderId].token).transfer(order[_orderId].refundAddress, order[_orderId].amount);\n // emit\n emit Refunded(_orderId, _label);\n return true;\n }\n\n function _calculateFees(bytes32 _orderId, uint96 _settlePercent, bool _isPartner) private view returns(fee memory _feeParams ) {\n // get the total amount associated with the orderId\n uint256 amount = order[_orderId].amount;\n // get sender fee from amount\n amount = amount - order[_orderId].senderFee;\n // get the settled percent that is scheduled for this amount\n _feeParams.liquidityProviderAmount = (amount * _settlePercent) / MAX_BPS;\n // deduct protocol fees from the new total amount\n _feeParams.protocolFee = (_feeParams.liquidityProviderAmount * protocolFeePercent) / MAX_BPS; \n // substract total fees from the new amount after getting the scheduled amount\n _feeParams.liquidityProviderAmount = (_feeParams.liquidityProviderAmount - _feeParams.protocolFee);\n // if (_isPartner) protocol fee should be 0, and the whole protocol fee should be added to liquidity provider\n if (_isPartner) {\n _feeParams.liquidityProviderAmount += _feeParams.protocolFee;\n _feeParams.protocolFee = 0;\n }\n }\n \n /* ##################################################################\n VIEW CALLS\n ################################################################## */\n /** @dev See {getOrderInfo-IPaycrest}. */\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory) {\n return order[_orderId];\n }\n\n /** @dev See {isTokenSupported-IPaycrest}. */\n function isTokenSupported(address _token) external view returns(bool) {\n return _isTokenSupported[_token];\n }\n\n /** @dev See {getSupportedInstitutionName-IPaycrest}. */\n function getSupportedInstitutionName(bytes32 code) external view returns (InstitutionByCode memory) {\n return supportedInstitutionsByCode[code];\n }\n\n function getSupportedInstitutions(bytes32 currency) external view returns (Institution[] memory) {\n Institution[] memory institutions = supportedInstitutions[currency];\n uint256 length = institutions.length;\n Institution[] memory result = new Institution[](length);\n \n for (uint256 i = 0; i < length; ) {\n result[i] = institutions[i];\n unchecked {\n i++;\n }\n }\n \n return result;\n }\n\n /** @dev See {getFeeDetails-IPaycrest}. */\n function getFeeDetails() external view returns(\n uint64, \n uint256\n ) {\n return(protocolFeePercent, MAX_BPS);\n }\n\n /** @dev See {getAggregatorAddress-IPaycrest}. */\n function getAggregatorAddress() external view returns(address) {\n return _aggregatorAddress;\n }\n\n /** @dev See {getWhitelistedStatus-IPaycrest}. */\n function getWhitelistedStatus(address sender) external view returns(bool) {\n return _isWhitelisted[sender];\n }\n\n /** @dev See {getAggregator-IPaycrest}. */\n function getAggregator() external view returns(bytes memory) {\n return _aggregator;\n }\n\n\n // DECLARE A FUNCTION TO WITHDRAW ANY TOKEN FROM CONTRACT CAN ONLY NE CALLED BY OWNER\n function withdraw(address _token, address _recipient, uint256 _amount) external onlyOwner {\n IERC20(_token).transfer(_recipient, _amount);\n }\n\n}\n"},"contracts/PaycrestSettingManager.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\n\ncontract PaycrestSettingManager is OwnableUpgradeable { \n struct Institution {\n bytes32 code; // usually not more than 8 letters\n bytes32 name; // \n }\n struct InstitutionByCode {\n bytes32 name;\n bytes32 currency;\n }\n uint256 internal MAX_BPS;\n uint64 internal protocolFeePercent; // 5%\n address internal feeRecipient;\n address internal _aggregatorAddress;\n bytes internal _aggregator;\n \n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\n uint256[50] private __gap;\n\n mapping(address => bool) internal _isTokenSupported;\n mapping(address => bool) internal _isWhitelisted;\n\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\n\n event SettingManagerBool(bytes32 what, address value, bool status);\n event PaycrestFees(uint64 protocolFee);\n event SetAggregator(bytes aggregator);\n event SetFeeRecipient(address feeRecipient);\n \n /* ##################################################################\n OWNER FUNCTIONS\n ################################################################## */\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\n require(value != address(0), \"Paycrest: zero address\");\n if (what == \"token\") _isTokenSupported[value] = status;\n if (what == \"whitelist\") _isWhitelisted[value] = status;\n\n emit SettingManagerBool(what, value, status);\n }\n\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \n uint256 length = institutions.length;\n for (uint i = 0; i < length; ) {\n supportedInstitutions[currency].push(institutions[i]);\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\n name: institutions[i].name, currency: currency\n });\n unchecked {\n i++;\n }\n }\n }\n\n function updateProtocolFees(uint64 _protocolFeePercent) external onlyOwner {\n protocolFeePercent = _protocolFeePercent;\n emit PaycrestFees(_protocolFeePercent);\n }\n\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\n require(value != address(0), \"Paycrest: zero address\");\n if (what == \"fee\") feeRecipient = value;\n if (what == \"aggregator\") _aggregatorAddress = value;\n }\n\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\n _aggregator = aggregator;\n emit SetAggregator(aggregator);\n }\n\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300],"OwnableUpgradeable":[131]},"id":132,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":132,"sourceUnit":1163,"src":"127:41:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":132,"sourceUnit":301,"src":"169:42:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5,"name":"Initializable","nameLocations":["748:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":300,"src":"748:13:0"},"id":6,"nodeType":"InheritanceSpecifier","src":"748:13:0"},{"baseName":{"id":7,"name":"ContextUpgradeable","nameLocations":["763:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":1162,"src":"763:18:0"},"id":8,"nodeType":"InheritanceSpecifier","src":"763:18:0"}],"canonicalName":"OwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"213:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":131,"linearizedBaseContracts":[131,1162,300],"name":"OwnableUpgradeable","nameLocation":"726:18:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10,"mutability":"mutable","name":"_owner","nameLocation":"804:6:0","nodeType":"VariableDeclaration","scope":131,"src":"788:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"788:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":16,"name":"OwnershipTransferred","nameLocation":"823:20:0","nodeType":"EventDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"860:13:0","nodeType":"VariableDeclaration","scope":16,"src":"844:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"844:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"891:8:0","nodeType":"VariableDeclaration","scope":16,"src":"875:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"843:57:0"},"src":"817:84:0"},{"body":{"id":25,"nodeType":"Block","src":"1055:43:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37,"src":"1065:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":23,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1065:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24,"nodeType":"ExpressionStatement","src":"1065:26:0"}]},"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"907:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":26,"implemented":true,"kind":"function","modifiers":[{"id":20,"kind":"modifierInvocation","modifierName":{"id":19,"name":"onlyInitializing","nameLocations":["1038:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"1038:16:0"},"nodeType":"ModifierInvocation","src":"1038:16:0"}],"name":"__Ownable_init","nameLocation":"1012:14:0","nodeType":"FunctionDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"1026:2:0"},"returnParameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"1055:0:0"},"scope":131,"src":"1003:95:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":36,"nodeType":"Block","src":"1166:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":32,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"1195:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":33,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1195:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"1176:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":34,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1176:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35,"nodeType":"ExpressionStatement","src":"1176:32:0"}]},"id":37,"implemented":true,"kind":"function","modifiers":[{"id":29,"kind":"modifierInvocation","modifierName":{"id":28,"name":"onlyInitializing","nameLocations":["1149:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"1149:16:0"},"nodeType":"ModifierInvocation","src":"1149:16:0"}],"name":"__Ownable_init_unchained","nameLocation":"1113:24:0","nodeType":"FunctionDefinition","parameters":{"id":27,"nodeType":"ParameterList","parameters":[],"src":"1137:2:0"},"returnParameters":{"id":30,"nodeType":"ParameterList","parameters":[],"src":"1166:0:0"},"scope":131,"src":"1104:111:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":44,"nodeType":"Block","src":"1324:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":40,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"1334:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1334:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42,"nodeType":"ExpressionStatement","src":"1334:13:0"},{"id":43,"nodeType":"PlaceholderStatement","src":"1357:1:0"}]},"documentation":{"id":38,"nodeType":"StructuredDocumentation","src":"1221:77:0","text":" @dev Throws if called by any account other than the owner."},"id":45,"name":"onlyOwner","nameLocation":"1312:9:0","nodeType":"ModifierDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"1321:2:0"},"src":"1303:62:0","virtual":false,"visibility":"internal"},{"body":{"id":53,"nodeType":"Block","src":"1496:30:0","statements":[{"expression":{"id":51,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"1513:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":50,"id":52,"nodeType":"Return","src":"1506:13:0"}]},"documentation":{"id":46,"nodeType":"StructuredDocumentation","src":"1371:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":54,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1450:5:0","nodeType":"FunctionDefinition","parameters":{"id":47,"nodeType":"ParameterList","parameters":[],"src":"1455:2:0"},"returnParameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54,"src":"1487:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1486:9:0"},"scope":131,"src":"1441:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":67,"nodeType":"Block","src":"1644:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":63,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1662:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":60,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1662:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":61,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"1673:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1662:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1687:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":58,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1654:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1654:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1654:68:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1532:62:0","text":" @dev Throws if the sender is not the owner."},"id":68,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1608:11:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1619:2:0"},"returnParameters":{"id":57,"nodeType":"ParameterList","parameters":[],"src":"1644:0:0"},"scope":131,"src":"1599:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":81,"nodeType":"Block","src":"2118:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":77,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2155:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2147:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"2147:7:0","typeDescriptions":{}}},"id":78,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2147:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"2128:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2128:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80,"nodeType":"ExpressionStatement","src":"2128:30:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1735:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":82,"implemented":true,"kind":"function","modifiers":[{"id":72,"kind":"modifierInvocation","modifierName":{"id":71,"name":"onlyOwner","nameLocations":["2108:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2108:9:0"},"nodeType":"ModifierInvocation","src":"2108:9:0"}],"name":"renounceOwnership","nameLocation":"2073:17:0","nodeType":"FunctionDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[],"src":"2090:2:0"},"returnParameters":{"id":73,"nodeType":"ParameterList","parameters":[],"src":"2118:0:0"},"scope":131,"src":"2064:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":104,"nodeType":"Block","src":"2384:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":96,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":91,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"2402:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2422:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":93,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2414:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"2414:7:0","typeDescriptions":{}}},"id":95,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2414:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2402:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":97,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2426:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":90,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2394:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":98,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2394:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":99,"nodeType":"ExpressionStatement","src":"2394:73:0"},{"expression":{"arguments":[{"id":101,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"2496:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":100,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"2477:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2477:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":103,"nodeType":"ExpressionStatement","src":"2477:28:0"}]},"documentation":{"id":83,"nodeType":"StructuredDocumentation","src":"2171:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":105,"implemented":true,"kind":"function","modifiers":[{"id":88,"kind":"modifierInvocation","modifierName":{"id":87,"name":"onlyOwner","nameLocations":["2374:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2374:9:0"},"nodeType":"ModifierInvocation","src":"2374:9:0"}],"name":"transferOwnership","nameLocation":"2323:17:0","nodeType":"FunctionDefinition","parameters":{"id":86,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85,"mutability":"mutable","name":"newOwner","nameLocation":"2349:8:0","nodeType":"VariableDeclaration","scope":105,"src":"2341:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2340:18:0"},"returnParameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"2384:0:0"},"scope":131,"src":"2314:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":124,"nodeType":"Block","src":"2729:124:0","statements":[{"assignments":[112],"declarations":[{"constant":false,"id":112,"mutability":"mutable","name":"oldOwner","nameLocation":"2747:8:0","nodeType":"VariableDeclaration","scope":124,"src":"2739:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":114,"initialValue":{"id":113,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"2758:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2739:25:0"},{"expression":{"id":117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":115,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"2774:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":116,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2783:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2774:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":118,"nodeType":"ExpressionStatement","src":"2774:17:0"},{"eventCall":{"arguments":[{"id":120,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112,"src":"2827:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2837:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":119,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"2806:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2806:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"EmitStatement","src":"2801:45:0"}]},"documentation":{"id":106,"nodeType":"StructuredDocumentation","src":"2518:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":125,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2675:18:0","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":108,"mutability":"mutable","name":"newOwner","nameLocation":"2702:8:0","nodeType":"VariableDeclaration","scope":125,"src":"2694:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"2694:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2693:18:0"},"returnParameters":{"id":110,"nodeType":"ParameterList","parameters":[],"src":"2729:0:0"},"scope":131,"src":"2666:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"2859:254:0","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":130,"mutability":"mutable","name":"__gap","nameLocation":"3138:5:0","nodeType":"VariableDeclaration","scope":131,"src":"3118:25:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":127,"name":"uint256","nodeType":"ElementaryTypeName","src":"3118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":129,"length":{"hexValue":"3439","id":128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3126:2:0","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"3118:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":132,"src":"708:2438:0","usedErrors":[]}],"src":"102:3045:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"Initializable":[300]},"id":301,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":133,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:1"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":134,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":301,"sourceUnit":1121,"src":"138:44:1","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":135,"nodeType":"StructuredDocumentation","src":"184:2209:1","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":300,"linearizedBaseContracts":[300],"name":"Initializable","nameLocation":"2412:13:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":136,"nodeType":"StructuredDocumentation","src":"2432:109:1","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":138,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:1","nodeType":"VariableDeclaration","scope":300,"src":"2546:26:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":137,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"2579:91:1","text":" @dev Indicates that the contract is in the process of being initialized."},"id":141,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:1","nodeType":"VariableDeclaration","scope":300,"src":"2675:26:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":140,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":142,"nodeType":"StructuredDocumentation","src":"2708:90:1","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":146,"name":"Initialized","nameLocation":"2809:11:1","nodeType":"EventDefinition","parameters":{"id":145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":144,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:1","nodeType":"VariableDeclaration","scope":146,"src":"2821:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":143,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:1"},"src":"2803:33:1"},{"body":{"id":201,"nodeType":"Block","src":"3269:483:1","statements":[{"assignments":[150],"declarations":[{"constant":false,"id":150,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:1","nodeType":"VariableDeclaration","scope":201,"src":"3279:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":149,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":153,"initialValue":{"id":152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:1","subExpression":{"id":151,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3302:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":155,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3347:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":156,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3365:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:1","subExpression":{"arguments":[{"arguments":[{"id":165,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3426:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$300","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$300","typeString":"contract Initializable"}],"id":164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:1","typeDescriptions":{}}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":161,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"3388:18:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1120_$","typeString":"type(library AddressUpgradeable)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:1","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":808,"src":"3388:29:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":169,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3436:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":173,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":154,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3325:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":177,"nodeType":"ExpressionStatement","src":"3325:201:1"},{"expression":{"id":180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":178,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3536:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":181,"nodeType":"ExpressionStatement","src":"3536:16:1"},{"condition":{"id":182,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3566:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":188,"nodeType":"IfStatement","src":"3562:65:1","trueBody":{"id":187,"nodeType":"Block","src":"3582:45:1","statements":[{"expression":{"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":183,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3596:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":186,"nodeType":"ExpressionStatement","src":"3596:20:1"}]}},{"id":189,"nodeType":"PlaceholderStatement","src":"3636:1:1"},{"condition":{"id":190,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3651:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":200,"nodeType":"IfStatement","src":"3647:99:1","trueBody":{"id":199,"nodeType":"Block","src":"3667:79:1","statements":[{"expression":{"id":193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":191,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3681:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":194,"nodeType":"ExpressionStatement","src":"3681:21:1"},{"eventCall":{"arguments":[{"hexValue":"31","id":196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":195,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"3721:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":198,"nodeType":"EmitStatement","src":"3716:19:1"}]}}]},"documentation":{"id":147,"nodeType":"StructuredDocumentation","src":"2842:399:1","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":202,"name":"initializer","nameLocation":"3255:11:1","nodeType":"ModifierDefinition","parameters":{"id":148,"nodeType":"ParameterList","parameters":[],"src":"3266:2:1"},"src":"3246:506:1","virtual":false,"visibility":"internal"},{"body":{"id":234,"nodeType":"Block","src":"4863:255:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:1","subExpression":{"id":208,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"4882:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":210,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4899:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":211,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"4914:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":207,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4873:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":216,"nodeType":"ExpressionStatement","src":"4873:99:1"},{"expression":{"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":217,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4982:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":218,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"4997:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":220,"nodeType":"ExpressionStatement","src":"4982:22:1"},{"expression":{"id":223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":221,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5014:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":224,"nodeType":"ExpressionStatement","src":"5014:20:1"},{"id":225,"nodeType":"PlaceholderStatement","src":"5044:1:1"},{"expression":{"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":226,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5055:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":229,"nodeType":"ExpressionStatement","src":"5055:21:1"},{"eventCall":{"arguments":[{"id":231,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"5103:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":230,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"5091:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":233,"nodeType":"EmitStatement","src":"5086:25:1"}]},"documentation":{"id":203,"nodeType":"StructuredDocumentation","src":"3758:1062:1","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":235,"name":"reinitializer","nameLocation":"4834:13:1","nodeType":"ModifierDefinition","parameters":{"id":206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":205,"mutability":"mutable","name":"version","nameLocation":"4854:7:1","nodeType":"VariableDeclaration","scope":235,"src":"4848:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":204,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:1"},"src":"4825:293:1","virtual":false,"visibility":"internal"},{"body":{"id":244,"nodeType":"Block","src":"5356:97:1","statements":[{"expression":{"arguments":[{"id":239,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5374:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":238,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5366:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":242,"nodeType":"ExpressionStatement","src":"5366:69:1"},{"id":243,"nodeType":"PlaceholderStatement","src":"5445:1:1"}]},"documentation":{"id":236,"nodeType":"StructuredDocumentation","src":"5124:199:1","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":245,"name":"onlyInitializing","nameLocation":"5337:16:1","nodeType":"ModifierDefinition","parameters":{"id":237,"nodeType":"ParameterList","parameters":[],"src":"5353:2:1"},"src":"5328:125:1","virtual":false,"visibility":"internal"},{"body":{"id":280,"nodeType":"Block","src":"5988:231:1","statements":[{"expression":{"arguments":[{"id":251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:1","subExpression":{"id":250,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6007:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":249,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5998:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":254,"nodeType":"ExpressionStatement","src":"5998:66:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":255,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6078:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":257,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":256,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6094:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:1","memberName":"max","nodeType":"MemberAccess","src":"6094:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":279,"nodeType":"IfStatement","src":"6074:139:1","trueBody":{"id":278,"nodeType":"Block","src":"6111:102:1","statements":[{"expression":{"id":268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":262,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6125:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":264,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":263,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6140:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:1","memberName":"max","nodeType":"MemberAccess","src":"6140:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":269,"nodeType":"ExpressionStatement","src":"6125:30:1"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":272,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":271,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6186:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:1","memberName":"max","nodeType":"MemberAccess","src":"6186:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":270,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"6174:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":277,"nodeType":"EmitStatement","src":"6169:33:1"}]}}]},"documentation":{"id":246,"nodeType":"StructuredDocumentation","src":"5459:475:1","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":281,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:1","nodeType":"FunctionDefinition","parameters":{"id":247,"nodeType":"ParameterList","parameters":[],"src":"5968:2:1"},"returnParameters":{"id":248,"nodeType":"ParameterList","parameters":[],"src":"5988:0:1"},"scope":300,"src":"5939:280:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":289,"nodeType":"Block","src":"6393:36:1","statements":[{"expression":{"id":287,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6410:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":286,"id":288,"nodeType":"Return","src":"6403:19:1"}]},"documentation":{"id":282,"nodeType":"StructuredDocumentation","src":"6225:99:1","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":290,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:1","nodeType":"FunctionDefinition","parameters":{"id":283,"nodeType":"ParameterList","parameters":[],"src":"6360:2:1"},"returnParameters":{"id":286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":290,"src":"6386:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":284,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:1"},"scope":300,"src":"6329:100:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":298,"nodeType":"Block","src":"6601:37:1","statements":[{"expression":{"id":296,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6618:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":295,"id":297,"nodeType":"Return","src":"6611:20:1"}]},"documentation":{"id":291,"nodeType":"StructuredDocumentation","src":"6435:105:1","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":299,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:1","nodeType":"FunctionDefinition","parameters":{"id":292,"nodeType":"ParameterList","parameters":[],"src":"6569:2:1"},"returnParameters":{"id":295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":299,"src":"6595:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":293,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:1"},"scope":300,"src":"6545:93:1","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":301,"src":"2394:4246:1","usedErrors":[]}],"src":"113:6528:1"},"id":1},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","exportedSymbols":{"IERC20Upgradeable":[378]},"id":379,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":302,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"131:70:2","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":378,"linearizedBaseContracts":[378],"name":"IERC20Upgradeable","nameLocation":"212:17:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":304,"nodeType":"StructuredDocumentation","src":"236:158:2","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":312,"name":"Transfer","nameLocation":"405:8:2","nodeType":"EventDefinition","parameters":{"id":311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":306,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"430:4:2","nodeType":"VariableDeclaration","scope":312,"src":"414:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":305,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":308,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"452:2:2","nodeType":"VariableDeclaration","scope":312,"src":"436:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":307,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":310,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"464:5:2","nodeType":"VariableDeclaration","scope":312,"src":"456:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"413:57:2"},"src":"399:72:2"},{"anonymous":false,"documentation":{"id":313,"nodeType":"StructuredDocumentation","src":"477:148:2","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":321,"name":"Approval","nameLocation":"636:8:2","nodeType":"EventDefinition","parameters":{"id":320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":315,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"661:5:2","nodeType":"VariableDeclaration","scope":321,"src":"645:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":317,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"684:7:2","nodeType":"VariableDeclaration","scope":321,"src":"668:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"668:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":319,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"701:5:2","nodeType":"VariableDeclaration","scope":321,"src":"693:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":318,"name":"uint256","nodeType":"ElementaryTypeName","src":"693:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"644:63:2"},"src":"630:78:2"},{"documentation":{"id":322,"nodeType":"StructuredDocumentation","src":"714:66:2","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":327,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"794:11:2","nodeType":"FunctionDefinition","parameters":{"id":323,"nodeType":"ParameterList","parameters":[],"src":"805:2:2"},"returnParameters":{"id":326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":327,"src":"831:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":324,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"830:9:2"},"scope":378,"src":"785:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"846:72:2","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":335,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"932:9:2","nodeType":"FunctionDefinition","parameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"account","nameLocation":"950:7:2","nodeType":"VariableDeclaration","scope":335,"src":"942:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":329,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"941:17:2"},"returnParameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":335,"src":"982:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":332,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"981:9:2"},"scope":378,"src":"923:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":336,"nodeType":"StructuredDocumentation","src":"997:202:2","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":345,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:2","nodeType":"FunctionDefinition","parameters":{"id":341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"to","nameLocation":"1230:2:2","nodeType":"VariableDeclaration","scope":345,"src":"1222:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":337,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":340,"mutability":"mutable","name":"amount","nameLocation":"1242:6:2","nodeType":"VariableDeclaration","scope":345,"src":"1234:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":339,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:28:2"},"returnParameters":{"id":344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":345,"src":"1268:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":342,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:2"},"scope":378,"src":"1204:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"1280:264:2","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":355,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:2","nodeType":"FunctionDefinition","parameters":{"id":351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"owner","nameLocation":"1576:5:2","nodeType":"VariableDeclaration","scope":355,"src":"1568:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":347,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":350,"mutability":"mutable","name":"spender","nameLocation":"1591:7:2","nodeType":"VariableDeclaration","scope":355,"src":"1583:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":349,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:2"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":355,"src":"1623:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":352,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:2"},"scope":378,"src":"1549:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"1638:642:2","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":365,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2294:7:2","nodeType":"FunctionDefinition","parameters":{"id":361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"spender","nameLocation":"2310:7:2","nodeType":"VariableDeclaration","scope":365,"src":"2302:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":360,"mutability":"mutable","name":"amount","nameLocation":"2327:6:2","nodeType":"VariableDeclaration","scope":365,"src":"2319:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"2319:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:33:2"},"returnParameters":{"id":364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":365,"src":"2353:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":362,"name":"bool","nodeType":"ElementaryTypeName","src":"2353:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2352:6:2"},"scope":378,"src":"2285:74:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":366,"nodeType":"StructuredDocumentation","src":"2365:287:2","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":377,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2666:12:2","nodeType":"FunctionDefinition","parameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":368,"mutability":"mutable","name":"from","nameLocation":"2687:4:2","nodeType":"VariableDeclaration","scope":377,"src":"2679:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":367,"name":"address","nodeType":"ElementaryTypeName","src":"2679:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":370,"mutability":"mutable","name":"to","nameLocation":"2701:2:2","nodeType":"VariableDeclaration","scope":377,"src":"2693:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":369,"name":"address","nodeType":"ElementaryTypeName","src":"2693:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"amount","nameLocation":"2713:6:2","nodeType":"VariableDeclaration","scope":377,"src":"2705:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":371,"name":"uint256","nodeType":"ElementaryTypeName","src":"2705:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2678:42:2"},"returnParameters":{"id":376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":377,"src":"2739:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":374,"name":"bool","nodeType":"ElementaryTypeName","src":"2739:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2738:6:2"},"scope":378,"src":"2657:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":379,"src":"202:2545:2","usedErrors":[]}],"src":"106:2642:2"},"id":2},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","exportedSymbols":{"IERC20PermitUpgradeable":[414]},"id":415,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":380,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"123:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20PermitUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"148:480:3","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":414,"linearizedBaseContracts":[414],"name":"IERC20PermitUpgradeable","nameLocation":"639:23:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"669:792:3","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":399,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1475:6:3","nodeType":"FunctionDefinition","parameters":{"id":397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"owner","nameLocation":"1499:5:3","nodeType":"VariableDeclaration","scope":399,"src":"1491:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":383,"name":"address","nodeType":"ElementaryTypeName","src":"1491:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":386,"mutability":"mutable","name":"spender","nameLocation":"1522:7:3","nodeType":"VariableDeclaration","scope":399,"src":"1514:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"1514:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":388,"mutability":"mutable","name":"value","nameLocation":"1547:5:3","nodeType":"VariableDeclaration","scope":399,"src":"1539:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":387,"name":"uint256","nodeType":"ElementaryTypeName","src":"1539:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"deadline","nameLocation":"1570:8:3","nodeType":"VariableDeclaration","scope":399,"src":"1562:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"1562:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":392,"mutability":"mutable","name":"v","nameLocation":"1594:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1588:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":391,"name":"uint8","nodeType":"ElementaryTypeName","src":"1588:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":394,"mutability":"mutable","name":"r","nameLocation":"1613:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1605:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1605:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":396,"mutability":"mutable","name":"s","nameLocation":"1632:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1624:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1624:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1481:158:3"},"returnParameters":{"id":398,"nodeType":"ParameterList","parameters":[],"src":"1648:0:3"},"scope":414,"src":"1466:183:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":400,"nodeType":"StructuredDocumentation","src":"1655:294:3","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":407,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"1963:6:3","nodeType":"FunctionDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":402,"mutability":"mutable","name":"owner","nameLocation":"1978:5:3","nodeType":"VariableDeclaration","scope":407,"src":"1970:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":401,"name":"address","nodeType":"ElementaryTypeName","src":"1970:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1969:15:3"},"returnParameters":{"id":406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":407,"src":"2008:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":404,"name":"uint256","nodeType":"ElementaryTypeName","src":"2008:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2007:9:3"},"scope":414,"src":"1954:63:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":408,"nodeType":"StructuredDocumentation","src":"2023:128:3","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":413,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"2218:16:3","nodeType":"FunctionDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[],"src":"2234:2:3"},"returnParameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":413,"src":"2260:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":410,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2260:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2259:9:3"},"scope":414,"src":"2209:60:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":415,"src":"629:1642:3","usedErrors":[]}],"src":"123:2149:3"},"id":3},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"IERC20PermitUpgradeable":[414],"IERC20Upgradeable":[378],"SafeERC20Upgradeable":[790]},"id":791,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":416,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","file":"../IERC20Upgradeable.sol","id":417,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":379,"src":"140:34:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","file":"../extensions/IERC20PermitUpgradeable.sol","id":418,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":415,"src":"175:51:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../../utils/AddressUpgradeable.sol","id":419,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":1121,"src":"227:47:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20Upgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":420,"nodeType":"StructuredDocumentation","src":"276:457:4","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":790,"linearizedBaseContracts":[790],"name":"SafeERC20Upgradeable","nameLocation":"742:20:4","nodeType":"ContractDefinition","nodes":[{"global":false,"id":423,"libraryName":{"id":421,"name":"AddressUpgradeable","nameLocations":["775:18:4"],"nodeType":"IdentifierPath","referencedDeclaration":1120,"src":"775:18:4"},"nodeType":"UsingForDirective","src":"769:37:4","typeName":{"id":422,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":446,"nodeType":"Block","src":"1079:103:4","statements":[{"expression":{"arguments":[{"id":435,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"1109:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":438,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"1139:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1145:8:4","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":345,"src":"1139:14:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1154:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1139:23:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":441,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"1164:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"1168:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":436,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1116:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1120:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1116:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":434,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"1089:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1089:86:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":445,"nodeType":"ExpressionStatement","src":"1089:86:4"}]},"documentation":{"id":424,"nodeType":"StructuredDocumentation","src":"812:179:4","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":447,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1005:12:4","nodeType":"FunctionDefinition","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":427,"mutability":"mutable","name":"token","nameLocation":"1036:5:4","nodeType":"VariableDeclaration","scope":447,"src":"1018:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":426,"nodeType":"UserDefinedTypeName","pathNode":{"id":425,"name":"IERC20Upgradeable","nameLocations":["1018:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1018:17:4"},"referencedDeclaration":378,"src":"1018:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":429,"mutability":"mutable","name":"to","nameLocation":"1051:2:4","nodeType":"VariableDeclaration","scope":447,"src":"1043:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":428,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"value","nameLocation":"1063:5:4","nodeType":"VariableDeclaration","scope":447,"src":"1055:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"1055:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1017:52:4"},"returnParameters":{"id":433,"nodeType":"ParameterList","parameters":[],"src":"1079:0:4"},"scope":790,"src":"996:186:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":473,"nodeType":"Block","src":"1522:113:4","statements":[{"expression":{"arguments":[{"id":461,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"1552:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":464,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"1582:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1588:12:4","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":377,"src":"1582:18:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1601:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1582:27:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":467,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"1611:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":468,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":455,"src":"1617:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":457,"src":"1621:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":462,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1559:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1563:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1559:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1559:68:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":460,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"1532:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1532:96:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":472,"nodeType":"ExpressionStatement","src":"1532:96:4"}]},"documentation":{"id":448,"nodeType":"StructuredDocumentation","src":"1188:228:4","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":474,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1430:16:4","nodeType":"FunctionDefinition","parameters":{"id":458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":451,"mutability":"mutable","name":"token","nameLocation":"1465:5:4","nodeType":"VariableDeclaration","scope":474,"src":"1447:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":450,"nodeType":"UserDefinedTypeName","pathNode":{"id":449,"name":"IERC20Upgradeable","nameLocations":["1447:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1447:17:4"},"referencedDeclaration":378,"src":"1447:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":453,"mutability":"mutable","name":"from","nameLocation":"1480:4:4","nodeType":"VariableDeclaration","scope":474,"src":"1472:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":452,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":455,"mutability":"mutable","name":"to","nameLocation":"1494:2:4","nodeType":"VariableDeclaration","scope":474,"src":"1486:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":454,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":457,"mutability":"mutable","name":"value","nameLocation":"1506:5:4","nodeType":"VariableDeclaration","scope":474,"src":"1498:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1446:66:4"},"returnParameters":{"id":459,"nodeType":"ParameterList","parameters":[],"src":"1522:0:4"},"scope":790,"src":"1421:214:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":517,"nodeType":"Block","src":"1982:497:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"2231:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2240:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2231:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2230:12:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":494,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2271:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2263:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:4","typeDescriptions":{}}},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":496,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2278:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":490,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2247:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2253:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"2247:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2247:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2290:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2247:44:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2246:46:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2230:62:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2306:56:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":485,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2209:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:163:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":504,"nodeType":"ExpressionStatement","src":"2209:163:4"},{"expression":{"arguments":[{"id":506,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2402:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":509,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2432:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2438:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"2432:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2446:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2432:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":512,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2456:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"2465:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":507,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2409:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2413:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2409:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:62:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":505,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"2382:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2382:90:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":516,"nodeType":"ExpressionStatement","src":"2382:90:4"}]},"documentation":{"id":475,"nodeType":"StructuredDocumentation","src":"1641:249:4","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":518,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1904:11:4","nodeType":"FunctionDefinition","parameters":{"id":483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"token","nameLocation":"1934:5:4","nodeType":"VariableDeclaration","scope":518,"src":"1916:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":477,"nodeType":"UserDefinedTypeName","pathNode":{"id":476,"name":"IERC20Upgradeable","nameLocations":["1916:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1916:17:4"},"referencedDeclaration":378,"src":"1916:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"spender","nameLocation":"1949:7:4","nodeType":"VariableDeclaration","scope":518,"src":"1941:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":479,"name":"address","nodeType":"ElementaryTypeName","src":"1941:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"value","nameLocation":"1966:5:4","nodeType":"VariableDeclaration","scope":518,"src":"1958:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"1958:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1915:57:4"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"1982:0:4"},"scope":790,"src":"1895:584:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":554,"nodeType":"Block","src":"2767:194:4","statements":[{"assignments":[530],"declarations":[{"constant":false,"id":530,"mutability":"mutable","name":"oldAllowance","nameLocation":"2785:12:4","nodeType":"VariableDeclaration","scope":554,"src":"2777:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":529,"name":"uint256","nodeType":"ElementaryTypeName","src":"2777:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":539,"initialValue":{"arguments":[{"arguments":[{"id":535,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2824:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2816:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"2816:7:4","typeDescriptions":{}}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2816:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":537,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2831:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":531,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2800:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2806:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"2800:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2800:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2777:62:4"},{"expression":{"arguments":[{"id":541,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2869:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":544,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2899:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2905:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"2899:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2913:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2899:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":547,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2923:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":548,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"2932:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"2947:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":542,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2876:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2880:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2876:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2876:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":540,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"2849:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2849:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":553,"nodeType":"ExpressionStatement","src":"2849:105:4"}]},"documentation":{"id":519,"nodeType":"StructuredDocumentation","src":"2485:180:4","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":555,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2679:21:4","nodeType":"FunctionDefinition","parameters":{"id":527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"token","nameLocation":"2719:5:4","nodeType":"VariableDeclaration","scope":555,"src":"2701:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":521,"nodeType":"UserDefinedTypeName","pathNode":{"id":520,"name":"IERC20Upgradeable","nameLocations":["2701:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"2701:17:4"},"referencedDeclaration":378,"src":"2701:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":524,"mutability":"mutable","name":"spender","nameLocation":"2734:7:4","nodeType":"VariableDeclaration","scope":555,"src":"2726:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":523,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":526,"mutability":"mutable","name":"value","nameLocation":"2751:5:4","nodeType":"VariableDeclaration","scope":555,"src":"2743:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":525,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2700:57:4"},"returnParameters":{"id":528,"nodeType":"ParameterList","parameters":[],"src":"2767:0:4"},"scope":790,"src":"2670:291:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":599,"nodeType":"Block","src":"3249:321:4","statements":[{"id":598,"nodeType":"UncheckedBlock","src":"3259:305:4","statements":[{"assignments":[567],"declarations":[{"constant":false,"id":567,"mutability":"mutable","name":"oldAllowance","nameLocation":"3291:12:4","nodeType":"VariableDeclaration","scope":598,"src":"3283:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":566,"name":"uint256","nodeType":"ElementaryTypeName","src":"3283:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":576,"initialValue":{"arguments":[{"arguments":[{"id":572,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3330:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3322:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"3322:7:4","typeDescriptions":{}}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3322:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":574,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"3337:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":568,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3306:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3312:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"3306:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3306:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3283:62:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":578,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"3367:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"3383:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3367:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3390:43:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":577,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3359:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":583,"nodeType":"ExpressionStatement","src":"3359:75:4"},{"expression":{"arguments":[{"id":585,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3468:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":588,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3498:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3504:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"3498:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3512:8:4","memberName":"selector","nodeType":"MemberAccess","src":"3498:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":591,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"3522:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":592,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"3531:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":593,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"3546:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3531:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":586,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3475:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3479:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3475:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3475:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":584,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"3448:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3448:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":597,"nodeType":"ExpressionStatement","src":"3448:105:4"}]}]},"documentation":{"id":556,"nodeType":"StructuredDocumentation","src":"2967:180:4","text":" @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":600,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"3161:21:4","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":559,"mutability":"mutable","name":"token","nameLocation":"3201:5:4","nodeType":"VariableDeclaration","scope":600,"src":"3183:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":558,"nodeType":"UserDefinedTypeName","pathNode":{"id":557,"name":"IERC20Upgradeable","nameLocations":["3183:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3183:17:4"},"referencedDeclaration":378,"src":"3183:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":561,"mutability":"mutable","name":"spender","nameLocation":"3216:7:4","nodeType":"VariableDeclaration","scope":600,"src":"3208:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":560,"name":"address","nodeType":"ElementaryTypeName","src":"3208:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":563,"mutability":"mutable","name":"value","nameLocation":"3233:5:4","nodeType":"VariableDeclaration","scope":600,"src":"3225:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":562,"name":"uint256","nodeType":"ElementaryTypeName","src":"3225:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3182:57:4"},"returnParameters":{"id":565,"nodeType":"ParameterList","parameters":[],"src":"3249:0:4"},"scope":790,"src":"3152:418:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":646,"nodeType":"Block","src":"3977:333:4","statements":[{"assignments":[612],"declarations":[{"constant":false,"id":612,"mutability":"mutable","name":"approvalCall","nameLocation":"4000:12:4","nodeType":"VariableDeclaration","scope":646,"src":"3987:25:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":611,"name":"bytes","nodeType":"ElementaryTypeName","src":"3987:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":621,"initialValue":{"arguments":[{"expression":{"expression":{"id":615,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4038:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4044:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"4038:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4052:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4038:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":618,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"4062:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"4071:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":613,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4015:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4019:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4015:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4015:62:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3987:90:4"},{"condition":{"id":626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4092:45:4","subExpression":{"arguments":[{"id":623,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4117:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"id":624,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"4124:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":622,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"4093:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20Upgradeable,bytes memory) returns (bool)"}},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4093:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":645,"nodeType":"IfStatement","src":"4088:216:4","trueBody":{"id":644,"nodeType":"Block","src":"4139:165:4","statements":[{"expression":{"arguments":[{"id":628,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4173:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":631,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4203:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4209:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"4203:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4217:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4203:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":634,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"4227:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":629,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4180:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4184:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4180:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4180:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":627,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"4153:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4153:86:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":638,"nodeType":"ExpressionStatement","src":"4153:86:4"},{"expression":{"arguments":[{"id":640,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4273:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"id":641,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"4280:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":639,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"4253:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4253:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":643,"nodeType":"ExpressionStatement","src":"4253:40:4"}]}}]},"documentation":{"id":601,"nodeType":"StructuredDocumentation","src":"3576:308:4","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT."},"id":647,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"3898:12:4","nodeType":"FunctionDefinition","parameters":{"id":609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"token","nameLocation":"3929:5:4","nodeType":"VariableDeclaration","scope":647,"src":"3911:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":603,"nodeType":"UserDefinedTypeName","pathNode":{"id":602,"name":"IERC20Upgradeable","nameLocations":["3911:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3911:17:4"},"referencedDeclaration":378,"src":"3911:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":606,"mutability":"mutable","name":"spender","nameLocation":"3944:7:4","nodeType":"VariableDeclaration","scope":647,"src":"3936:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":605,"name":"address","nodeType":"ElementaryTypeName","src":"3936:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":608,"mutability":"mutable","name":"value","nameLocation":"3961:5:4","nodeType":"VariableDeclaration","scope":647,"src":"3953:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":607,"name":"uint256","nodeType":"ElementaryTypeName","src":"3953:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3910:57:4"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[],"src":"3977:0:4"},"scope":790,"src":"3889:421:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":703,"nodeType":"Block","src":"4688:257:4","statements":[{"assignments":[669],"declarations":[{"constant":false,"id":669,"mutability":"mutable","name":"nonceBefore","nameLocation":"4706:11:4","nodeType":"VariableDeclaration","scope":703,"src":"4698:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":668,"name":"uint256","nodeType":"ElementaryTypeName","src":"4698:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":674,"initialValue":{"arguments":[{"id":672,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4733:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":670,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4720:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4726:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":407,"src":"4720:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4720:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4698:41:4"},{"expression":{"arguments":[{"id":678,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4762:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":679,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"4769:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"4778:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":681,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":659,"src":"4785:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":682,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":661,"src":"4795:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":683,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"4798:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":684,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"4801:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":675,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4749:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4755:6:4","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":399,"src":"4749:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:54:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":686,"nodeType":"ExpressionStatement","src":"4749:54:4"},{"assignments":[688],"declarations":[{"constant":false,"id":688,"mutability":"mutable","name":"nonceAfter","nameLocation":"4821:10:4","nodeType":"VariableDeclaration","scope":703,"src":"4813:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"4813:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":693,"initialValue":{"arguments":[{"id":691,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4847:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":689,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4834:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4840:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":407,"src":"4834:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4813:40:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":695,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"4871:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":696,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4885:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4899:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4885:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4871:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4902:35:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":694,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4863:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4863:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":702,"nodeType":"ExpressionStatement","src":"4863:75:4"}]},"documentation":{"id":648,"nodeType":"StructuredDocumentation","src":"4316:141:4","text":" @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n Revert on invalid signature."},"id":704,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"4471:10:4","nodeType":"FunctionDefinition","parameters":{"id":666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"token","nameLocation":"4515:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4491:29:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"},"typeName":{"id":650,"nodeType":"UserDefinedTypeName","pathNode":{"id":649,"name":"IERC20PermitUpgradeable","nameLocations":["4491:23:4"],"nodeType":"IdentifierPath","referencedDeclaration":414,"src":"4491:23:4"},"referencedDeclaration":414,"src":"4491:23:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"visibility":"internal"},{"constant":false,"id":653,"mutability":"mutable","name":"owner","nameLocation":"4538:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4530:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":652,"name":"address","nodeType":"ElementaryTypeName","src":"4530:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":655,"mutability":"mutable","name":"spender","nameLocation":"4561:7:4","nodeType":"VariableDeclaration","scope":704,"src":"4553:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":654,"name":"address","nodeType":"ElementaryTypeName","src":"4553:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":657,"mutability":"mutable","name":"value","nameLocation":"4586:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4578:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":656,"name":"uint256","nodeType":"ElementaryTypeName","src":"4578:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":659,"mutability":"mutable","name":"deadline","nameLocation":"4609:8:4","nodeType":"VariableDeclaration","scope":704,"src":"4601:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":658,"name":"uint256","nodeType":"ElementaryTypeName","src":"4601:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":661,"mutability":"mutable","name":"v","nameLocation":"4633:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4627:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":660,"name":"uint8","nodeType":"ElementaryTypeName","src":"4627:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":663,"mutability":"mutable","name":"r","nameLocation":"4652:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4644:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4644:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":665,"mutability":"mutable","name":"s","nameLocation":"4671:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4663:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4663:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4481:197:4"},"returnParameters":{"id":667,"nodeType":"ParameterList","parameters":[],"src":"4688:0:4"},"scope":790,"src":"4462:483:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":740,"nodeType":"Block","src":"5409:572:4","statements":[{"assignments":[714],"declarations":[{"constant":false,"id":714,"mutability":"mutable","name":"returndata","nameLocation":"5771:10:4","nodeType":"VariableDeclaration","scope":740,"src":"5758:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":713,"name":"bytes","nodeType":"ElementaryTypeName","src":"5758:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":723,"initialValue":{"arguments":[{"id":720,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":710,"src":"5812:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5818:34:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":717,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"5792:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5784:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":715,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:4","typeDescriptions":{}}},"id":718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5799:12:4","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":880,"src":"5784:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5758:95:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":725,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"5871:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5882:6:4","memberName":"length","nodeType":"MemberAccess","src":"5871:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5892:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5871:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":731,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"5908:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5921:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":732,"name":"bool","nodeType":"ElementaryTypeName","src":"5921:4:4","typeDescriptions":{}}}],"id":734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5920:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":729,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5897:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5901:6:4","memberName":"decode","nodeType":"MemberAccess","src":"5897:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5897:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5871:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5929:44:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5863:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5863:111:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":739,"nodeType":"ExpressionStatement","src":"5863:111:4"}]},"documentation":{"id":705,"nodeType":"StructuredDocumentation","src":"4951:372:4","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":741,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"5337:19:4","nodeType":"FunctionDefinition","parameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":708,"mutability":"mutable","name":"token","nameLocation":"5375:5:4","nodeType":"VariableDeclaration","scope":741,"src":"5357:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":707,"nodeType":"UserDefinedTypeName","pathNode":{"id":706,"name":"IERC20Upgradeable","nameLocations":["5357:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"5357:17:4"},"referencedDeclaration":378,"src":"5357:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":710,"mutability":"mutable","name":"data","nameLocation":"5395:4:4","nodeType":"VariableDeclaration","scope":741,"src":"5382:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":709,"name":"bytes","nodeType":"ElementaryTypeName","src":"5382:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5356:44:4"},"returnParameters":{"id":712,"nodeType":"ParameterList","parameters":[],"src":"5409:0:4"},"scope":790,"src":"5328:653:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":788,"nodeType":"Block","src":"6582:516:4","statements":[{"assignments":[753,755],"declarations":[{"constant":false,"id":753,"mutability":"mutable","name":"success","nameLocation":"6883:7:4","nodeType":"VariableDeclaration","scope":788,"src":"6878:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":752,"name":"bool","nodeType":"ElementaryTypeName","src":"6878:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":755,"mutability":"mutable","name":"returndata","nameLocation":"6905:10:4","nodeType":"VariableDeclaration","scope":788,"src":"6892:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":754,"name":"bytes","nodeType":"ElementaryTypeName","src":"6892:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":763,"initialValue":{"arguments":[{"id":761,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"6939:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":758,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"6927:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6919:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":756,"name":"address","nodeType":"ElementaryTypeName","src":"6919:7:4","typeDescriptions":{}}},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6934:4:4","memberName":"call","nodeType":"MemberAccess","src":"6919:19:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6877:67:4"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"6973:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":765,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6985:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6996:6:4","memberName":"length","nodeType":"MemberAccess","src":"6985:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7006:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6985:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":771,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"7022:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7035:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":772,"name":"bool","nodeType":"ElementaryTypeName","src":"7035:4:4","typeDescriptions":{}}}],"id":774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7034:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":769,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7011:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7015:6:4","memberName":"decode","nodeType":"MemberAccess","src":"7011:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7011:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6985:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":777,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6984:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:69:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"arguments":[{"id":783,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"7084:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7076:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":781,"name":"address","nodeType":"ElementaryTypeName","src":"7076:7:4","typeDescriptions":{}}},"id":784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7076:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":779,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"7046:18:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1120_$","typeString":"type(library AddressUpgradeable)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7065:10:4","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":808,"src":"7046:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7046:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:118:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":751,"id":787,"nodeType":"Return","src":"6954:137:4"}]},"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"5987:490:4","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead."},"id":789,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"6491:23:4","nodeType":"FunctionDefinition","parameters":{"id":748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":745,"mutability":"mutable","name":"token","nameLocation":"6533:5:4","nodeType":"VariableDeclaration","scope":789,"src":"6515:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":744,"nodeType":"UserDefinedTypeName","pathNode":{"id":743,"name":"IERC20Upgradeable","nameLocations":["6515:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"6515:17:4"},"referencedDeclaration":378,"src":"6515:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":747,"mutability":"mutable","name":"data","nameLocation":"6553:4:4","nodeType":"VariableDeclaration","scope":789,"src":"6540:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":746,"name":"bytes","nodeType":"ElementaryTypeName","src":"6540:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6514:44:4"},"returnParameters":{"id":751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":789,"src":"6576:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":749,"name":"bool","nodeType":"ElementaryTypeName","src":"6576:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6575:6:4"},"scope":790,"src":"6482:616:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":791,"src":"734:6366:4","usedErrors":[]}],"src":"115:6986:4"},"id":4},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120]},"id":1121,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":792,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":793,"nodeType":"StructuredDocumentation","src":"126:67:5","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1120,"linearizedBaseContracts":[1120],"name":"AddressUpgradeable","nameLocation":"202:18:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":807,"nodeType":"Block","src":"1489:254:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":801,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1713:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:5","memberName":"code","nodeType":"MemberAccess","src":"1713:12:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:5","memberName":"length","nodeType":"MemberAccess","src":"1713:19:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":800,"id":806,"nodeType":"Return","src":"1706:30:5"}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"227:1191:5","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":808,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:5","nodeType":"FunctionDefinition","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"account","nameLocation":"1451:7:5","nodeType":"VariableDeclaration","scope":808,"src":"1443:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":795,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:5"},"returnParameters":{"id":800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":808,"src":"1483:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":798,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:5"},"scope":1120,"src":"1423:320:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"2729:241:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":819,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2755:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}],"id":818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":817,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:5","typeDescriptions":{}}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:5","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":822,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2772:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":816,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2739:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":826,"nodeType":"ExpressionStatement","src":"2739:73:5"},{"assignments":[828,null],"declarations":[{"constant":false,"id":828,"mutability":"mutable","name":"success","nameLocation":"2829:7:5","nodeType":"VariableDeclaration","scope":841,"src":"2824:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":827,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":835,"initialValue":{"arguments":[{"hexValue":"","id":833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":829,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"2842:9:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:5","memberName":"call","nodeType":"MemberAccess","src":"2842:14:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":831,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2864:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:5"},{"expression":{"arguments":[{"id":837,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"2893:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":836,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2885:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":840,"nodeType":"ExpressionStatement","src":"2885:78:5"}]},"documentation":{"id":809,"nodeType":"StructuredDocumentation","src":"1749:904:5","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:5","nodeType":"FunctionDefinition","parameters":{"id":814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:5","nodeType":"VariableDeclaration","scope":842,"src":"2677:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":810,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:5","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":813,"mutability":"mutable","name":"amount","nameLocation":"2712:6:5","nodeType":"VariableDeclaration","scope":842,"src":"2704:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":812,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:5"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[],"src":"2729:0:5"},"scope":1120,"src":"2658:312:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":859,"nodeType":"Block","src":"3801:96:5","statements":[{"expression":{"arguments":[{"id":853,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"3840:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":854,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"3848:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":852,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"3818:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":851,"id":858,"nodeType":"Return","src":"3811:79:5"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"2976:731:5","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":860,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:5","nodeType":"FunctionDefinition","parameters":{"id":848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"target","nameLocation":"3742:6:5","nodeType":"VariableDeclaration","scope":860,"src":"3734:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"3763:4:5","nodeType":"VariableDeclaration","scope":860,"src":"3750:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:5"},"returnParameters":{"id":851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":860,"src":"3787:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":849,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:5"},"scope":1120,"src":"3712:185:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":879,"nodeType":"Block","src":"4266:76:5","statements":[{"expression":{"arguments":[{"id":873,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"4305:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":874,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":865,"src":"4313:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":876,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"4322:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":872,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"4283:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":871,"id":878,"nodeType":"Return","src":"4276:59:5"}]},"documentation":{"id":861,"nodeType":"StructuredDocumentation","src":"3903:211:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":880,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:5","nodeType":"FunctionDefinition","parameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":863,"mutability":"mutable","name":"target","nameLocation":"4158:6:5","nodeType":"VariableDeclaration","scope":880,"src":"4150:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":862,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":865,"mutability":"mutable","name":"data","nameLocation":"4187:4:5","nodeType":"VariableDeclaration","scope":880,"src":"4174:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":864,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":867,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:5","nodeType":"VariableDeclaration","scope":880,"src":"4201:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":866,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:5"},"returnParameters":{"id":871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":880,"src":"4252:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":869,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:5"},"scope":1120,"src":"4119:223:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":899,"nodeType":"Block","src":"4817:111:5","statements":[{"expression":{"arguments":[{"id":893,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"4856:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":894,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"4864:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"4870:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":892,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"4834:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":891,"id":898,"nodeType":"Return","src":"4827:94:5"}]},"documentation":{"id":881,"nodeType":"StructuredDocumentation","src":"4348:351:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":900,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:5","nodeType":"FunctionDefinition","parameters":{"id":888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"target","nameLocation":"4743:6:5","nodeType":"VariableDeclaration","scope":900,"src":"4735:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":882,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":885,"mutability":"mutable","name":"data","nameLocation":"4764:4:5","nodeType":"VariableDeclaration","scope":900,"src":"4751:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":884,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":887,"mutability":"mutable","name":"value","nameLocation":"4778:5:5","nodeType":"VariableDeclaration","scope":900,"src":"4770:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":886,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:5"},"returnParameters":{"id":891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":900,"src":"4803:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":889,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:5"},"scope":1120,"src":"4704:224:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":943,"nodeType":"Block","src":"5355:267:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":917,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5381:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}],"id":916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":915,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:5","typeDescriptions":{}}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:5","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":920,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"5398:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":914,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5365:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":924,"nodeType":"ExpressionStatement","src":"5365:81:5"},{"assignments":[926,928],"declarations":[{"constant":false,"id":926,"mutability":"mutable","name":"success","nameLocation":"5462:7:5","nodeType":"VariableDeclaration","scope":943,"src":"5457:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":925,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":928,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:5","nodeType":"VariableDeclaration","scope":943,"src":"5471:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":927,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":935,"initialValue":{"arguments":[{"id":933,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":905,"src":"5524:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":929,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"5498:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:5","memberName":"call","nodeType":"MemberAccess","src":"5498:11:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"5517:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:5"},{"expression":{"arguments":[{"id":937,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"5573:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":938,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"5581:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":939,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"5590:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":940,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"5602:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":936,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"5546:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":913,"id":942,"nodeType":"Return","src":"5539:76:5"}]},"documentation":{"id":901,"nodeType":"StructuredDocumentation","src":"4934:237:5","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":944,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:5","nodeType":"FunctionDefinition","parameters":{"id":910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"target","nameLocation":"5224:6:5","nodeType":"VariableDeclaration","scope":944,"src":"5216:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":905,"mutability":"mutable","name":"data","nameLocation":"5253:4:5","nodeType":"VariableDeclaration","scope":944,"src":"5240:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":904,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":907,"mutability":"mutable","name":"value","nameLocation":"5275:5:5","nodeType":"VariableDeclaration","scope":944,"src":"5267:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":906,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:5","nodeType":"VariableDeclaration","scope":944,"src":"5290:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":908,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:5"},"returnParameters":{"id":913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":912,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":944,"src":"5341:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":911,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:5"},"scope":1120,"src":"5176:446:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":960,"nodeType":"Block","src":"5899:97:5","statements":[{"expression":{"arguments":[{"id":955,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":947,"src":"5935:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":956,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"5943:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":954,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[961,990],"referencedDeclaration":990,"src":"5916:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":953,"id":959,"nodeType":"Return","src":"5909:80:5"}]},"documentation":{"id":945,"nodeType":"StructuredDocumentation","src":"5628:166:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":961,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:5","nodeType":"FunctionDefinition","parameters":{"id":950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":947,"mutability":"mutable","name":"target","nameLocation":"5835:6:5","nodeType":"VariableDeclaration","scope":961,"src":"5827:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":946,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":949,"mutability":"mutable","name":"data","nameLocation":"5856:4:5","nodeType":"VariableDeclaration","scope":961,"src":"5843:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":948,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:5"},"returnParameters":{"id":953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":961,"src":"5885:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":951,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:5"},"scope":1120,"src":"5799:197:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":989,"nodeType":"Block","src":"6338:168:5","statements":[{"assignments":[974,976],"declarations":[{"constant":false,"id":974,"mutability":"mutable","name":"success","nameLocation":"6354:7:5","nodeType":"VariableDeclaration","scope":989,"src":"6349:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":973,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":976,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:5","nodeType":"VariableDeclaration","scope":989,"src":"6363:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":975,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":981,"initialValue":{"arguments":[{"id":979,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"6408:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":977,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"6390:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:5","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:5","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:5"},{"expression":{"arguments":[{"id":983,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"6457:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":984,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"6465:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":985,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"6474:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":986,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"6486:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":982,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"6430:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":972,"id":988,"nodeType":"Return","src":"6423:76:5"}]},"documentation":{"id":962,"nodeType":"StructuredDocumentation","src":"6002:173:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":990,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:5","nodeType":"FunctionDefinition","parameters":{"id":969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":964,"mutability":"mutable","name":"target","nameLocation":"6225:6:5","nodeType":"VariableDeclaration","scope":990,"src":"6217:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":963,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":966,"mutability":"mutable","name":"data","nameLocation":"6254:4:5","nodeType":"VariableDeclaration","scope":990,"src":"6241:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":965,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":968,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:5","nodeType":"VariableDeclaration","scope":990,"src":"6268:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":967,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:5"},"returnParameters":{"id":972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":990,"src":"6324:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":970,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:5"},"scope":1120,"src":"6180:326:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1006,"nodeType":"Block","src":"6782:101:5","statements":[{"expression":{"arguments":[{"id":1001,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"6820:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1002,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":995,"src":"6828:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":1000,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[1007,1036],"referencedDeclaration":1036,"src":"6799:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":999,"id":1005,"nodeType":"Return","src":"6792:84:5"}]},"documentation":{"id":991,"nodeType":"StructuredDocumentation","src":"6512:168:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1007,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:5","nodeType":"FunctionDefinition","parameters":{"id":996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":993,"mutability":"mutable","name":"target","nameLocation":"6723:6:5","nodeType":"VariableDeclaration","scope":1007,"src":"6715:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":992,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":995,"mutability":"mutable","name":"data","nameLocation":"6744:4:5","nodeType":"VariableDeclaration","scope":1007,"src":"6731:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":994,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:5"},"returnParameters":{"id":999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1007,"src":"6768:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":997,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:5"},"scope":1120,"src":"6685:198:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1035,"nodeType":"Block","src":"7224:170:5","statements":[{"assignments":[1020,1022],"declarations":[{"constant":false,"id":1020,"mutability":"mutable","name":"success","nameLocation":"7240:7:5","nodeType":"VariableDeclaration","scope":1035,"src":"7235:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1019,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1022,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:5","nodeType":"VariableDeclaration","scope":1035,"src":"7249:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1021,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1027,"initialValue":{"arguments":[{"id":1025,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"7296:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1023,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"7276:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:5","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:5","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:5"},{"expression":{"arguments":[{"id":1029,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"7345:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1030,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"7353:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1031,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"7362:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1032,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1014,"src":"7374:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1028,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"7318:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1018,"id":1034,"nodeType":"Return","src":"7311:76:5"}]},"documentation":{"id":1008,"nodeType":"StructuredDocumentation","src":"6889:175:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1036,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:5","nodeType":"FunctionDefinition","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1010,"mutability":"mutable","name":"target","nameLocation":"7116:6:5","nodeType":"VariableDeclaration","scope":1036,"src":"7108:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1009,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1012,"mutability":"mutable","name":"data","nameLocation":"7145:4:5","nodeType":"VariableDeclaration","scope":1036,"src":"7132:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1011,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1014,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:5","nodeType":"VariableDeclaration","scope":1036,"src":"7159:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1013,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:5"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1036,"src":"7210:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1016,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:5"},"scope":1120,"src":"7069:325:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1074,"nodeType":"Block","src":"7876:434:5","statements":[{"condition":{"id":1050,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"7890:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1072,"nodeType":"Block","src":"8246:58:5","statements":[{"expression":{"arguments":[{"id":1068,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"8268:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1069,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"8280:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1067,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"8260:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1071,"nodeType":"ExpressionStatement","src":"8260:33:5"}]},"id":1073,"nodeType":"IfStatement","src":"7886:418:5","trueBody":{"id":1066,"nodeType":"Block","src":"7899:341:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1051,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"7917:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:5","memberName":"length","nodeType":"MemberAccess","src":"7917:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"7913:286:5","trueBody":{"id":1062,"nodeType":"Block","src":"7941:258:5","statements":[{"expression":{"arguments":[{"arguments":[{"id":1057,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1039,"src":"8143:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1056,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"8132:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":1055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8124:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1061,"nodeType":"ExpressionStatement","src":"8124:60:5"}]}},{"expression":{"id":1064,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"8219:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1049,"id":1065,"nodeType":"Return","src":"8212:17:5"}]}}]},"documentation":{"id":1037,"nodeType":"StructuredDocumentation","src":"7400:277:5","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":1075,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:5","nodeType":"FunctionDefinition","parameters":{"id":1046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1039,"mutability":"mutable","name":"target","nameLocation":"7735:6:5","nodeType":"VariableDeclaration","scope":1075,"src":"7727:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1038,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1041,"mutability":"mutable","name":"success","nameLocation":"7756:7:5","nodeType":"VariableDeclaration","scope":1075,"src":"7751:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1040,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1043,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:5","nodeType":"VariableDeclaration","scope":1075,"src":"7773:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1042,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1045,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:5","nodeType":"VariableDeclaration","scope":1075,"src":"7806:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1044,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:5"},"returnParameters":{"id":1049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1075,"src":"7862:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1047,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:5"},"scope":1120,"src":"7682:628:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1098,"nodeType":"Block","src":"8691:135:5","statements":[{"condition":{"id":1087,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"8705:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1096,"nodeType":"Block","src":"8762:58:5","statements":[{"expression":{"arguments":[{"id":1092,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"8784:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1093,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"8796:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1091,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"8776:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1095,"nodeType":"ExpressionStatement","src":"8776:33:5"}]},"id":1097,"nodeType":"IfStatement","src":"8701:119:5","trueBody":{"id":1090,"nodeType":"Block","src":"8714:42:5","statements":[{"expression":{"id":1088,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"8735:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1086,"id":1089,"nodeType":"Return","src":"8728:17:5"}]}}]},"documentation":{"id":1076,"nodeType":"StructuredDocumentation","src":"8316:210:5","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":1099,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:5","nodeType":"FunctionDefinition","parameters":{"id":1083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1078,"mutability":"mutable","name":"success","nameLocation":"8571:7:5","nodeType":"VariableDeclaration","scope":1099,"src":"8566:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1077,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1080,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:5","nodeType":"VariableDeclaration","scope":1099,"src":"8588:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1079,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1082,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:5","nodeType":"VariableDeclaration","scope":1099,"src":"8621:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1081,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:5"},"returnParameters":{"id":1086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1099,"src":"8677:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1084,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:5"},"scope":1120,"src":"8531:295:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1118,"nodeType":"Block","src":"8915:457:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1106,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"8991:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:5","memberName":"length","nodeType":"MemberAccess","src":"8991:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1116,"nodeType":"Block","src":"9321:45:5","statements":[{"expression":{"arguments":[{"id":1113,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"9342:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1112,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9335:6:5","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1115,"nodeType":"ExpressionStatement","src":"9335:20:5"}]},"id":1117,"nodeType":"IfStatement","src":"8987:379:5","trueBody":{"id":1111,"nodeType":"Block","src":"9014:301:5","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:5","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:5","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:5"},"nodeType":"YulFunctionCall","src":"9213:17:5"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:5","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:5","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:5"},"nodeType":"YulFunctionCall","src":"9254:19:5"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:5"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:5"},"nodeType":"YulFunctionCall","src":"9247:44:5"},"nodeType":"YulExpressionStatement","src":"9247:44:5"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1101,"isOffset":false,"isSlot":false,"src":"9219:10:5","valueSize":1},{"declaration":1101,"isOffset":false,"isSlot":false,"src":"9262:10:5","valueSize":1}],"id":1110,"nodeType":"InlineAssembly","src":"9163:142:5"}]}}]},"id":1119,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:5","nodeType":"FunctionDefinition","parameters":{"id":1104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1101,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:5","nodeType":"VariableDeclaration","scope":1119,"src":"8849:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1100,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1103,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:5","nodeType":"VariableDeclaration","scope":1119,"src":"8874:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1102,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:5"},"returnParameters":{"id":1105,"nodeType":"ParameterList","parameters":[],"src":"8915:0:5"},"scope":1120,"src":"8832:540:5","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1121,"src":"194:9180:5","usedErrors":[]}],"src":"101:9274:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300]},"id":1163,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1122,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:6"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1123,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1163,"sourceUnit":301,"src":"110:42:6","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1125,"name":"Initializable","nameLocations":["691:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":300,"src":"691:13:6"},"id":1126,"nodeType":"InheritanceSpecifier","src":"691:13:6"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1124,"nodeType":"StructuredDocumentation","src":"154:496:6","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1162,"linearizedBaseContracts":[1162,300],"name":"ContextUpgradeable","nameLocation":"669:18:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":1131,"nodeType":"Block","src":"763:7:6","statements":[]},"id":1132,"implemented":true,"kind":"function","modifiers":[{"id":1129,"kind":"modifierInvocation","modifierName":{"id":1128,"name":"onlyInitializing","nameLocations":["746:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"746:16:6"},"nodeType":"ModifierInvocation","src":"746:16:6"}],"name":"__Context_init","nameLocation":"720:14:6","nodeType":"FunctionDefinition","parameters":{"id":1127,"nodeType":"ParameterList","parameters":[],"src":"734:2:6"},"returnParameters":{"id":1130,"nodeType":"ParameterList","parameters":[],"src":"763:0:6"},"scope":1162,"src":"711:59:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1137,"nodeType":"Block","src":"838:7:6","statements":[]},"id":1138,"implemented":true,"kind":"function","modifiers":[{"id":1135,"kind":"modifierInvocation","modifierName":{"id":1134,"name":"onlyInitializing","nameLocations":["821:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"821:16:6"},"nodeType":"ModifierInvocation","src":"821:16:6"}],"name":"__Context_init_unchained","nameLocation":"785:24:6","nodeType":"FunctionDefinition","parameters":{"id":1133,"nodeType":"ParameterList","parameters":[],"src":"809:2:6"},"returnParameters":{"id":1136,"nodeType":"ParameterList","parameters":[],"src":"838:0:6"},"scope":1162,"src":"776:69:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1146,"nodeType":"Block","src":"912:34:6","statements":[{"expression":{"expression":{"id":1143,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"929:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"933:6:6","memberName":"sender","nodeType":"MemberAccess","src":"929:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1142,"id":1145,"nodeType":"Return","src":"922:17:6"}]},"id":1147,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"859:10:6","nodeType":"FunctionDefinition","parameters":{"id":1139,"nodeType":"ParameterList","parameters":[],"src":"869:2:6"},"returnParameters":{"id":1142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1147,"src":"903:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1140,"name":"address","nodeType":"ElementaryTypeName","src":"903:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"902:9:6"},"scope":1162,"src":"850:96:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1155,"nodeType":"Block","src":"1019:32:6","statements":[{"expression":{"expression":{"id":1152,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1036:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1040:4:6","memberName":"data","nodeType":"MemberAccess","src":"1036:8:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1151,"id":1154,"nodeType":"Return","src":"1029:15:6"}]},"id":1156,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"961:8:6","nodeType":"FunctionDefinition","parameters":{"id":1148,"nodeType":"ParameterList","parameters":[],"src":"969:2:6"},"returnParameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1156,"src":"1003:14:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1149,"name":"bytes","nodeType":"ElementaryTypeName","src":"1003:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1002:16:6"},"scope":1162,"src":"952:99:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":1157,"nodeType":"StructuredDocumentation","src":"1057:254:6","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1161,"mutability":"mutable","name":"__gap","nameLocation":"1336:5:6","nodeType":"VariableDeclaration","scope":1162,"src":"1316:25:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"1316:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1160,"length":{"hexValue":"3530","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1324:2:6","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1316:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1163,"src":"651:693:6","usedErrors":[]}],"src":"86:1259:6"},"id":6},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[2623],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":1392,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1164,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:7"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","file":"./math/MathUpgradeable.sol","id":1165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1392,"sourceUnit":2624,"src":"126:36:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol","file":"./math/SignedMathUpgradeable.sol","id":1166,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1392,"sourceUnit":2729,"src":"163:42:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"StringsUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1167,"nodeType":"StructuredDocumentation","src":"207:34:7","text":" @dev String operations."},"fullyImplemented":true,"id":1391,"linearizedBaseContracts":[1391],"name":"StringsUpgradeable","nameLocation":"250:18:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1170,"mutability":"constant","name":"_SYMBOLS","nameLocation":"300:8:7","nodeType":"VariableDeclaration","scope":1391,"src":"275:54:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1168,"name":"bytes16","nodeType":"ElementaryTypeName","src":"275:7:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":1173,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"358:15:7","nodeType":"VariableDeclaration","scope":1391,"src":"335:43:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1171,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"376:2:7","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":1220,"nodeType":"Block","src":"551:636:7","statements":[{"id":1219,"nodeType":"UncheckedBlock","src":"561:620:7","statements":[{"assignments":[1182],"declarations":[{"constant":false,"id":1182,"mutability":"mutable","name":"length","nameLocation":"593:6:7","nodeType":"VariableDeclaration","scope":1219,"src":"585:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"585:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1189,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"624:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1183,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2623,"src":"602:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$2623_$","typeString":"type(library MathUpgradeable)"}},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"618:5:7","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":2460,"src":"602:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"602:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"633:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"602:32:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"585:49:7"},{"assignments":[1191],"declarations":[{"constant":false,"id":1191,"mutability":"mutable","name":"buffer","nameLocation":"662:6:7","nodeType":"VariableDeclaration","scope":1219,"src":"648:20:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1190,"name":"string","nodeType":"ElementaryTypeName","src":"648:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1196,"initialValue":{"arguments":[{"id":1194,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"682:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"671:10:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1192,"name":"string","nodeType":"ElementaryTypeName","src":"675:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"671:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"648:41:7"},{"assignments":[1198],"declarations":[{"constant":false,"id":1198,"mutability":"mutable","name":"ptr","nameLocation":"711:3:7","nodeType":"VariableDeclaration","scope":1219,"src":"703:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1197,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1199,"nodeType":"VariableDeclarationStatement","src":"703:11:7"},{"AST":{"nodeType":"YulBlock","src":"784:67:7","statements":[{"nodeType":"YulAssignment","src":"802:35:7","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"813:6:7"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"825:2:7","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"829:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"821:3:7"},"nodeType":"YulFunctionCall","src":"821:15:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"809:3:7"},"nodeType":"YulFunctionCall","src":"809:28:7"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"802:3:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1191,"isOffset":false,"isSlot":false,"src":"813:6:7","valueSize":1},{"declaration":1182,"isOffset":false,"isSlot":false,"src":"829:6:7","valueSize":1},{"declaration":1198,"isOffset":false,"isSlot":false,"src":"802:3:7","valueSize":1}],"id":1200,"nodeType":"InlineAssembly","src":"775:76:7"},{"body":{"id":1215,"nodeType":"Block","src":"877:267:7","statements":[{"expression":{"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"895:5:7","subExpression":{"id":1202,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"895:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1204,"nodeType":"ExpressionStatement","src":"895:5:7"},{"AST":{"nodeType":"YulBlock","src":"978:84:7","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1008:3:7"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1022:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"1029:2:7","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"1018:3:7"},"nodeType":"YulFunctionCall","src":"1018:14:7"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"1034:8:7"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"1013:4:7"},"nodeType":"YulFunctionCall","src":"1013:30:7"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"1000:7:7"},"nodeType":"YulFunctionCall","src":"1000:44:7"},"nodeType":"YulExpressionStatement","src":"1000:44:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1170,"isOffset":false,"isSlot":false,"src":"1034:8:7","valueSize":1},{"declaration":1198,"isOffset":false,"isSlot":false,"src":"1008:3:7","valueSize":1},{"declaration":1176,"isOffset":false,"isSlot":false,"src":"1022:5:7","valueSize":1}],"id":1205,"nodeType":"InlineAssembly","src":"969:93:7"},{"expression":{"id":1208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"1079:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1088:2:7","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1079:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1209,"nodeType":"ExpressionStatement","src":"1079:11:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"1112:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1121:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1112:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1214,"nodeType":"IfStatement","src":"1108:21:7","trueBody":{"id":1213,"nodeType":"Break","src":"1124:5:7"}}]},"condition":{"hexValue":"74727565","id":1201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"871:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1216,"nodeType":"WhileStatement","src":"864:280:7"},{"expression":{"id":1217,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1191,"src":"1164:6:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1180,"id":1218,"nodeType":"Return","src":"1157:13:7"}]}]},"documentation":{"id":1174,"nodeType":"StructuredDocumentation","src":"385:90:7","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":1221,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"489:8:7","nodeType":"FunctionDefinition","parameters":{"id":1177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1176,"mutability":"mutable","name":"value","nameLocation":"506:5:7","nodeType":"VariableDeclaration","scope":1221,"src":"498:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1175,"name":"uint256","nodeType":"ElementaryTypeName","src":"498:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"497:15:7"},"returnParameters":{"id":1180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1221,"src":"536:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1178,"name":"string","nodeType":"ElementaryTypeName","src":"536:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"535:15:7"},"scope":1391,"src":"480:707:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1248,"nodeType":"Block","src":"1357:114:7","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1224,"src":"1398:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1406:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1398:9:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1416:2:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1398:20:7","trueExpression":{"hexValue":"2d","id":1236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1410:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1224,"src":"1455:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1240,"name":"SignedMathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"1429:21:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMathUpgradeable_$2728_$","typeString":"type(library SignedMathUpgradeable)"}},"id":1241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1451:3:7","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":2727,"src":"1429:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1429:32:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1239,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[1221,1249],"referencedDeclaration":1221,"src":"1420:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1231,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1381:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1385:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"1381:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1381:82:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1374:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1229,"name":"string","nodeType":"ElementaryTypeName","src":"1374:6:7","typeDescriptions":{}}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1374:90:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1228,"id":1247,"nodeType":"Return","src":"1367:97:7"}]},"documentation":{"id":1222,"nodeType":"StructuredDocumentation","src":"1193:89:7","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":1249,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1296:8:7","nodeType":"FunctionDefinition","parameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1224,"mutability":"mutable","name":"value","nameLocation":"1312:5:7","nodeType":"VariableDeclaration","scope":1249,"src":"1305:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1223,"name":"int256","nodeType":"ElementaryTypeName","src":"1305:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1304:14:7"},"returnParameters":{"id":1228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1249,"src":"1342:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1226,"name":"string","nodeType":"ElementaryTypeName","src":"1342:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1341:15:7"},"scope":1391,"src":"1287:184:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1268,"nodeType":"Block","src":"1650:111:7","statements":[{"id":1267,"nodeType":"UncheckedBlock","src":"1660:95:7","statements":[{"expression":{"arguments":[{"id":1258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"1703:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1261,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"1733:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1259,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2623,"src":"1710:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$2623_$","typeString":"type(library MathUpgradeable)"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:7","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":2583,"src":"1710:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1710:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1742:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1710:33:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1257,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1269,1345,1365],"referencedDeclaration":1345,"src":"1691:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1691:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1256,"id":1266,"nodeType":"Return","src":"1684:60:7"}]}]},"documentation":{"id":1250,"nodeType":"StructuredDocumentation","src":"1477:94:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":1269,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1585:11:7","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1252,"mutability":"mutable","name":"value","nameLocation":"1605:5:7","nodeType":"VariableDeclaration","scope":1269,"src":"1597:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1251,"name":"uint256","nodeType":"ElementaryTypeName","src":"1597:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1596:15:7"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1269,"src":"1635:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1254,"name":"string","nodeType":"ElementaryTypeName","src":"1635:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1634:15:7"},"scope":1391,"src":"1576:185:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1344,"nodeType":"Block","src":"1974:347:7","statements":[{"assignments":[1280],"declarations":[{"constant":false,"id":1280,"mutability":"mutable","name":"buffer","nameLocation":"1997:6:7","nodeType":"VariableDeclaration","scope":1344,"src":"1984:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1279,"name":"bytes","nodeType":"ElementaryTypeName","src":"1984:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1289,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2016:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1284,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"2020:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2016:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2029:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2016:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2006:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1281,"name":"bytes","nodeType":"ElementaryTypeName","src":"2010:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2006:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1984:47:7"},{"expression":{"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1290,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2041:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1292,"indexExpression":{"hexValue":"30","id":1291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2048:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2041:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2053:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2041:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1295,"nodeType":"ExpressionStatement","src":"2041:15:7"},{"expression":{"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1296,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2066:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1298,"indexExpression":{"hexValue":"31","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2073:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2066:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2078:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2066:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1301,"nodeType":"ExpressionStatement","src":"2066:15:7"},{"body":{"id":1330,"nodeType":"Block","src":"2136:83:7","statements":[{"expression":{"id":1324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1316,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2150:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1318,"indexExpression":{"id":1317,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2157:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2150:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1319,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"2162:8:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1323,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2171:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:3:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2171:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2162:21:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2150:33:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1325,"nodeType":"ExpressionStatement","src":"2150:33:7"},{"expression":{"id":1328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2197:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2207:1:7","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2197:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1329,"nodeType":"ExpressionStatement","src":"2197:11:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1310,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2124:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2128:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2124:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1331,"initializationExpression":{"assignments":[1303],"declarations":[{"constant":false,"id":1303,"mutability":"mutable","name":"i","nameLocation":"2104:1:7","nodeType":"VariableDeclaration","scope":1331,"src":"2096:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1309,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2108:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1305,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"2112:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2108:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2121:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2108:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2096:26:7"},"loopExpression":{"expression":{"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2131:3:7","subExpression":{"id":1313,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2133:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1315,"nodeType":"ExpressionStatement","src":"2131:3:7"},"nodeType":"ForStatement","src":"2091:128:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2236:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2245:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2248:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":1332,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2228:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2228:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1338,"nodeType":"ExpressionStatement","src":"2228:55:7"},{"expression":{"arguments":[{"id":1341,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2307:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2300:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1339,"name":"string","nodeType":"ElementaryTypeName","src":"2300:6:7","typeDescriptions":{}}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1278,"id":1343,"nodeType":"Return","src":"2293:21:7"}]},"documentation":{"id":1270,"nodeType":"StructuredDocumentation","src":"1767:112:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":1345,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1893:11:7","nodeType":"FunctionDefinition","parameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"value","nameLocation":"1913:5:7","nodeType":"VariableDeclaration","scope":1345,"src":"1905:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"1905:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"length","nameLocation":"1928:6:7","nodeType":"VariableDeclaration","scope":1345,"src":"1920:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1273,"name":"uint256","nodeType":"ElementaryTypeName","src":"1920:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1904:31:7"},"returnParameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1345,"src":"1959:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1276,"name":"string","nodeType":"ElementaryTypeName","src":"1959:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1958:15:7"},"scope":1391,"src":"1884:437:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1364,"nodeType":"Block","src":"2546:76:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1358,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"2591:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2583:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1356,"name":"uint160","nodeType":"ElementaryTypeName","src":"2583:7:7","typeDescriptions":{}}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2583:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2575:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1354,"name":"uint256","nodeType":"ElementaryTypeName","src":"2575:7:7","typeDescriptions":{}}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2575:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1361,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"2599:15:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1353,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1269,1345,1365],"referencedDeclaration":1345,"src":"2563:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1352,"id":1363,"nodeType":"Return","src":"2556:59:7"}]},"documentation":{"id":1346,"nodeType":"StructuredDocumentation","src":"2327:141:7","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":1365,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2482:11:7","nodeType":"FunctionDefinition","parameters":{"id":1349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1348,"mutability":"mutable","name":"addr","nameLocation":"2502:4:7","nodeType":"VariableDeclaration","scope":1365,"src":"2494:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1347,"name":"address","nodeType":"ElementaryTypeName","src":"2494:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2493:14:7"},"returnParameters":{"id":1352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1365,"src":"2531:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1350,"name":"string","nodeType":"ElementaryTypeName","src":"2531:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2530:15:7"},"scope":1391,"src":"2473:149:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1389,"nodeType":"Block","src":"2777:66:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1378,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"2810:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2804:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1376,"name":"bytes","nodeType":"ElementaryTypeName","src":"2804:5:7","typeDescriptions":{}}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2804:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1375,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2794:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2794:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1384,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1370,"src":"2833:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2827:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1382,"name":"bytes","nodeType":"ElementaryTypeName","src":"2827:5:7","typeDescriptions":{}}},"id":1385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2827:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1381,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2817:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2817:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2794:42:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1374,"id":1388,"nodeType":"Return","src":"2787:49:7"}]},"documentation":{"id":1366,"nodeType":"StructuredDocumentation","src":"2628:66:7","text":" @dev Returns true if the two strings are equal."},"id":1390,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2708:5:7","nodeType":"FunctionDefinition","parameters":{"id":1371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1368,"mutability":"mutable","name":"a","nameLocation":"2728:1:7","nodeType":"VariableDeclaration","scope":1390,"src":"2714:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1367,"name":"string","nodeType":"ElementaryTypeName","src":"2714:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1370,"mutability":"mutable","name":"b","nameLocation":"2745:1:7","nodeType":"VariableDeclaration","scope":1390,"src":"2731:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1369,"name":"string","nodeType":"ElementaryTypeName","src":"2731:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2713:34:7"},"returnParameters":{"id":1374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1390,"src":"2771:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1372,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:7"},"scope":1391,"src":"2699:144:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1392,"src":"242:2603:7","usedErrors":[]}],"src":"101:2745:7"},"id":7},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","exportedSymbols":{"ECDSAUpgradeable":[1757],"MathUpgradeable":[2623],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":1758,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1393,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:8"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","file":"../StringsUpgradeable.sol","id":1394,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1758,"sourceUnit":1392,"src":"137:35:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSAUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1395,"nodeType":"StructuredDocumentation","src":"174:205:8","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":1757,"linearizedBaseContracts":[1757],"name":"ECDSAUpgradeable","nameLocation":"388:16:8","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSAUpgradeable.RecoverError","id":1401,"members":[{"id":1396,"name":"NoError","nameLocation":"439:7:8","nodeType":"EnumValue","src":"439:7:8"},{"id":1397,"name":"InvalidSignature","nameLocation":"456:16:8","nodeType":"EnumValue","src":"456:16:8"},{"id":1398,"name":"InvalidSignatureLength","nameLocation":"482:22:8","nodeType":"EnumValue","src":"482:22:8"},{"id":1399,"name":"InvalidSignatureS","nameLocation":"514:17:8","nodeType":"EnumValue","src":"514:17:8"},{"id":1400,"name":"InvalidSignatureV","nameLocation":"541:17:8","nodeType":"EnumValue","src":"541:17:8"}],"name":"RecoverError","nameLocation":"416:12:8","nodeType":"EnumDefinition","src":"411:175:8"},{"body":{"id":1444,"nodeType":"Block","src":"646:457:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1407,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"660:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1408,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"669:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"682:7:8","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":1396,"src":"669:20:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"660:29:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1413,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"756:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1414,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"765:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"778:16:8","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"765:29:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"756:38:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1422,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"865:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1423,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"874:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"887:22:8","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":1398,"src":"874:35:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"865:44:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1431,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"987:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1432,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"996:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1009:17:8","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":1399,"src":"996:30:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"987:39:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1440,"nodeType":"IfStatement","src":"983:114:8","trueBody":{"id":1439,"nodeType":"Block","src":"1028:69:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265202773272076616c7565","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1049:36:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""},"value":"ECDSA: invalid signature 's' value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""}],"id":1435,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1042:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1042:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1438,"nodeType":"ExpressionStatement","src":"1042:44:8"}]}},"id":1441,"nodeType":"IfStatement","src":"861:236:8","trueBody":{"id":1430,"nodeType":"Block","src":"911:66:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265206c656e677468","id":1427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"932:33:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""},"value":"ECDSA: invalid signature length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""}],"id":1426,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"925:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"925:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1429,"nodeType":"ExpressionStatement","src":"925:41:8"}]}},"id":1442,"nodeType":"IfStatement","src":"752:345:8","trueBody":{"id":1421,"nodeType":"Block","src":"796:59:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"817:26:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""},"value":"ECDSA: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""}],"id":1417,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"810:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"810:34:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1420,"nodeType":"ExpressionStatement","src":"810:34:8"}]}},"id":1443,"nodeType":"IfStatement","src":"656:441:8","trueBody":{"id":1412,"nodeType":"Block","src":"691:55:8","statements":[{"functionReturnParameters":1406,"id":1411,"nodeType":"Return","src":"705:7:8"}]}}]},"id":1445,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"601:11:8","nodeType":"FunctionDefinition","parameters":{"id":1405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1404,"mutability":"mutable","name":"error","nameLocation":"626:5:8","nodeType":"VariableDeclaration","scope":1445,"src":"613:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1403,"nodeType":"UserDefinedTypeName","pathNode":{"id":1402,"name":"RecoverError","nameLocations":["613:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"613:12:8"},"referencedDeclaration":1401,"src":"613:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"612:20:8"},"returnParameters":{"id":1406,"nodeType":"ParameterList","parameters":[],"src":"646:0:8"},"scope":1757,"src":"592:511:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1490,"nodeType":"Block","src":"2271:626:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1458,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"2285:9:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2295:6:8","memberName":"length","nodeType":"MemberAccess","src":"2285:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":1460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2305:2:8","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2285:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1488,"nodeType":"Block","src":"2810:81:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2840:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2832:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1480,"name":"address","nodeType":"ElementaryTypeName","src":"2832:7:8","typeDescriptions":{}}},"id":1483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1484,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"2844:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2857:22:8","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":1398,"src":"2844:35:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1486,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2831:49:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1457,"id":1487,"nodeType":"Return","src":"2824:56:8"}]},"id":1489,"nodeType":"IfStatement","src":"2281:610:8","trueBody":{"id":1479,"nodeType":"Block","src":"2309:495:8","statements":[{"assignments":[1463],"declarations":[{"constant":false,"id":1463,"mutability":"mutable","name":"r","nameLocation":"2331:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2323:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2323:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1464,"nodeType":"VariableDeclarationStatement","src":"2323:9:8"},{"assignments":[1466],"declarations":[{"constant":false,"id":1466,"mutability":"mutable","name":"s","nameLocation":"2354:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2346:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1465,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2346:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1467,"nodeType":"VariableDeclarationStatement","src":"2346:9:8"},{"assignments":[1469],"declarations":[{"constant":false,"id":1469,"mutability":"mutable","name":"v","nameLocation":"2375:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2369:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1468,"name":"uint8","nodeType":"ElementaryTypeName","src":"2369:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1470,"nodeType":"VariableDeclarationStatement","src":"2369:7:8"},{"AST":{"nodeType":"YulBlock","src":"2577:171:8","statements":[{"nodeType":"YulAssignment","src":"2595:32:8","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2610:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2621:4:8","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:8"},"nodeType":"YulFunctionCall","src":"2606:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2600:5:8"},"nodeType":"YulFunctionCall","src":"2600:27:8"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"2595:1:8"}]},{"nodeType":"YulAssignment","src":"2644:32:8","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2659:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2670:4:8","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2655:3:8"},"nodeType":"YulFunctionCall","src":"2655:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2649:5:8"},"nodeType":"YulFunctionCall","src":"2649:27:8"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"2644:1:8"}]},{"nodeType":"YulAssignment","src":"2693:41:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2703:1:8","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2716:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2727:4:8","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2712:3:8"},"nodeType":"YulFunctionCall","src":"2712:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2706:5:8"},"nodeType":"YulFunctionCall","src":"2706:27:8"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"2698:4:8"},"nodeType":"YulFunctionCall","src":"2698:36:8"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"2693:1:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1463,"isOffset":false,"isSlot":false,"src":"2595:1:8","valueSize":1},{"declaration":1466,"isOffset":false,"isSlot":false,"src":"2644:1:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2610:9:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2659:9:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2716:9:8","valueSize":1},{"declaration":1469,"isOffset":false,"isSlot":false,"src":"2693:1:8","valueSize":1}],"id":1471,"nodeType":"InlineAssembly","src":"2568:180:8"},{"expression":{"arguments":[{"id":1473,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1448,"src":"2779:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1474,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"2785:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1475,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2788:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1476,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2791:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1472,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"2768:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2768:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1457,"id":1478,"nodeType":"Return","src":"2761:32:8"}]}}]},"documentation":{"id":1446,"nodeType":"StructuredDocumentation","src":"1109:1053:8","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature` or error string. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n _Available since v4.3._"},"id":1491,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2176:10:8","nodeType":"FunctionDefinition","parameters":{"id":1451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1448,"mutability":"mutable","name":"hash","nameLocation":"2195:4:8","nodeType":"VariableDeclaration","scope":1491,"src":"2187:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1447,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2187:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1450,"mutability":"mutable","name":"signature","nameLocation":"2214:9:8","nodeType":"VariableDeclaration","scope":1491,"src":"2201:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1449,"name":"bytes","nodeType":"ElementaryTypeName","src":"2201:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2186:38:8"},"returnParameters":{"id":1457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1491,"src":"2248:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1452,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1491,"src":"2257:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1455,"nodeType":"UserDefinedTypeName","pathNode":{"id":1454,"name":"RecoverError","nameLocations":["2257:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"2257:12:8"},"referencedDeclaration":1401,"src":"2257:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"2247:23:8"},"scope":1757,"src":"2167:730:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1517,"nodeType":"Block","src":"3770:140:8","statements":[{"assignments":[1502,1505],"declarations":[{"constant":false,"id":1502,"mutability":"mutable","name":"recovered","nameLocation":"3789:9:8","nodeType":"VariableDeclaration","scope":1517,"src":"3781:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1501,"name":"address","nodeType":"ElementaryTypeName","src":"3781:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1505,"mutability":"mutable","name":"error","nameLocation":"3813:5:8","nodeType":"VariableDeclaration","scope":1517,"src":"3800:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1504,"nodeType":"UserDefinedTypeName","pathNode":{"id":1503,"name":"RecoverError","nameLocations":["3800:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"3800:12:8"},"referencedDeclaration":1401,"src":"3800:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1510,"initialValue":{"arguments":[{"id":1507,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1494,"src":"3833:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1508,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1496,"src":"3839:9:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1506,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1491,"src":"3822:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3822:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"3780:69:8"},{"expression":{"arguments":[{"id":1512,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1505,"src":"3871:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1511,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"3859:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1514,"nodeType":"ExpressionStatement","src":"3859:18:8"},{"expression":{"id":1515,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"3894:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1500,"id":1516,"nodeType":"Return","src":"3887:16:8"}]},"documentation":{"id":1492,"nodeType":"StructuredDocumentation","src":"2903:775:8","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it."},"id":1518,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3692:7:8","nodeType":"FunctionDefinition","parameters":{"id":1497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1494,"mutability":"mutable","name":"hash","nameLocation":"3708:4:8","nodeType":"VariableDeclaration","scope":1518,"src":"3700:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1493,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3700:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1496,"mutability":"mutable","name":"signature","nameLocation":"3727:9:8","nodeType":"VariableDeclaration","scope":1518,"src":"3714:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1495,"name":"bytes","nodeType":"ElementaryTypeName","src":"3714:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3699:38:8"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1499,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1518,"src":"3761:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1498,"name":"address","nodeType":"ElementaryTypeName","src":"3761:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3760:9:8"},"scope":1757,"src":"3683:227:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1564,"nodeType":"Block","src":"4267:203:8","statements":[{"assignments":[1534],"declarations":[{"constant":false,"id":1534,"mutability":"mutable","name":"s","nameLocation":"4285:1:8","nodeType":"VariableDeclaration","scope":1564,"src":"4277:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4277:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1541,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1535,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"4289:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":1538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4302:66:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":1537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4294:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4294:7:8","typeDescriptions":{}}},"id":1539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4294:75:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4289:80:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4277:92:8"},{"assignments":[1543],"declarations":[{"constant":false,"id":1543,"mutability":"mutable","name":"v","nameLocation":"4385:1:8","nodeType":"VariableDeclaration","scope":1564,"src":"4379:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1542,"name":"uint8","nodeType":"ElementaryTypeName","src":"4379:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1556,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1548,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"4404:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4396:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1546,"name":"uint256","nodeType":"ElementaryTypeName","src":"4396:7:8","typeDescriptions":{}}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4396:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4411:3:8","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4396:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1552,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4395:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":1553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4418:2:8","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4395:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4389:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1544,"name":"uint8","nodeType":"ElementaryTypeName","src":"4389:5:8","typeDescriptions":{}}},"id":1555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4389:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4379:42:8"},{"expression":{"arguments":[{"id":1558,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"4449:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1559,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"4455:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1560,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"4458:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1561,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1534,"src":"4461:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1557,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"4438:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1532,"id":1563,"nodeType":"Return","src":"4431:32:8"}]},"documentation":{"id":1519,"nodeType":"StructuredDocumentation","src":"3916:243:8","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n _Available since v4.3._"},"id":1565,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4173:10:8","nodeType":"FunctionDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1521,"mutability":"mutable","name":"hash","nameLocation":"4192:4:8","nodeType":"VariableDeclaration","scope":1565,"src":"4184:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1520,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4184:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1523,"mutability":"mutable","name":"r","nameLocation":"4206:1:8","nodeType":"VariableDeclaration","scope":1565,"src":"4198:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4198:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1525,"mutability":"mutable","name":"vs","nameLocation":"4217:2:8","nodeType":"VariableDeclaration","scope":1565,"src":"4209:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1524,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4209:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4183:37:8"},"returnParameters":{"id":1532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1565,"src":"4244:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1527,"name":"address","nodeType":"ElementaryTypeName","src":"4244:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1565,"src":"4253:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1530,"nodeType":"UserDefinedTypeName","pathNode":{"id":1529,"name":"RecoverError","nameLocations":["4253:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"4253:12:8"},"referencedDeclaration":1401,"src":"4253:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"4243:23:8"},"scope":1757,"src":"4164:306:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1594,"nodeType":"Block","src":"4721:136:8","statements":[{"assignments":[1578,1581],"declarations":[{"constant":false,"id":1578,"mutability":"mutable","name":"recovered","nameLocation":"4740:9:8","nodeType":"VariableDeclaration","scope":1594,"src":"4732:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1577,"name":"address","nodeType":"ElementaryTypeName","src":"4732:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"error","nameLocation":"4764:5:8","nodeType":"VariableDeclaration","scope":1594,"src":"4751:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1580,"nodeType":"UserDefinedTypeName","pathNode":{"id":1579,"name":"RecoverError","nameLocations":["4751:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"4751:12:8"},"referencedDeclaration":1401,"src":"4751:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1587,"initialValue":{"arguments":[{"id":1583,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"4784:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1584,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1570,"src":"4790:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1585,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1572,"src":"4793:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1582,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1565,"src":"4773:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4773:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"4731:65:8"},{"expression":{"arguments":[{"id":1589,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"4818:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1588,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"4806:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4806:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1591,"nodeType":"ExpressionStatement","src":"4806:18:8"},{"expression":{"id":1592,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"4841:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1576,"id":1593,"nodeType":"Return","src":"4834:16:8"}]},"documentation":{"id":1566,"nodeType":"StructuredDocumentation","src":"4476:154:8","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n _Available since v4.2._"},"id":1595,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4644:7:8","nodeType":"FunctionDefinition","parameters":{"id":1573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1568,"mutability":"mutable","name":"hash","nameLocation":"4660:4:8","nodeType":"VariableDeclaration","scope":1595,"src":"4652:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4652:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1570,"mutability":"mutable","name":"r","nameLocation":"4674:1:8","nodeType":"VariableDeclaration","scope":1595,"src":"4666:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4666:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1572,"mutability":"mutable","name":"vs","nameLocation":"4685:2:8","nodeType":"VariableDeclaration","scope":1595,"src":"4677:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1571,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4677:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4651:37:8"},"returnParameters":{"id":1576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1595,"src":"4712:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"4712:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4711:9:8"},"scope":1757,"src":"4635:222:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1658,"nodeType":"Block","src":"5142:1345:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1614,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"6038:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6030:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1612,"name":"uint256","nodeType":"ElementaryTypeName","src":"6030:7:8","typeDescriptions":{}}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6030:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":1616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6043:66:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6030:79:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1627,"nodeType":"IfStatement","src":"6026:161:8","trueBody":{"id":1626,"nodeType":"Block","src":"6111:76:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6141:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6133:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1618,"name":"address","nodeType":"ElementaryTypeName","src":"6133:7:8","typeDescriptions":{}}},"id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6133:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1622,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6145:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6158:17:8","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":1399,"src":"6145:30:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6132:44:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1625,"nodeType":"Return","src":"6125:51:8"}]}},{"assignments":[1629],"declarations":[{"constant":false,"id":1629,"mutability":"mutable","name":"signer","nameLocation":"6289:6:8","nodeType":"VariableDeclaration","scope":1658,"src":"6281:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1628,"name":"address","nodeType":"ElementaryTypeName","src":"6281:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1636,"initialValue":{"arguments":[{"id":1631,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1598,"src":"6308:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1632,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"6314:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1633,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"6317:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1634,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"6320:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1630,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6298:9:8","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6281:41:8"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1637,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"6336:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6354:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6346:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"6346:7:8","typeDescriptions":{}}},"id":1641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6346:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6336:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1652,"nodeType":"IfStatement","src":"6332:101:8","trueBody":{"id":1651,"nodeType":"Block","src":"6358:75:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6388:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6380:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1643,"name":"address","nodeType":"ElementaryTypeName","src":"6380:7:8","typeDescriptions":{}}},"id":1646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6380:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1647,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6392:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6405:16:8","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"6392:29:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1649,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6379:43:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1650,"nodeType":"Return","src":"6372:50:8"}]}},{"expression":{"components":[{"id":1653,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"6451:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1654,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6459:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6472:7:8","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":1396,"src":"6459:20:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1656,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6450:30:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1657,"nodeType":"Return","src":"6443:37:8"}]},"documentation":{"id":1596,"nodeType":"StructuredDocumentation","src":"4863:163:8","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately.\n _Available since v4.3._"},"id":1659,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5040:10:8","nodeType":"FunctionDefinition","parameters":{"id":1605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1598,"mutability":"mutable","name":"hash","nameLocation":"5059:4:8","nodeType":"VariableDeclaration","scope":1659,"src":"5051:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1597,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5051:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1600,"mutability":"mutable","name":"v","nameLocation":"5071:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5065:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1599,"name":"uint8","nodeType":"ElementaryTypeName","src":"5065:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1602,"mutability":"mutable","name":"r","nameLocation":"5082:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5074:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5074:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1604,"mutability":"mutable","name":"s","nameLocation":"5093:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5085:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5085:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5050:45:8"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1659,"src":"5119:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1606,"name":"address","nodeType":"ElementaryTypeName","src":"5119:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1659,"src":"5128:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1609,"nodeType":"UserDefinedTypeName","pathNode":{"id":1608,"name":"RecoverError","nameLocations":["5128:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"5128:12:8"},"referencedDeclaration":1401,"src":"5128:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"5118:23:8"},"scope":1757,"src":"5031:1456:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1691,"nodeType":"Block","src":"6714:138:8","statements":[{"assignments":[1674,1677],"declarations":[{"constant":false,"id":1674,"mutability":"mutable","name":"recovered","nameLocation":"6733:9:8","nodeType":"VariableDeclaration","scope":1691,"src":"6725:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1673,"name":"address","nodeType":"ElementaryTypeName","src":"6725:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"error","nameLocation":"6757:5:8","nodeType":"VariableDeclaration","scope":1691,"src":"6744:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1676,"nodeType":"UserDefinedTypeName","pathNode":{"id":1675,"name":"RecoverError","nameLocations":["6744:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"6744:12:8"},"referencedDeclaration":1401,"src":"6744:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1684,"initialValue":{"arguments":[{"id":1679,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1662,"src":"6777:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1680,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"6783:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1681,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"6786:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1682,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"6789:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1678,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"6766:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6766:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"6724:67:8"},{"expression":{"arguments":[{"id":1686,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"6813:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1685,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"6801:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6801:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1688,"nodeType":"ExpressionStatement","src":"6801:18:8"},{"expression":{"id":1689,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"6836:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1672,"id":1690,"nodeType":"Return","src":"6829:16:8"}]},"documentation":{"id":1660,"nodeType":"StructuredDocumentation","src":"6493:122:8","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":1692,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6629:7:8","nodeType":"FunctionDefinition","parameters":{"id":1669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1662,"mutability":"mutable","name":"hash","nameLocation":"6645:4:8","nodeType":"VariableDeclaration","scope":1692,"src":"6637:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6637:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1664,"mutability":"mutable","name":"v","nameLocation":"6657:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6651:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1663,"name":"uint8","nodeType":"ElementaryTypeName","src":"6651:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1666,"mutability":"mutable","name":"r","nameLocation":"6668:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6660:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6660:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1668,"mutability":"mutable","name":"s","nameLocation":"6679:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6671:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6671:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6636:45:8"},"returnParameters":{"id":1672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1692,"src":"6705:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"6705:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6704:9:8"},"scope":1757,"src":"6620:232:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1701,"nodeType":"Block","src":"7228:310:8","statements":[{"AST":{"nodeType":"YulBlock","src":"7384:148:8","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7405:4:8","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nodeType":"YulLiteral","src":"7411:34:8","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7398:6:8"},"nodeType":"YulFunctionCall","src":"7398:48:8"},"nodeType":"YulExpressionStatement","src":"7398:48:8"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7466:4:8","type":"","value":"0x1c"},{"name":"hash","nodeType":"YulIdentifier","src":"7472:4:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7459:6:8"},"nodeType":"YulFunctionCall","src":"7459:18:8"},"nodeType":"YulExpressionStatement","src":"7459:18:8"},{"nodeType":"YulAssignment","src":"7490:32:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7511:4:8","type":"","value":"0x00"},{"kind":"number","nodeType":"YulLiteral","src":"7517:4:8","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"7501:9:8"},"nodeType":"YulFunctionCall","src":"7501:21:8"},"variableNames":[{"name":"message","nodeType":"YulIdentifier","src":"7490:7:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1695,"isOffset":false,"isSlot":false,"src":"7472:4:8","valueSize":1},{"declaration":1698,"isOffset":false,"isSlot":false,"src":"7490:7:8","valueSize":1}],"id":1700,"nodeType":"InlineAssembly","src":"7375:157:8"}]},"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"6858:279:8","text":" @dev Returns an Ethereum Signed Message, created from a `hash`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":1702,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7151:22:8","nodeType":"FunctionDefinition","parameters":{"id":1696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"mutability":"mutable","name":"hash","nameLocation":"7182:4:8","nodeType":"VariableDeclaration","scope":1702,"src":"7174:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7174:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7173:14:8"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1698,"mutability":"mutable","name":"message","nameLocation":"7219:7:8","nodeType":"VariableDeclaration","scope":1702,"src":"7211:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7211:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7210:17:8"},"scope":1757,"src":"7142:396:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1723,"nodeType":"Block","src":"7903:127:8","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":1713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7947:32:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"expression":{"id":1716,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"8009:1:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8011:6:8","memberName":"length","nodeType":"MemberAccess","src":"8009:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1714,"name":"StringsUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1391,"src":"7981:18:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StringsUpgradeable_$1391_$","typeString":"type(library StringsUpgradeable)"}},"id":1715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8000:8:8","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1221,"src":"7981:27:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7981:37:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1719,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"8020:1:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1711,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7930:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7934:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"7930:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7930:92:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1710,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7920:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7920:103:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1709,"id":1722,"nodeType":"Return","src":"7913:110:8"}]},"documentation":{"id":1703,"nodeType":"StructuredDocumentation","src":"7544:274:8","text":" @dev Returns an Ethereum Signed Message, created from `s`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":1724,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7832:22:8","nodeType":"FunctionDefinition","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1705,"mutability":"mutable","name":"s","nameLocation":"7868:1:8","nodeType":"VariableDeclaration","scope":1724,"src":"7855:14:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1704,"name":"bytes","nodeType":"ElementaryTypeName","src":"7855:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7854:16:8"},"returnParameters":{"id":1709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1724,"src":"7894:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7894:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7893:9:8"},"scope":1757,"src":"7823:207:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1735,"nodeType":"Block","src":"8476:290:8","statements":[{"AST":{"nodeType":"YulBlock","src":"8538:222:8","statements":[{"nodeType":"YulVariableDeclaration","src":"8552:22:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8569:4:8","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8563:5:8"},"nodeType":"YulFunctionCall","src":"8563:11:8"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"8556:3:8","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8594:3:8"},{"hexValue":"1901","kind":"string","nodeType":"YulLiteral","src":"8599:10:8","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8587:6:8"},"nodeType":"YulFunctionCall","src":"8587:23:8"},"nodeType":"YulExpressionStatement","src":"8587:23:8"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8634:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8639:4:8","type":"","value":"0x02"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8630:3:8"},"nodeType":"YulFunctionCall","src":"8630:14:8"},{"name":"domainSeparator","nodeType":"YulIdentifier","src":"8646:15:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8623:6:8"},"nodeType":"YulFunctionCall","src":"8623:39:8"},"nodeType":"YulExpressionStatement","src":"8623:39:8"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8686:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8691:4:8","type":"","value":"0x22"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8682:3:8"},"nodeType":"YulFunctionCall","src":"8682:14:8"},{"name":"structHash","nodeType":"YulIdentifier","src":"8698:10:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8675:6:8"},"nodeType":"YulFunctionCall","src":"8675:34:8"},"nodeType":"YulExpressionStatement","src":"8675:34:8"},{"nodeType":"YulAssignment","src":"8722:28:8","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8740:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8745:4:8","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"8730:9:8"},"nodeType":"YulFunctionCall","src":"8730:20:8"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"8722:4:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1732,"isOffset":false,"isSlot":false,"src":"8722:4:8","valueSize":1},{"declaration":1727,"isOffset":false,"isSlot":false,"src":"8646:15:8","valueSize":1},{"declaration":1729,"isOffset":false,"isSlot":false,"src":"8698:10:8","valueSize":1}],"id":1734,"nodeType":"InlineAssembly","src":"8529:231:8"}]},"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"8036:328:8","text":" @dev Returns an Ethereum Signed Typed Data, created from a\n `domainSeparator` and a `structHash`. This produces hash corresponding\n to the one signed with the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n JSON-RPC method as part of EIP-712.\n See {recover}."},"id":1736,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"8378:15:8","nodeType":"FunctionDefinition","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"domainSeparator","nameLocation":"8402:15:8","nodeType":"VariableDeclaration","scope":1736,"src":"8394:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1726,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8394:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"structHash","nameLocation":"8427:10:8","nodeType":"VariableDeclaration","scope":1736,"src":"8419:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8419:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8393:45:8"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"data","nameLocation":"8470:4:8","nodeType":"VariableDeclaration","scope":1736,"src":"8462:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8462:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8461:14:8"},"scope":1757,"src":"8369:397:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1755,"nodeType":"Block","src":"9081:80:8","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":1749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9125:10:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":1750,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"9137:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1751,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"9148:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1747,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9108:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9112:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"9108:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9108:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1746,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9098:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9098:56:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1745,"id":1754,"nodeType":"Return","src":"9091:63:8"}]},"documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"8772:193:8","text":" @dev Returns an Ethereum Signed Data with intended validator, created from a\n `validator` and `data` according to the version 0 of EIP-191.\n See {recover}."},"id":1756,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"8979:31:8","nodeType":"FunctionDefinition","parameters":{"id":1742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1739,"mutability":"mutable","name":"validator","nameLocation":"9019:9:8","nodeType":"VariableDeclaration","scope":1756,"src":"9011:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1738,"name":"address","nodeType":"ElementaryTypeName","src":"9011:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1741,"mutability":"mutable","name":"data","nameLocation":"9043:4:8","nodeType":"VariableDeclaration","scope":1756,"src":"9030:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1740,"name":"bytes","nodeType":"ElementaryTypeName","src":"9030:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9010:38:8"},"returnParameters":{"id":1745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1756,"src":"9072:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1743,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9072:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9071:9:8"},"scope":1757,"src":"8970:191:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1758,"src":"380:8783:8","usedErrors":[]}],"src":"112:9052:8"},"id":8},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[2623]},"id":2624,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1759,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"MathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1760,"nodeType":"StructuredDocumentation","src":"128:73:9","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2623,"linearizedBaseContracts":[2623],"name":"MathUpgradeable","nameLocation":"210:15:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"MathUpgradeable.Rounding","id":1764,"members":[{"id":1761,"name":"Down","nameLocation":"256:4:9","nodeType":"EnumValue","src":"256:4:9"},{"id":1762,"name":"Up","nameLocation":"298:2:9","nodeType":"EnumValue","src":"298:2:9"},{"id":1763,"name":"Zero","nameLocation":"329:4:9","nodeType":"EnumValue","src":"329:4:9"}],"name":"Rounding","nameLocation":"237:8:9","nodeType":"EnumDefinition","src":"232:122:9"},{"body":{"id":1781,"nodeType":"Block","src":"491:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1774,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"508:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1775,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1769,"src":"512:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"508:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1778,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1769,"src":"520:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"508:13:9","trueExpression":{"id":1777,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"516:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1773,"id":1780,"nodeType":"Return","src":"501:20:9"}]},"documentation":{"id":1765,"nodeType":"StructuredDocumentation","src":"360:59:9","text":" @dev Returns the largest of two numbers."},"id":1782,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"433:3:9","nodeType":"FunctionDefinition","parameters":{"id":1770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1767,"mutability":"mutable","name":"a","nameLocation":"445:1:9","nodeType":"VariableDeclaration","scope":1782,"src":"437:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1766,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1769,"mutability":"mutable","name":"b","nameLocation":"456:1:9","nodeType":"VariableDeclaration","scope":1782,"src":"448:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1768,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"436:22:9"},"returnParameters":{"id":1773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1782,"src":"482:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1771,"name":"uint256","nodeType":"ElementaryTypeName","src":"482:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"481:9:9"},"scope":2623,"src":"424:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1799,"nodeType":"Block","src":"666:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1792,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"683:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1793,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"687:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"683:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1796,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"695:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"683:13:9","trueExpression":{"id":1795,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"691:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1791,"id":1798,"nodeType":"Return","src":"676:20:9"}]},"documentation":{"id":1783,"nodeType":"StructuredDocumentation","src":"534:60:9","text":" @dev Returns the smallest of two numbers."},"id":1800,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"608:3:9","nodeType":"FunctionDefinition","parameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1785,"mutability":"mutable","name":"a","nameLocation":"620:1:9","nodeType":"VariableDeclaration","scope":1800,"src":"612:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1784,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1787,"mutability":"mutable","name":"b","nameLocation":"631:1:9","nodeType":"VariableDeclaration","scope":1800,"src":"623:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1786,"name":"uint256","nodeType":"ElementaryTypeName","src":"623:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"611:22:9"},"returnParameters":{"id":1791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1800,"src":"657:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1789,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"656:9:9"},"scope":2623,"src":"599:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1822,"nodeType":"Block","src":"887:82:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1810,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"942:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1811,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"946:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"942:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1813,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"941:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1814,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"952:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1815,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"956:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"951:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"961:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"951:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1809,"id":1821,"nodeType":"Return","src":"934:28:9"}]},"documentation":{"id":1801,"nodeType":"StructuredDocumentation","src":"709:102:9","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":1823,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"825:7:9","nodeType":"FunctionDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1803,"mutability":"mutable","name":"a","nameLocation":"841:1:9","nodeType":"VariableDeclaration","scope":1823,"src":"833:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1802,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1805,"mutability":"mutable","name":"b","nameLocation":"852:1:9","nodeType":"VariableDeclaration","scope":1823,"src":"844:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"844:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"832:22:9"},"returnParameters":{"id":1809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1808,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1823,"src":"878:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1807,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"877:9:9"},"scope":2623,"src":"816:153:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1847,"nodeType":"Block","src":"1239:123:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1833,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"1327:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1332:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1327:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1837,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"1341:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1341:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1840,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1340:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1841,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"1350:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1354:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1340:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1327:28:9","trueExpression":{"hexValue":"30","id":1836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1336:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1832,"id":1846,"nodeType":"Return","src":"1320:35:9"}]},"documentation":{"id":1824,"nodeType":"StructuredDocumentation","src":"975:188:9","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":1848,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1177:7:9","nodeType":"FunctionDefinition","parameters":{"id":1829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"a","nameLocation":"1193:1:9","nodeType":"VariableDeclaration","scope":1848,"src":"1185:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1825,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1828,"mutability":"mutable","name":"b","nameLocation":"1204:1:9","nodeType":"VariableDeclaration","scope":1848,"src":"1196:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1196:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1184:22:9"},"returnParameters":{"id":1832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1848,"src":"1230:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1830,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:9"},"scope":2623,"src":"1168:194:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1970,"nodeType":"Block","src":"1776:4115:9","statements":[{"id":1969,"nodeType":"UncheckedBlock","src":"1786:4099:9","statements":[{"assignments":[1861],"declarations":[{"constant":false,"id":1861,"mutability":"mutable","name":"prod0","nameLocation":"2115:5:9","nodeType":"VariableDeclaration","scope":1969,"src":"2107:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1860,"name":"uint256","nodeType":"ElementaryTypeName","src":"2107:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1862,"nodeType":"VariableDeclarationStatement","src":"2107:13:9"},{"assignments":[1864],"declarations":[{"constant":false,"id":1864,"mutability":"mutable","name":"prod1","nameLocation":"2187:5:9","nodeType":"VariableDeclaration","scope":1969,"src":"2179:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1863,"name":"uint256","nodeType":"ElementaryTypeName","src":"2179:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1865,"nodeType":"VariableDeclarationStatement","src":"2179:13:9"},{"AST":{"nodeType":"YulBlock","src":"2259:157:9","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:30:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2294:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2297:1:9"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2304:1:9","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2300:3:9"},"nodeType":"YulFunctionCall","src":"2300:6:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2287:6:9"},"nodeType":"YulFunctionCall","src":"2287:20:9"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2281:2:9","type":""}]},{"nodeType":"YulAssignment","src":"2324:18:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2337:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2340:1:9"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2333:3:9"},"nodeType":"YulFunctionCall","src":"2333:9:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2324:5:9"}]},{"nodeType":"YulAssignment","src":"2359:43:9","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2376:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2380:5:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2372:3:9"},"nodeType":"YulFunctionCall","src":"2372:14:9"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2391:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2395:5:9"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2388:2:9"},"nodeType":"YulFunctionCall","src":"2388:13:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2368:3:9"},"nodeType":"YulFunctionCall","src":"2368:34:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2359:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2324:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2380:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2395:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"2359:5:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"2294:1:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"2337:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"2297:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"2340:1:9","valueSize":1}],"id":1866,"nodeType":"InlineAssembly","src":"2250:166:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1867,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2497:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2506:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2497:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1875,"nodeType":"IfStatement","src":"2493:368:9","trueBody":{"id":1874,"nodeType":"Block","src":"2509:352:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1870,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"2827:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1871,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"2835:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2827:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1859,"id":1873,"nodeType":"Return","src":"2820:26:9"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1877,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"2971:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1878,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2985:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2971:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":1880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2992:23:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":1876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2963:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2963:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1882,"nodeType":"ExpressionStatement","src":"2963:53:9"},{"assignments":[1884],"declarations":[{"constant":false,"id":1884,"mutability":"mutable","name":"remainder","nameLocation":"3280:9:9","nodeType":"VariableDeclaration","scope":1969,"src":"3272:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1883,"name":"uint256","nodeType":"ElementaryTypeName","src":"3272:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1885,"nodeType":"VariableDeclarationStatement","src":"3272:17:9"},{"AST":{"nodeType":"YulBlock","src":"3312:291:9","statements":[{"nodeType":"YulAssignment","src":"3381:38:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3401:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"3404:1:9"},{"name":"denominator","nodeType":"YulIdentifier","src":"3407:11:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3394:6:9"},"nodeType":"YulFunctionCall","src":"3394:25:9"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3381:9:9"}]},{"nodeType":"YulAssignment","src":"3501:41:9","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3514:5:9"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3524:9:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"3535:5:9"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3521:2:9"},"nodeType":"YulFunctionCall","src":"3521:20:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3510:3:9"},"nodeType":"YulFunctionCall","src":"3510:32:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3501:5:9"}]},{"nodeType":"YulAssignment","src":"3559:30:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3572:5:9"},{"name":"remainder","nodeType":"YulIdentifier","src":"3579:9:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3568:3:9"},"nodeType":"YulFunctionCall","src":"3568:21:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3559:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1855,"isOffset":false,"isSlot":false,"src":"3407:11:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3535:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3559:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3572:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"3501:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"3514:5:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3381:9:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3524:9:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3579:9:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"3401:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"3404:1:9","valueSize":1}],"id":1886,"nodeType":"InlineAssembly","src":"3303:300:9"},{"assignments":[1888],"declarations":[{"constant":false,"id":1888,"mutability":"mutable","name":"twos","nameLocation":"3918:4:9","nodeType":"VariableDeclaration","scope":1969,"src":"3910:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1887,"name":"uint256","nodeType":"ElementaryTypeName","src":"3910:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1896,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1889,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"3925:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3940:12:9","subExpression":{"id":1890,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"3941:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3955:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3940:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3939:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3925:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3910:47:9"},{"AST":{"nodeType":"YulBlock","src":"3980:362:9","statements":[{"nodeType":"YulAssignment","src":"4045:37:9","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4064:11:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4077:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4060:3:9"},"nodeType":"YulFunctionCall","src":"4060:22:9"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4045:11:9"}]},{"nodeType":"YulAssignment","src":"4149:25:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4162:5:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4169:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4158:3:9"},"nodeType":"YulFunctionCall","src":"4158:16:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4149:5:9"}]},{"nodeType":"YulAssignment","src":"4289:39:9","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4309:1:9","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4312:4:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4305:3:9"},"nodeType":"YulFunctionCall","src":"4305:12:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4319:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4301:3:9"},"nodeType":"YulFunctionCall","src":"4301:23:9"},{"kind":"number","nodeType":"YulLiteral","src":"4326:1:9","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4297:3:9"},"nodeType":"YulFunctionCall","src":"4297:31:9"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4289:4:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1855,"isOffset":false,"isSlot":false,"src":"4045:11:9","valueSize":1},{"declaration":1855,"isOffset":false,"isSlot":false,"src":"4064:11:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"4149:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"4162:5:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4077:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4169:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4289:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4312:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4319:4:9","valueSize":1}],"id":1897,"nodeType":"InlineAssembly","src":"3971:371:9"},{"expression":{"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1898,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"4408:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1899,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"4417:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1900,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1888,"src":"4425:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4417:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4408:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1903,"nodeType":"ExpressionStatement","src":"4408:21:9"},{"assignments":[1905],"declarations":[{"constant":false,"id":1905,"mutability":"mutable","name":"inverse","nameLocation":"4755:7:9","nodeType":"VariableDeclaration","scope":1969,"src":"4747:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1904,"name":"uint256","nodeType":"ElementaryTypeName","src":"4747:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1912,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4766:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1907,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"4770:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4766:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4765:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4785:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4765:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4747:39:9"},{"expression":{"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1913,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5003:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5014:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1915,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5018:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1916,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5032:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5018:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5014:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1920,"nodeType":"ExpressionStatement","src":"5003:36:9"},{"expression":{"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1921,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5072:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5083:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1923,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5087:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1924,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5101:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5087:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5083:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1928,"nodeType":"ExpressionStatement","src":"5072:36:9"},{"expression":{"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1929,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5142:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5153:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1931,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5157:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1932,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5157:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5153:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1936,"nodeType":"ExpressionStatement","src":"5142:36:9"},{"expression":{"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1937,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5212:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5223:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1939,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5227:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1940,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5241:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5227:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5223:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1944,"nodeType":"ExpressionStatement","src":"5212:36:9"},{"expression":{"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1945,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5282:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5293:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1947,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5297:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1948,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5311:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5297:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5293:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1952,"nodeType":"ExpressionStatement","src":"5282:36:9"},{"expression":{"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1953,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5353:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5364:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1955,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5368:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1956,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5382:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5368:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5364:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1960,"nodeType":"ExpressionStatement","src":"5353:36:9"},{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1961,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"5823:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1962,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"5832:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1963,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5840:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5832:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5823:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"5823:24:9"},{"expression":{"id":1967,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"5868:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1859,"id":1968,"nodeType":"Return","src":"5861:13:9"}]}]},"documentation":{"id":1849,"nodeType":"StructuredDocumentation","src":"1368:305:9","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1971,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1687:6:9","nodeType":"FunctionDefinition","parameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"x","nameLocation":"1702:1:9","nodeType":"VariableDeclaration","scope":1971,"src":"1694:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1853,"mutability":"mutable","name":"y","nameLocation":"1713:1:9","nodeType":"VariableDeclaration","scope":1971,"src":"1705:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1855,"mutability":"mutable","name":"denominator","nameLocation":"1724:11:9","nodeType":"VariableDeclaration","scope":1971,"src":"1716:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1693:43:9"},"returnParameters":{"id":1859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1858,"mutability":"mutable","name":"result","nameLocation":"1768:6:9","nodeType":"VariableDeclaration","scope":1971,"src":"1760:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1857,"name":"uint256","nodeType":"ElementaryTypeName","src":"1760:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:16:9"},"scope":2623,"src":"1678:4213:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2014,"nodeType":"Block","src":"6133:189:9","statements":[{"assignments":[1987],"declarations":[{"constant":false,"id":1987,"mutability":"mutable","name":"result","nameLocation":"6151:6:9","nodeType":"VariableDeclaration","scope":2014,"src":"6143:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1986,"name":"uint256","nodeType":"ElementaryTypeName","src":"6143:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1993,"initialValue":{"arguments":[{"id":1989,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"6167:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1990,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"6170:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1991,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"6173:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1988,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1971,2015],"referencedDeclaration":1971,"src":"6160:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6160:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6143:42:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1994,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"6199:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1995,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"6211:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":1996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6220:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"6211:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"6199:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1999,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"6233:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2000,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"6236:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2001,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"6239:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1998,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"6226:6:9","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6226:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6254:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6226:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6199:56:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2011,"nodeType":"IfStatement","src":"6195:98:9","trueBody":{"id":2010,"nodeType":"Block","src":"6257:36:9","statements":[{"expression":{"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2006,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"6271:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6281:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6271:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2009,"nodeType":"ExpressionStatement","src":"6271:11:9"}]}},{"expression":{"id":2012,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"6309:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1985,"id":2013,"nodeType":"Return","src":"6302:13:9"}]},"documentation":{"id":1972,"nodeType":"StructuredDocumentation","src":"5897:121:9","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2015,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6032:6:9","nodeType":"FunctionDefinition","parameters":{"id":1982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1974,"mutability":"mutable","name":"x","nameLocation":"6047:1:9","nodeType":"VariableDeclaration","scope":2015,"src":"6039:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1973,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1976,"mutability":"mutable","name":"y","nameLocation":"6058:1:9","nodeType":"VariableDeclaration","scope":2015,"src":"6050:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1975,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1978,"mutability":"mutable","name":"denominator","nameLocation":"6069:11:9","nodeType":"VariableDeclaration","scope":2015,"src":"6061:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"6061:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1981,"mutability":"mutable","name":"rounding","nameLocation":"6091:8:9","nodeType":"VariableDeclaration","scope":2015,"src":"6082:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":1980,"nodeType":"UserDefinedTypeName","pathNode":{"id":1979,"name":"Rounding","nameLocations":["6082:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"6082:8:9"},"referencedDeclaration":1764,"src":"6082:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"6038:62:9"},"returnParameters":{"id":1985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"6124:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1983,"name":"uint256","nodeType":"ElementaryTypeName","src":"6124:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6123:9:9"},"scope":2623,"src":"6023:299:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2126,"nodeType":"Block","src":"6598:1585:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2023,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"6612:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6617:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6612:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2029,"nodeType":"IfStatement","src":"6608:45:9","trueBody":{"id":2028,"nodeType":"Block","src":"6620:33:9","statements":[{"expression":{"hexValue":"30","id":2026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6641:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2022,"id":2027,"nodeType":"Return","src":"6634:8:9"}]}},{"assignments":[2031],"declarations":[{"constant":false,"id":2031,"mutability":"mutable","name":"result","nameLocation":"7340:6:9","nodeType":"VariableDeclaration","scope":2126,"src":"7332:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"7332:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2040,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7349:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2034,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7360:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2033,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2295,2331],"referencedDeclaration":2295,"src":"7355:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7355:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7355:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2038,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7354:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7349:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7332:36:9"},{"id":2125,"nodeType":"UncheckedBlock","src":"7769:408:9","statements":[{"expression":{"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7793:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2042,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7803:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2043,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7812:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2044,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7816:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7812:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7803:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2047,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7827:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7802:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7793:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2051,"nodeType":"ExpressionStatement","src":"7793:35:9"},{"expression":{"id":2061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2052,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7842:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2053,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7852:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2054,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7861:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2055,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7865:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7861:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7852:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7851:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7876:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7851:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7842:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2062,"nodeType":"ExpressionStatement","src":"7842:35:9"},{"expression":{"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2063,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7891:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2064,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7901:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2065,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7910:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2066,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7914:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7910:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7901:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7900:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7925:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7900:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7891:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2073,"nodeType":"ExpressionStatement","src":"7891:35:9"},{"expression":{"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2074,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7940:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7950:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2076,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7959:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2077,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7963:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7959:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7950:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2080,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7949:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7974:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7949:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7940:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2084,"nodeType":"ExpressionStatement","src":"7940:35:9"},{"expression":{"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2085,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7989:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2086,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7999:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2087,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8008:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2088,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8012:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8008:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7999:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7998:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8023:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7998:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7989:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2095,"nodeType":"ExpressionStatement","src":"7989:35:9"},{"expression":{"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2096,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8038:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2097,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8048:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2098,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8057:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2099,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8061:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8057:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8048:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8047:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8072:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8047:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8038:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2106,"nodeType":"ExpressionStatement","src":"8038:35:9"},{"expression":{"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2107,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8087:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8097:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8106:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8110:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8106:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8096:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8121:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8096:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8087:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2117,"nodeType":"ExpressionStatement","src":"8087:35:9"},{"expression":{"arguments":[{"id":2119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8147:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2120,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8155:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2121,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8159:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8155:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2118,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"8143:3:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8143:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2022,"id":2124,"nodeType":"Return","src":"8136:30:9"}]}]},"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"6328:208:9","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":2127,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6550:4:9","nodeType":"FunctionDefinition","parameters":{"id":2019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"a","nameLocation":"6563:1:9","nodeType":"VariableDeclaration","scope":2127,"src":"6555:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"6555:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6554:11:9"},"returnParameters":{"id":2022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2127,"src":"6589:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2020,"name":"uint256","nodeType":"ElementaryTypeName","src":"6589:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6588:9:9"},"scope":2623,"src":"6541:1642:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2162,"nodeType":"Block","src":"8359:161:9","statements":[{"id":2161,"nodeType":"UncheckedBlock","src":"8369:145:9","statements":[{"assignments":[2139],"declarations":[{"constant":false,"id":2139,"mutability":"mutable","name":"result","nameLocation":"8401:6:9","nodeType":"VariableDeclaration","scope":2161,"src":"8393:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2138,"name":"uint256","nodeType":"ElementaryTypeName","src":"8393:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2143,"initialValue":{"arguments":[{"id":2141,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"8415:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2140,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2127,2163],"referencedDeclaration":2127,"src":"8410:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8410:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8393:24:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2144,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8438:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2145,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2133,"src":"8448:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2146,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"8460:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8469:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"8460:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"8448:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8475:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2150,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8484:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2152,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"8493:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8448:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8501:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8448:54:9","trueExpression":{"hexValue":"31","id":2155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8497:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8447:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8438:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2137,"id":2160,"nodeType":"Return","src":"8431:72:9"}]}]},"documentation":{"id":2128,"nodeType":"StructuredDocumentation","src":"8189:89:9","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":2163,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8292:4:9","nodeType":"FunctionDefinition","parameters":{"id":2134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2130,"mutability":"mutable","name":"a","nameLocation":"8305:1:9","nodeType":"VariableDeclaration","scope":2163,"src":"8297:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2129,"name":"uint256","nodeType":"ElementaryTypeName","src":"8297:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2133,"mutability":"mutable","name":"rounding","nameLocation":"8317:8:9","nodeType":"VariableDeclaration","scope":2163,"src":"8308:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2132,"nodeType":"UserDefinedTypeName","pathNode":{"id":2131,"name":"Rounding","nameLocations":["8308:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"8308:8:9"},"referencedDeclaration":1764,"src":"8308:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"8296:30:9"},"returnParameters":{"id":2137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2163,"src":"8350:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2135,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8349:9:9"},"scope":2623,"src":"8283:237:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2294,"nodeType":"Block","src":"8705:922:9","statements":[{"assignments":[2172],"declarations":[{"constant":false,"id":2172,"mutability":"mutable","name":"result","nameLocation":"8723:6:9","nodeType":"VariableDeclaration","scope":2294,"src":"8715:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"8715:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2174,"initialValue":{"hexValue":"30","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8732:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8715:18:9"},{"id":2291,"nodeType":"UncheckedBlock","src":"8743:855:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8771:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8780:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8771:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8786:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8771:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2189,"nodeType":"IfStatement","src":"8767:99:9","trueBody":{"id":2188,"nodeType":"Block","src":"8789:77:9","statements":[{"expression":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8807:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8817:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8807:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2183,"nodeType":"ExpressionStatement","src":"8807:13:9"},{"expression":{"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"8838:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8848:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8838:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2187,"nodeType":"ExpressionStatement","src":"8838:13:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8883:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8892:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8883:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8897:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8883:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2204,"nodeType":"IfStatement","src":"8879:96:9","trueBody":{"id":2203,"nodeType":"Block","src":"8900:75:9","statements":[{"expression":{"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8918:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8918:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2198,"nodeType":"ExpressionStatement","src":"8918:12:9"},{"expression":{"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"8948:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8958:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8948:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2202,"nodeType":"ExpressionStatement","src":"8948:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8992:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9001:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8992:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9006:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8992:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2219,"nodeType":"IfStatement","src":"8988:96:9","trueBody":{"id":2218,"nodeType":"Block","src":"9009:75:9","statements":[{"expression":{"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9027:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9037:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9027:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2213,"nodeType":"ExpressionStatement","src":"9027:12:9"},{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9057:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9067:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9057:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"9057:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9101:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9110:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9101:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9115:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9101:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2234,"nodeType":"IfStatement","src":"9097:96:9","trueBody":{"id":2233,"nodeType":"Block","src":"9118:75:9","statements":[{"expression":{"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2225,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9136:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9146:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9136:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2228,"nodeType":"ExpressionStatement","src":"9136:12:9"},{"expression":{"id":2231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2229,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9166:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9176:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9166:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2232,"nodeType":"ExpressionStatement","src":"9166:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2235,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9210:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9219:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9210:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9223:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9210:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2249,"nodeType":"IfStatement","src":"9206:93:9","trueBody":{"id":2248,"nodeType":"Block","src":"9226:73:9","statements":[{"expression":{"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2240,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9244:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9254:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9244:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2243,"nodeType":"ExpressionStatement","src":"9244:11:9"},{"expression":{"id":2246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2244,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9273:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9283:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9273:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2247,"nodeType":"ExpressionStatement","src":"9273:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9316:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9325:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9316:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9329:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9316:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2264,"nodeType":"IfStatement","src":"9312:93:9","trueBody":{"id":2263,"nodeType":"Block","src":"9332:73:9","statements":[{"expression":{"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9350:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9360:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9350:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2258,"nodeType":"ExpressionStatement","src":"9350:11:9"},{"expression":{"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2259,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9379:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9389:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9379:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2262,"nodeType":"ExpressionStatement","src":"9379:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2265,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9422:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9431:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9422:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9435:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9422:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"9418:93:9","trueBody":{"id":2278,"nodeType":"Block","src":"9438:73:9","statements":[{"expression":{"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9456:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":2271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9466:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9456:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2273,"nodeType":"ExpressionStatement","src":"9456:11:9"},{"expression":{"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2274,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9485:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9495:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9485:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2277,"nodeType":"ExpressionStatement","src":"9485:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9528:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9537:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9528:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9541:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9528:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2290,"nodeType":"IfStatement","src":"9524:64:9","trueBody":{"id":2289,"nodeType":"Block","src":"9544:44:9","statements":[{"expression":{"id":2287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2285,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9562:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9572:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9562:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2288,"nodeType":"ExpressionStatement","src":"9562:11:9"}]}}]},{"expression":{"id":2292,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9614:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2170,"id":2293,"nodeType":"Return","src":"9607:13:9"}]},"documentation":{"id":2164,"nodeType":"StructuredDocumentation","src":"8526:113:9","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8653:4:9","nodeType":"FunctionDefinition","parameters":{"id":2167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2166,"mutability":"mutable","name":"value","nameLocation":"8666:5:9","nodeType":"VariableDeclaration","scope":2295,"src":"8658:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2165,"name":"uint256","nodeType":"ElementaryTypeName","src":"8658:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8657:15:9"},"returnParameters":{"id":2170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2295,"src":"8696:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2168,"name":"uint256","nodeType":"ElementaryTypeName","src":"8696:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8695:9:9"},"scope":2623,"src":"8644:983:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2330,"nodeType":"Block","src":"9860:165:9","statements":[{"id":2329,"nodeType":"UncheckedBlock","src":"9870:149:9","statements":[{"assignments":[2307],"declarations":[{"constant":false,"id":2307,"mutability":"mutable","name":"result","nameLocation":"9902:6:9","nodeType":"VariableDeclaration","scope":2329,"src":"9894:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"9894:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2311,"initialValue":{"arguments":[{"id":2309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9916:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2308,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2295,2331],"referencedDeclaration":2295,"src":"9911:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9911:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9894:28:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2312,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"9943:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2313,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"9953:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2314,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"9965:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9974:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"9965:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"9953:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9980:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2318,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"9985:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9994:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9953:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10006:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9953:54:9","trueExpression":{"hexValue":"31","id":2323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10002:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2326,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9952:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9943:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2305,"id":2328,"nodeType":"Return","src":"9936:72:9"}]}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"9633:142:9","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2331,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9789:4:9","nodeType":"FunctionDefinition","parameters":{"id":2302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"value","nameLocation":"9802:5:9","nodeType":"VariableDeclaration","scope":2331,"src":"9794:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2297,"name":"uint256","nodeType":"ElementaryTypeName","src":"9794:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2301,"mutability":"mutable","name":"rounding","nameLocation":"9818:8:9","nodeType":"VariableDeclaration","scope":2331,"src":"9809:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2300,"nodeType":"UserDefinedTypeName","pathNode":{"id":2299,"name":"Rounding","nameLocations":["9809:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"9809:8:9"},"referencedDeclaration":1764,"src":"9809:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"9793:34:9"},"returnParameters":{"id":2305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2331,"src":"9851:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2303,"name":"uint256","nodeType":"ElementaryTypeName","src":"9851:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9850:9:9"},"scope":2623,"src":"9780:245:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2459,"nodeType":"Block","src":"10212:854:9","statements":[{"assignments":[2340],"declarations":[{"constant":false,"id":2340,"mutability":"mutable","name":"result","nameLocation":"10230:6:9","nodeType":"VariableDeclaration","scope":2459,"src":"10222:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2339,"name":"uint256","nodeType":"ElementaryTypeName","src":"10222:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2342,"initialValue":{"hexValue":"30","id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10239:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10222:18:9"},{"id":2456,"nodeType":"UncheckedBlock","src":"10250:787:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10278:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10287:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10293:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10287:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10278:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2359,"nodeType":"IfStatement","src":"10274:103:9","trueBody":{"id":2358,"nodeType":"Block","src":"10297:80:9","statements":[{"expression":{"id":2352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10315:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10324:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10330:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10324:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10315:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2353,"nodeType":"ExpressionStatement","src":"10315:17:9"},{"expression":{"id":2356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2354,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10350:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10360:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10350:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2357,"nodeType":"ExpressionStatement","src":"10350:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2360,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10394:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10403:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10409:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10403:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10394:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2376,"nodeType":"IfStatement","src":"10390:103:9","trueBody":{"id":2375,"nodeType":"Block","src":"10413:80:9","statements":[{"expression":{"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2365,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10431:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10440:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10446:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10440:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10431:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2370,"nodeType":"ExpressionStatement","src":"10431:17:9"},{"expression":{"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2371,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10466:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10476:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10466:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2374,"nodeType":"ExpressionStatement","src":"10466:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10510:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10519:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10525:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10519:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10510:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2393,"nodeType":"IfStatement","src":"10506:103:9","trueBody":{"id":2392,"nodeType":"Block","src":"10529:80:9","statements":[{"expression":{"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2382,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10547:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10556:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10562:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10556:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10547:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2387,"nodeType":"ExpressionStatement","src":"10547:17:9"},{"expression":{"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2388,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10582:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10592:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10582:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2391,"nodeType":"ExpressionStatement","src":"10582:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10626:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10635:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10641:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10635:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10626:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2410,"nodeType":"IfStatement","src":"10622:100:9","trueBody":{"id":2409,"nodeType":"Block","src":"10644:78:9","statements":[{"expression":{"id":2403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10662:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10671:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10677:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10671:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10662:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2404,"nodeType":"ExpressionStatement","src":"10662:16:9"},{"expression":{"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2405,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10696:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10706:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10696:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2408,"nodeType":"ExpressionStatement","src":"10696:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10739:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10754:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10748:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10739:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2427,"nodeType":"IfStatement","src":"10735:100:9","trueBody":{"id":2426,"nodeType":"Block","src":"10757:78:9","statements":[{"expression":{"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10775:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10784:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10790:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10784:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10775:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2421,"nodeType":"ExpressionStatement","src":"10775:16:9"},{"expression":{"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2422,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10809:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10819:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10809:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2425,"nodeType":"ExpressionStatement","src":"10809:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10852:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10861:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10867:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10861:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10852:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2444,"nodeType":"IfStatement","src":"10848:100:9","trueBody":{"id":2443,"nodeType":"Block","src":"10870:78:9","statements":[{"expression":{"id":2437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2433,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10888:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10897:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10897:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10888:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2438,"nodeType":"ExpressionStatement","src":"10888:16:9"},{"expression":{"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2439,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10922:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10932:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10922:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2442,"nodeType":"ExpressionStatement","src":"10922:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10965:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10974:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10980:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10974:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10965:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2455,"nodeType":"IfStatement","src":"10961:66:9","trueBody":{"id":2454,"nodeType":"Block","src":"10983:44:9","statements":[{"expression":{"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2450,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"11001:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11011:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11001:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2453,"nodeType":"ExpressionStatement","src":"11001:11:9"}]}}]},{"expression":{"id":2457,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"11053:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2338,"id":2458,"nodeType":"Return","src":"11046:13:9"}]},"documentation":{"id":2332,"nodeType":"StructuredDocumentation","src":"10031:114:9","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2460,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10159:5:9","nodeType":"FunctionDefinition","parameters":{"id":2335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2334,"mutability":"mutable","name":"value","nameLocation":"10173:5:9","nodeType":"VariableDeclaration","scope":2460,"src":"10165:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2333,"name":"uint256","nodeType":"ElementaryTypeName","src":"10165:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10164:15:9"},"returnParameters":{"id":2338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2460,"src":"10203:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2336,"name":"uint256","nodeType":"ElementaryTypeName","src":"10203:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10202:9:9"},"scope":2623,"src":"10150:916:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2495,"nodeType":"Block","src":"11301:167:9","statements":[{"id":2494,"nodeType":"UncheckedBlock","src":"11311:151:9","statements":[{"assignments":[2472],"declarations":[{"constant":false,"id":2472,"mutability":"mutable","name":"result","nameLocation":"11343:6:9","nodeType":"VariableDeclaration","scope":2494,"src":"11335:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11335:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2476,"initialValue":{"arguments":[{"id":2474,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"11358:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2473,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2460,2496],"referencedDeclaration":2460,"src":"11352:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11352:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11335:29:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2477,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"11385:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2478,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"11395:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2479,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"11407:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11416:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"11407:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"11395:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11422:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2483,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"11428:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2485,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"11437:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11395:47:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11449:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11395:55:9","trueExpression":{"hexValue":"31","id":2488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11445:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2491,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11394:57:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11385:66:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2470,"id":2493,"nodeType":"Return","src":"11378:73:9"}]}]},"documentation":{"id":2461,"nodeType":"StructuredDocumentation","src":"11072:143:9","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2496,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11229:5:9","nodeType":"FunctionDefinition","parameters":{"id":2467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2463,"mutability":"mutable","name":"value","nameLocation":"11243:5:9","nodeType":"VariableDeclaration","scope":2496,"src":"11235:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2462,"name":"uint256","nodeType":"ElementaryTypeName","src":"11235:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2466,"mutability":"mutable","name":"rounding","nameLocation":"11259:8:9","nodeType":"VariableDeclaration","scope":2496,"src":"11250:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2465,"nodeType":"UserDefinedTypeName","pathNode":{"id":2464,"name":"Rounding","nameLocations":["11250:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"11250:8:9"},"referencedDeclaration":1764,"src":"11250:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"11234:34:9"},"returnParameters":{"id":2470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2496,"src":"11292:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2468,"name":"uint256","nodeType":"ElementaryTypeName","src":"11292:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11291:9:9"},"scope":2623,"src":"11220:248:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2582,"nodeType":"Block","src":"11782:600:9","statements":[{"assignments":[2505],"declarations":[{"constant":false,"id":2505,"mutability":"mutable","name":"result","nameLocation":"11800:6:9","nodeType":"VariableDeclaration","scope":2582,"src":"11792:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2504,"name":"uint256","nodeType":"ElementaryTypeName","src":"11792:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2507,"initialValue":{"hexValue":"30","id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11809:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11792:18:9"},{"id":2579,"nodeType":"UncheckedBlock","src":"11820:533:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11848:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11857:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11848:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11863:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11848:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2522,"nodeType":"IfStatement","src":"11844:98:9","trueBody":{"id":2521,"nodeType":"Block","src":"11866:76:9","statements":[{"expression":{"id":2515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11884:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11894:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11884:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2516,"nodeType":"ExpressionStatement","src":"11884:13:9"},{"expression":{"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2517,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"11915:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11925:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11915:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2520,"nodeType":"ExpressionStatement","src":"11915:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11959:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11959:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11973:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11959:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2537,"nodeType":"IfStatement","src":"11955:95:9","trueBody":{"id":2536,"nodeType":"Block","src":"11976:74:9","statements":[{"expression":{"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2528,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11994:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12004:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11994:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2531,"nodeType":"ExpressionStatement","src":"11994:12:9"},{"expression":{"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2532,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12024:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12034:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12024:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2535,"nodeType":"ExpressionStatement","src":"12024:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2538,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12067:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12076:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12067:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12081:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12067:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2552,"nodeType":"IfStatement","src":"12063:95:9","trueBody":{"id":2551,"nodeType":"Block","src":"12084:74:9","statements":[{"expression":{"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2543,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12102:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12112:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12102:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2546,"nodeType":"ExpressionStatement","src":"12102:12:9"},{"expression":{"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2547,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12132:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12142:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12132:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2550,"nodeType":"ExpressionStatement","src":"12132:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12175:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12184:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12175:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12189:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12175:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2567,"nodeType":"IfStatement","src":"12171:95:9","trueBody":{"id":2566,"nodeType":"Block","src":"12192:74:9","statements":[{"expression":{"id":2560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12210:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12220:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12210:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2561,"nodeType":"ExpressionStatement","src":"12210:12:9"},{"expression":{"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2562,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12240:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12250:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12240:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2565,"nodeType":"ExpressionStatement","src":"12240:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12283:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12292:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12283:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12283:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2578,"nodeType":"IfStatement","src":"12279:64:9","trueBody":{"id":2577,"nodeType":"Block","src":"12299:44:9","statements":[{"expression":{"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2573,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12317:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12327:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12317:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2576,"nodeType":"ExpressionStatement","src":"12317:11:9"}]}}]},{"expression":{"id":2580,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12369:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2503,"id":2581,"nodeType":"Return","src":"12362:13:9"}]},"documentation":{"id":2497,"nodeType":"StructuredDocumentation","src":"11474:240:9","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":2583,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11728:6:9","nodeType":"FunctionDefinition","parameters":{"id":2500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2499,"mutability":"mutable","name":"value","nameLocation":"11743:5:9","nodeType":"VariableDeclaration","scope":2583,"src":"11735:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2498,"name":"uint256","nodeType":"ElementaryTypeName","src":"11735:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11734:15:9"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2583,"src":"11773:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2501,"name":"uint256","nodeType":"ElementaryTypeName","src":"11773:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11772:9:9"},"scope":2623,"src":"11719:663:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2621,"nodeType":"Block","src":"12619:174:9","statements":[{"id":2620,"nodeType":"UncheckedBlock","src":"12629:158:9","statements":[{"assignments":[2595],"declarations":[{"constant":false,"id":2595,"mutability":"mutable","name":"result","nameLocation":"12661:6:9","nodeType":"VariableDeclaration","scope":2620,"src":"12653:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2594,"name":"uint256","nodeType":"ElementaryTypeName","src":"12653:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2599,"initialValue":{"arguments":[{"id":2597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"12677:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2596,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[2583,2622],"referencedDeclaration":2583,"src":"12670:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12670:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12653:30:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2600,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"12704:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2601,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"12714:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2602,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"12726:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12735:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"12726:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"12714:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2606,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"12747:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12757:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12747:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2609,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12746:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"12762:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12714:53:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12774:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12714:61:9","trueExpression":{"hexValue":"31","id":2614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2617,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12713:63:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12704:72:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2593,"id":2619,"nodeType":"Return","src":"12697:79:9"}]}]},"documentation":{"id":2584,"nodeType":"StructuredDocumentation","src":"12388:144:9","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2622,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12546:6:9","nodeType":"FunctionDefinition","parameters":{"id":2590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2586,"mutability":"mutable","name":"value","nameLocation":"12561:5:9","nodeType":"VariableDeclaration","scope":2622,"src":"12553:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2585,"name":"uint256","nodeType":"ElementaryTypeName","src":"12553:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2589,"mutability":"mutable","name":"rounding","nameLocation":"12577:8:9","nodeType":"VariableDeclaration","scope":2622,"src":"12568:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2588,"nodeType":"UserDefinedTypeName","pathNode":{"id":2587,"name":"Rounding","nameLocations":["12568:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"12568:8:9"},"referencedDeclaration":1764,"src":"12568:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"12552:34:9"},"returnParameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2622,"src":"12610:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"12610:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12609:9:9"},"scope":2623,"src":"12537:256:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2624,"src":"202:12593:9","usedErrors":[]}],"src":"103:12693:9"},"id":9},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol","exportedSymbols":{"SignedMathUpgradeable":[2728]},"id":2729,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2625,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2626,"nodeType":"StructuredDocumentation","src":"134:80:10","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2728,"linearizedBaseContracts":[2728],"name":"SignedMathUpgradeable","nameLocation":"223:21:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":2643,"nodeType":"Block","src":"386:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2636,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"403:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2637,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"407:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"403:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2640,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"415:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"403:13:10","trueExpression":{"id":2639,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"411:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2635,"id":2642,"nodeType":"Return","src":"396:20:10"}]},"documentation":{"id":2627,"nodeType":"StructuredDocumentation","src":"251:66:10","text":" @dev Returns the largest of two signed numbers."},"id":2644,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"331:3:10","nodeType":"FunctionDefinition","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2629,"mutability":"mutable","name":"a","nameLocation":"342:1:10","nodeType":"VariableDeclaration","scope":2644,"src":"335:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2628,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"b","nameLocation":"352:1:10","nodeType":"VariableDeclaration","scope":2644,"src":"345:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2630,"name":"int256","nodeType":"ElementaryTypeName","src":"345:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"334:20:10"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2644,"src":"378:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2633,"name":"int256","nodeType":"ElementaryTypeName","src":"378:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"377:8:10"},"scope":2728,"src":"322:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2661,"nodeType":"Block","src":"565:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2654,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"582:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2655,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"586:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"582:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2658,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"594:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"582:13:10","trueExpression":{"id":2657,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"590:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2653,"id":2660,"nodeType":"Return","src":"575:20:10"}]},"documentation":{"id":2645,"nodeType":"StructuredDocumentation","src":"429:67:10","text":" @dev Returns the smallest of two signed numbers."},"id":2662,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"510:3:10","nodeType":"FunctionDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2647,"mutability":"mutable","name":"a","nameLocation":"521:1:10","nodeType":"VariableDeclaration","scope":2662,"src":"514:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2646,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2649,"mutability":"mutable","name":"b","nameLocation":"531:1:10","nodeType":"VariableDeclaration","scope":2662,"src":"524:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2648,"name":"int256","nodeType":"ElementaryTypeName","src":"524:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"513:20:10"},"returnParameters":{"id":2653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2662,"src":"557:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2651,"name":"int256","nodeType":"ElementaryTypeName","src":"557:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"556:8:10"},"scope":2728,"src":"501:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2705,"nodeType":"Block","src":"807:162:10","statements":[{"assignments":[2673],"declarations":[{"constant":false,"id":2673,"mutability":"mutable","name":"x","nameLocation":"876:1:10","nodeType":"VariableDeclaration","scope":2705,"src":"869:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2672,"name":"int256","nodeType":"ElementaryTypeName","src":"869:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2686,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2674,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"881:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2675,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"885:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"892:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2679,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"896:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"892:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2681,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"891:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"902:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"891:12:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2684,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"890:14:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"880:24:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"869:35:10"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2687,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"921:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2692,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"941:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"933:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2690,"name":"uint256","nodeType":"ElementaryTypeName","src":"933:7:10","typeDescriptions":{}}},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":2694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"947:3:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"933:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"926:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2688,"name":"int256","nodeType":"ElementaryTypeName","src":"926:6:10","typeDescriptions":{}}},"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"926:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2697,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"955:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2698,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"959:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"955:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"954:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"926:35:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"925:37:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"921:41:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2671,"id":2704,"nodeType":"Return","src":"914:48:10"}]},"documentation":{"id":2663,"nodeType":"StructuredDocumentation","src":"608:126:10","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":2706,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"748:7:10","nodeType":"FunctionDefinition","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"a","nameLocation":"763:1:10","nodeType":"VariableDeclaration","scope":2706,"src":"756:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2664,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2667,"mutability":"mutable","name":"b","nameLocation":"773:1:10","nodeType":"VariableDeclaration","scope":2706,"src":"766:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2666,"name":"int256","nodeType":"ElementaryTypeName","src":"766:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"755:20:10"},"returnParameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2706,"src":"799:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2669,"name":"int256","nodeType":"ElementaryTypeName","src":"799:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"798:8:10"},"scope":2728,"src":"739:230:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2726,"nodeType":"Block","src":"1113:158:10","statements":[{"id":2725,"nodeType":"UncheckedBlock","src":"1123:142:10","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2716,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1238:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":2717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1243:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1238:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1251:2:10","subExpression":{"id":2720,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1252:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1238:15:10","trueExpression":{"id":2719,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1247:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1230:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2714,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:10","typeDescriptions":{}}},"id":2723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1230:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2713,"id":2724,"nodeType":"Return","src":"1223:31:10"}]}]},"documentation":{"id":2707,"nodeType":"StructuredDocumentation","src":"975:78:10","text":" @dev Returns the absolute unsigned value of a signed value."},"id":2727,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1067:3:10","nodeType":"FunctionDefinition","parameters":{"id":2710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2709,"mutability":"mutable","name":"n","nameLocation":"1078:1:10","nodeType":"VariableDeclaration","scope":2727,"src":"1071:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2708,"name":"int256","nodeType":"ElementaryTypeName","src":"1071:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1070:10:10"},"returnParameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2727,"src":"1104:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2711,"name":"uint256","nodeType":"ElementaryTypeName","src":"1104:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1103:9:10"},"scope":2728,"src":"1058:213:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2729,"src":"215:1058:10","usedErrors":[]}],"src":"109:1165:10"},"id":10},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[2806]},"id":2807,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2730,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2731,"nodeType":"StructuredDocumentation","src":"131:70:11","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2806,"linearizedBaseContracts":[2806],"name":"IERC20","nameLocation":"212:6:11","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2732,"nodeType":"StructuredDocumentation","src":"225:158:11","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":2740,"name":"Transfer","nameLocation":"394:8:11","nodeType":"EventDefinition","parameters":{"id":2739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2734,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:11","nodeType":"VariableDeclaration","scope":2740,"src":"403:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2733,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2736,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:11","nodeType":"VariableDeclaration","scope":2740,"src":"425:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2735,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2738,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:11","nodeType":"VariableDeclaration","scope":2740,"src":"445:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2737,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:11"},"src":"388:72:11"},{"anonymous":false,"documentation":{"id":2741,"nodeType":"StructuredDocumentation","src":"466:148:11","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":2749,"name":"Approval","nameLocation":"625:8:11","nodeType":"EventDefinition","parameters":{"id":2748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2743,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:11","nodeType":"VariableDeclaration","scope":2749,"src":"634:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2742,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2745,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:11","nodeType":"VariableDeclaration","scope":2749,"src":"657:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2744,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2747,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:11","nodeType":"VariableDeclaration","scope":2749,"src":"682:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2746,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:11"},"src":"619:78:11"},{"documentation":{"id":2750,"nodeType":"StructuredDocumentation","src":"703:66:11","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":2755,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:11","nodeType":"FunctionDefinition","parameters":{"id":2751,"nodeType":"ParameterList","parameters":[],"src":"794:2:11"},"returnParameters":{"id":2754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2755,"src":"820:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2752,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:11"},"scope":2806,"src":"774:55:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2756,"nodeType":"StructuredDocumentation","src":"835:72:11","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":2763,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:11","nodeType":"FunctionDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2758,"mutability":"mutable","name":"account","nameLocation":"939:7:11","nodeType":"VariableDeclaration","scope":2763,"src":"931:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2757,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:11"},"returnParameters":{"id":2762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2763,"src":"971:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2760,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:11"},"scope":2806,"src":"912:68:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2764,"nodeType":"StructuredDocumentation","src":"986:202:11","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2773,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:11","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2766,"mutability":"mutable","name":"to","nameLocation":"1219:2:11","nodeType":"VariableDeclaration","scope":2773,"src":"1211:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2765,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2768,"mutability":"mutable","name":"amount","nameLocation":"1231:6:11","nodeType":"VariableDeclaration","scope":2773,"src":"1223:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2767,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:11"},"returnParameters":{"id":2772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2773,"src":"1257:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2770,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:11"},"scope":2806,"src":"1193:70:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2774,"nodeType":"StructuredDocumentation","src":"1269:264:11","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":2783,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:11","nodeType":"FunctionDefinition","parameters":{"id":2779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2776,"mutability":"mutable","name":"owner","nameLocation":"1565:5:11","nodeType":"VariableDeclaration","scope":2783,"src":"1557:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2775,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2778,"mutability":"mutable","name":"spender","nameLocation":"1580:7:11","nodeType":"VariableDeclaration","scope":2783,"src":"1572:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2777,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:11"},"returnParameters":{"id":2782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2783,"src":"1612:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:11"},"scope":2806,"src":"1538:83:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2784,"nodeType":"StructuredDocumentation","src":"1627:642:11","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2793,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:11","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2786,"mutability":"mutable","name":"spender","nameLocation":"2299:7:11","nodeType":"VariableDeclaration","scope":2793,"src":"2291:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2788,"mutability":"mutable","name":"amount","nameLocation":"2316:6:11","nodeType":"VariableDeclaration","scope":2793,"src":"2308:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2787,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:11"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2793,"src":"2342:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2790,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:11"},"scope":2806,"src":"2274:74:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2794,"nodeType":"StructuredDocumentation","src":"2354:287:11","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2805,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:11","nodeType":"FunctionDefinition","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2796,"mutability":"mutable","name":"from","nameLocation":"2685:4:11","nodeType":"VariableDeclaration","scope":2805,"src":"2677:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2795,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2798,"mutability":"mutable","name":"to","nameLocation":"2707:2:11","nodeType":"VariableDeclaration","scope":2805,"src":"2699:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2797,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2800,"mutability":"mutable","name":"amount","nameLocation":"2727:6:11","nodeType":"VariableDeclaration","scope":2805,"src":"2719:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2799,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:11"},"returnParameters":{"id":2804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2805,"src":"2758:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2802,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:11"},"scope":2806,"src":"2646:118:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2807,"src":"202:2564:11","usedErrors":[]}],"src":"106:2661:11"},"id":11},"contracts/Paycrest.sol":{"ast":{"absolutePath":"contracts/Paycrest.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ECDSAUpgradeable":[1757],"IERC20":[2806],"IERC20PermitUpgradeable":[414],"IERC20Upgradeable":[378],"IPaycrest":[3941],"MathUpgradeable":[2623],"Paycrest":[3516],"PaycrestSettingManager":[3755],"SafeERC20Upgradeable":[790],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":3517,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2808,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:12"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","id":2809,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3517,"sourceUnit":1758,"src":"62:85:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","id":2810,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3517,"sourceUnit":791,"src":"148:88:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/PaycrestSettingManager.sol","file":"./PaycrestSettingManager.sol","id":2812,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3517,"sourceUnit":3756,"src":"237:68:12","symbolAliases":[{"foreign":{"id":2811,"name":"PaycrestSettingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3755,"src":"245:22:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interface/IPaycrest.sol","file":"./interface/IPaycrest.sol","id":2815,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3517,"sourceUnit":3942,"src":"306:60:12","symbolAliases":[{"foreign":{"id":2813,"name":"IPaycrest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3941,"src":"314:9:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2814,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"325:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2816,"name":"IPaycrest","nameLocations":["388:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":3941,"src":"388:9:12"},"id":2817,"nodeType":"InheritanceSpecifier","src":"388:9:12"},{"baseName":{"id":2818,"name":"PaycrestSettingManager","nameLocations":["399:22:12"],"nodeType":"IdentifierPath","referencedDeclaration":3755,"src":"399:22:12"},"id":2819,"nodeType":"InheritanceSpecifier","src":"399:22:12"}],"canonicalName":"Paycrest","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3516,"linearizedBaseContracts":[3516,3755,131,1162,300,3941],"name":"Paycrest","nameLocation":"376:8:12","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2823,"libraryName":{"id":2820,"name":"SafeERC20Upgradeable","nameLocations":["435:20:12"],"nodeType":"IdentifierPath","referencedDeclaration":790,"src":"435:20:12"},"nodeType":"UsingForDirective","src":"429:38:12","typeName":{"id":2822,"nodeType":"UserDefinedTypeName","pathNode":{"id":2821,"name":"IERC20","nameLocations":["460:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":2806,"src":"460:6:12"},"referencedDeclaration":2806,"src":"460:6:12","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}}},{"global":false,"id":2826,"libraryName":{"id":2824,"name":"ECDSAUpgradeable","nameLocations":["478:16:12"],"nodeType":"IdentifierPath","referencedDeclaration":1757,"src":"478:16:12"},"nodeType":"UsingForDirective","src":"472:35:12","typeName":{"id":2825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"499:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"canonicalName":"Paycrest.fee","id":2831,"members":[{"constant":false,"id":2828,"mutability":"mutable","name":"protocolFee","nameLocation":"541:11:12","nodeType":"VariableDeclaration","scope":2831,"src":"533:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2827,"name":"uint256","nodeType":"ElementaryTypeName","src":"533:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2830,"mutability":"mutable","name":"liquidityProviderAmount","nameLocation":"570:23:12","nodeType":"VariableDeclaration","scope":2831,"src":"562:31:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2829,"name":"uint256","nodeType":"ElementaryTypeName","src":"562:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"fee","nameLocation":"519:3:12","nodeType":"StructDefinition","scope":3516,"src":"512:88:12","visibility":"public"},{"constant":false,"id":2836,"mutability":"mutable","name":"order","nameLocation":"639:5:12","nodeType":"VariableDeclaration","scope":3516,"src":"605:39:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order)"},"typeName":{"id":2835,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2832,"name":"bytes32","nodeType":"ElementaryTypeName","src":"613:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"605:25:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2834,"nodeType":"UserDefinedTypeName","pathNode":{"id":2833,"name":"Order","nameLocations":["624:5:12"],"nodeType":"IdentifierPath","referencedDeclaration":3841,"src":"624:5:12"},"referencedDeclaration":3841,"src":"624:5:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage_ptr","typeString":"struct IPaycrest.Order"}}},"visibility":"private"},{"constant":false,"id":2840,"mutability":"mutable","name":"_nonce","nameLocation":"686:6:12","nodeType":"VariableDeclaration","scope":3516,"src":"650:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":2839,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2837,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"650:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2838,"name":"uint256","nodeType":"ElementaryTypeName","src":"669:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":2844,"mutability":"mutable","name":"__gap","nameLocation":"718:5:12","nodeType":"VariableDeclaration","scope":3516,"src":"698:25:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":2841,"name":"uint256","nodeType":"ElementaryTypeName","src":"698:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2843,"length":{"hexValue":"3530","id":2842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"706:2:12","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"698:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"},{"body":{"id":2851,"nodeType":"Block","src":"796:39:12","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2848,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"806:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"806:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2850,"nodeType":"ExpressionStatement","src":"806:22:12"}]},"documentation":{"id":2845,"nodeType":"StructuredDocumentation","src":"729:48:12","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":2852,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2846,"nodeType":"ParameterList","parameters":[],"src":"793:2:12"},"returnParameters":{"id":2847,"nodeType":"ParameterList","parameters":[],"src":"796:0:12"},"scope":3516,"src":"782:53:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2876,"nodeType":"Block","src":"897:150:12","statements":[{"expression":{"id":2863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2859,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"911:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2861,"indexExpression":{"id":2860,"name":"_usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2854,"src":"929:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"911:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"938:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"911:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2864,"nodeType":"ExpressionStatement","src":"911:31:12"},{"expression":{"id":2867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2865,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"955:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130305f303030","id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"965:7:12","typeDescriptions":{"typeIdentifier":"t_rational_100000_by_1","typeString":"int_const 100000"},"value":"100_000"},"src":"955:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2868,"nodeType":"ExpressionStatement","src":"955:17:12"},{"expression":{"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2869,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3535,"src":"983:18:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"35303030","id":2870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1004:4:12","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5000"},"src":"983:25:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2872,"nodeType":"ExpressionStatement","src":"983:25:12"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2873,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"1024:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2875,"nodeType":"ExpressionStatement","src":"1024:16:12"}]},"functionSelector":"c4d66de8","id":2877,"implemented":true,"kind":"function","modifiers":[{"id":2857,"kind":"modifierInvocation","modifierName":{"id":2856,"name":"initializer","nameLocations":["885:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":202,"src":"885:11:12"},"nodeType":"ModifierInvocation","src":"885:11:12"}],"name":"initialize","nameLocation":"850:10:12","nodeType":"FunctionDefinition","parameters":{"id":2855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2854,"mutability":"mutable","name":"_usdc","nameLocation":"869:5:12","nodeType":"VariableDeclaration","scope":2877,"src":"861:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2853,"name":"address","nodeType":"ElementaryTypeName","src":"861:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"860:15:12"},"returnParameters":{"id":2858,"nodeType":"ParameterList","parameters":[],"src":"897:0:12"},"scope":3516,"src":"841:206:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2888,"nodeType":"Block","src":"1077:87:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2880,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1095:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1099:6:12","memberName":"sender","nodeType":"MemberAccess","src":"1095:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2882,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3539,"src":"1109:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1095:32:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7941676772656761746f72","id":2884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1129:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","typeString":"literal_string \"OnlyAggregator\""},"value":"OnlyAggregator"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","typeString":"literal_string \"OnlyAggregator\""}],"id":2879,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1087:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1087:59:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2886,"nodeType":"ExpressionStatement","src":"1087:59:12"},{"id":2887,"nodeType":"PlaceholderStatement","src":"1156:1:12"}]},"id":2889,"name":"onlyAggregator","nameLocation":"1062:14:12","nodeType":"ModifierDefinition","parameters":{"id":2878,"nodeType":"ParameterList","parameters":[],"src":"1077:0:12"},"src":"1053:111:12","virtual":false,"visibility":"internal"},{"baseFunctions":[3865],"body":{"id":2996,"nodeType":"Block","src":"1739:1279:12","statements":[{"expression":{"arguments":[{"id":2914,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"1794:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2915,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"1802:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2916,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"1811:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2917,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"1827:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2918,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"1848:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2913,"name":"_handler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"1785:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,address,address,bytes32) view"}},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1785:80:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2920,"nodeType":"ExpressionStatement","src":"1785:80:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2922,"name":"_senderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"1944:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2923,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"1959:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2924,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3535,"src":"1969:18:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1959:28:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2926,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1958:30:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2927,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"1991:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1958:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1944:54:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53656e646572466565546f6f48696768","id":2930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2000:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","typeString":"literal_string \"SenderFeeTooHigh\""},"value":"SenderFeeTooHigh"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","typeString":"literal_string \"SenderFeeTooHigh\""}],"id":2921,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1936:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1936:83:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2932,"nodeType":"ExpressionStatement","src":"1936:83:12"},{"expression":{"arguments":[{"expression":{"id":2937,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2105:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2109:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2105:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2941,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2125:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_Paycrest_$3516","typeString":"contract Paycrest"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Paycrest_$3516","typeString":"contract Paycrest"}],"id":2940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2117:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2939,"name":"address","nodeType":"ElementaryTypeName","src":"2117:7:12","typeDescriptions":{}}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2117:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2943,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"2132:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2934,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"2084:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2933,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"2077:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2077:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2092:12:12","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2805,"src":"2077:27:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2077:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2945,"nodeType":"ExpressionStatement","src":"2077:63:12"},{"expression":{"id":2950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2206:21:12","subExpression":{"baseExpression":{"id":2946,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2840,"src":"2206:6:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2949,"indexExpression":{"expression":{"id":2947,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2213:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2217:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2213:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2206:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2951,"nodeType":"ExpressionStatement","src":"2206:21:12"},{"expression":{"id":2964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2952,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"2433:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":2956,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2464:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2468:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2464:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":2958,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2840,"src":"2476:6:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2961,"indexExpression":{"expression":{"id":2959,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2483:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2487:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2483:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2476:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2954,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2453:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2457:6:12","memberName":"encode","nodeType":"MemberAccess","src":"2453:10:12","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2453:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2953,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2443:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2443:53:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2433:63:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2965,"nodeType":"ExpressionStatement","src":"2433:63:12"},{"expression":{"id":2984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2966,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"2536:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":2968,"indexExpression":{"id":2967,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"2542:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2536:14:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2970,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2581:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2585:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2581:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2972,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"2612:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2973,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"2652:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2974,"name":"_senderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"2696:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2975,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2726:5:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"66616c7365","id":2976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2758:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":2977,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2792:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2980,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"2839:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2832:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":2978,"name":"uint64","nodeType":"ElementaryTypeName","src":"2832:6:12","typeDescriptions":{}}},"id":2981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":2982,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"2869:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2969,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"2553:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Order_$3841_storage_ptr_$","typeString":"type(struct IPaycrest.Order storage pointer)"}},"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["2573:6:12","2605:5:12","2632:18:12","2685:9:12","2720:4:12","2745:11:12","2777:13:12","2820:10:12","2861:6:12"],"names":["seller","token","senderFeeRecipient","senderFee","rate","isFulfilled","refundAddress","currentBPS","amount"],"nodeType":"FunctionCall","src":"2553:334:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_memory_ptr","typeString":"struct IPaycrest.Order memory"}},"src":"2536:351:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":2985,"nodeType":"ExpressionStatement","src":"2536:351:12"},{"eventCall":{"arguments":[{"id":2987,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"2940:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2988,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"2948:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2989,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"2957:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2990,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2966:5:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2991,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"2973:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2992,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"2991:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2993,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"2999:11:12","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":2986,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3777,"src":"2932:7:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes32,uint256,bytes32,bytes32,string memory)"}},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2932:79:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2995,"nodeType":"EmitStatement","src":"2927:84:12"}]},"documentation":{"id":2890,"nodeType":"StructuredDocumentation","src":"1365:40:12","text":"@dev See {createOrder-IPaycrest}. "},"functionSelector":"2654ec7e","id":2997,"implemented":true,"kind":"function","modifiers":[],"name":"createOrder","nameLocation":"1419:11:12","nodeType":"FunctionDefinition","parameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2892,"mutability":"mutable","name":"_token","nameLocation":"1448:6:12","nodeType":"VariableDeclaration","scope":2997,"src":"1440:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2891,"name":"address","nodeType":"ElementaryTypeName","src":"1440:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2894,"mutability":"mutable","name":"_amount","nameLocation":"1473:7:12","nodeType":"VariableDeclaration","scope":2997,"src":"1465:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2893,"name":"uint256","nodeType":"ElementaryTypeName","src":"1465:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2896,"mutability":"mutable","name":"_institutionCode","nameLocation":"1499:16:12","nodeType":"VariableDeclaration","scope":2997,"src":"1491:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2895,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1491:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2898,"mutability":"mutable","name":"_label","nameLocation":"1533:6:12","nodeType":"VariableDeclaration","scope":2997,"src":"1525:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2897,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1525:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2900,"mutability":"mutable","name":"_rate","nameLocation":"1556:5:12","nodeType":"VariableDeclaration","scope":2997,"src":"1549:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2899,"name":"uint96","nodeType":"ElementaryTypeName","src":"1549:6:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2902,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"1580:19:12","nodeType":"VariableDeclaration","scope":2997,"src":"1572:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2901,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2904,"mutability":"mutable","name":"_senderFee","nameLocation":"1617:10:12","nodeType":"VariableDeclaration","scope":2997,"src":"1609:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2903,"name":"uint256","nodeType":"ElementaryTypeName","src":"1609:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2906,"mutability":"mutable","name":"_refundAddress","nameLocation":"1645:14:12","nodeType":"VariableDeclaration","scope":2997,"src":"1637:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2905,"name":"address","nodeType":"ElementaryTypeName","src":"1637:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"messageHash","nameLocation":"1686:11:12","nodeType":"VariableDeclaration","scope":2997,"src":"1670:27:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":2907,"name":"string","nodeType":"ElementaryTypeName","src":"1670:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1430:273:12"},"returnParameters":{"id":2912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2911,"mutability":"mutable","name":"orderId","nameLocation":"1730:7:12","nodeType":"VariableDeclaration","scope":2997,"src":"1722:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1722:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1721:17:12"},"scope":3516,"src":"1410:1608:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3057,"nodeType":"Block","src":"3168:415:12","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3011,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"3235:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3013,"indexExpression":{"id":3012,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"3253:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3235:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e4e6f74537570706f72746564","id":3014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3262:19:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","typeString":"literal_string \"TokenNotSupported\""},"value":"TokenNotSupported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","typeString":"literal_string \"TokenNotSupported\""}],"id":3010,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3227:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3227:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3016,"nodeType":"ExpressionStatement","src":"3227:55:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3018,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3001,"src":"3300:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3310:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3300:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e7449735a65726f","id":3021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3313:14:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","typeString":"literal_string \"AmountIsZero\""},"value":"AmountIsZero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","typeString":"literal_string \"AmountIsZero\""}],"id":3017,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3292:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3292:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3023,"nodeType":"ExpressionStatement","src":"3292:36:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3025,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"3346:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3372:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3364:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3026,"name":"address","nodeType":"ElementaryTypeName","src":"3364:7:12","typeDescriptions":{}}},"id":3029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3364:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3346:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5468726f775a65726f41646472657373","id":3031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3376:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""},"value":"ThrowZeroAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""}],"id":3024,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3338:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3033,"nodeType":"ExpressionStatement","src":"3338:57:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3035,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3005,"src":"3413:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3444:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3436:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3036,"name":"address","nodeType":"ElementaryTypeName","src":"3436:7:12","typeDescriptions":{}}},"id":3039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3436:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3413:33:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5468726f775a65726f41646472657373","id":3041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3448:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""},"value":"ThrowZeroAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""}],"id":3034,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3405:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3405:62:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3043,"nodeType":"ExpressionStatement","src":"3405:62:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3045,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"3485:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3531_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3047,"indexExpression":{"id":3046,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"3513:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3485:45:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3531_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"id":3048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3531:4:12","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":3528,"src":"3485:50:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3547:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3539:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3539:7:12","typeDescriptions":{}}},"id":3052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3539:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3485:64:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964496e737469747574696f6e436f6465","id":3054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3551:24:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","typeString":"literal_string \"InvalidInstitutionCode\""},"value":"InvalidInstitutionCode"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","typeString":"literal_string \"InvalidInstitutionCode\""}],"id":3044,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3477:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3477:99:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3056,"nodeType":"ExpressionStatement","src":"3477:99:12"}]},"id":3058,"implemented":true,"kind":"function","modifiers":[],"name":"_handler","nameLocation":"3033:8:12","nodeType":"FunctionDefinition","parameters":{"id":3008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2999,"mutability":"mutable","name":"_token","nameLocation":"3050:6:12","nodeType":"VariableDeclaration","scope":3058,"src":"3042:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2998,"name":"address","nodeType":"ElementaryTypeName","src":"3042:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3001,"mutability":"mutable","name":"_amount","nameLocation":"3066:7:12","nodeType":"VariableDeclaration","scope":3058,"src":"3058:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3000,"name":"uint256","nodeType":"ElementaryTypeName","src":"3058:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3003,"mutability":"mutable","name":"_refundAddress","nameLocation":"3083:14:12","nodeType":"VariableDeclaration","scope":3058,"src":"3075:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3002,"name":"address","nodeType":"ElementaryTypeName","src":"3075:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3005,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"3107:19:12","nodeType":"VariableDeclaration","scope":3058,"src":"3099:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3004,"name":"address","nodeType":"ElementaryTypeName","src":"3099:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3007,"mutability":"mutable","name":"_institutionCode","nameLocation":"3136:16:12","nodeType":"VariableDeclaration","scope":3058,"src":"3128:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3128:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3041:112:12"},"returnParameters":{"id":3009,"nodeType":"ParameterList","parameters":[],"src":"3168:0:12"},"scope":3516,"src":"3024:559:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[3885],"body":{"id":3175,"nodeType":"Block","src":"4084:1318:12","statements":[{"expression":{"arguments":[{"id":3085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4159:28:12","subExpression":{"expression":{"baseExpression":{"id":3081,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4160:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3083,"indexExpression":{"id":3082,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4166:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4160:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4176:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3834,"src":"4160:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7264657246756c66696c6c6564","id":3086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4189:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""},"value":"OrderFulfilled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""}],"id":3080,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4151:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4151:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3088,"nodeType":"ExpressionStatement","src":"4151:55:12"},{"assignments":[3090],"declarations":[{"constant":false,"id":3090,"mutability":"mutable","name":"token","nameLocation":"4262:5:12","nodeType":"VariableDeclaration","scope":3175,"src":"4254:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3089,"name":"address","nodeType":"ElementaryTypeName","src":"4254:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3095,"initialValue":{"expression":{"baseExpression":{"id":3091,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4270:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3093,"indexExpression":{"id":3092,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4276:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4270:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4286:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3826,"src":"4270:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4254:37:12"},{"expression":{"id":3101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3096,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4370:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3098,"indexExpression":{"id":3097,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4376:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4370:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4386:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3838,"src":"4370:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3100,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4400:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4370:44:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":3102,"nodeType":"ExpressionStatement","src":"4370:44:12"},{"assignments":[3105],"declarations":[{"constant":false,"id":3105,"mutability":"mutable","name":"_feeParams","nameLocation":"4567:10:12","nodeType":"VariableDeclaration","scope":3175,"src":"4556:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee"},"typeName":{"id":3104,"nodeType":"UserDefinedTypeName","pathNode":{"id":3103,"name":"fee","nameLocations":["4556:3:12"],"nodeType":"IdentifierPath","referencedDeclaration":2831,"src":"4556:3:12"},"referencedDeclaration":2831,"src":"4556:3:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_storage_ptr","typeString":"struct Paycrest.fee"}},"visibility":"internal"}],"id":3111,"initialValue":{"arguments":[{"id":3107,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4598:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3108,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4608:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3109,"name":"_isPartner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3071,"src":"4624:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3106,"name":"_calculateFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"4583:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint96_$_t_bool_$returns$_t_struct$_fee_$2831_memory_ptr_$","typeString":"function (bytes32,uint96,bool) view returns (struct Paycrest.fee memory)"}},"id":3110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4583:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"nodeType":"VariableDeclarationStatement","src":"4554:81:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":3117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3112,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4648:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3114,"indexExpression":{"id":3113,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4654:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4648:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3115,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4664:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3838,"src":"4648:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4678:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4648:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3138,"nodeType":"IfStatement","src":"4645:296:12","trueBody":{"id":3137,"nodeType":"Block","src":"4681:260:12","statements":[{"expression":{"id":3123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3118,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4749:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3120,"indexExpression":{"id":3119,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4755:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4749:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4765:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3834,"src":"4749:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4779:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4749:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3124,"nodeType":"ExpressionStatement","src":"4749:34:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3125,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"4801:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3127,"indexExpression":{"id":3126,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4807:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4801:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4817:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3830,"src":"4801:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4829:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4801:29:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3136,"nodeType":"IfStatement","src":"4797:134:12","trueBody":{"id":3135,"nodeType":"Block","src":"4832:99:12","statements":[{"expression":{"arguments":[{"id":3132,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"4907:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3131,"name":"transferSenderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3212,"src":"4889:17:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4889:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3134,"nodeType":"ExpressionStatement","src":"4889:27:12"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3139,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"4963:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4974:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"4963:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4988:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4963:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3153,"nodeType":"IfStatement","src":"4959:154:12","trueBody":{"id":3152,"nodeType":"Block","src":"4991:122:12","statements":[{"expression":{"arguments":[{"id":3147,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"5065:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3148,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"5079:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5090:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"5079:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3144,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3090,"src":"5049:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3143,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5042:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5042:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5042:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5042:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3151,"nodeType":"ExpressionStatement","src":"5042:60:12"}]}},{"expression":{"arguments":[{"id":3158,"name":"_liquidityProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"5191:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3159,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"5211:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5222:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"5211:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3155,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3090,"src":"5175:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3154,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5168:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5168:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5182:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5168:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5168:78:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3162,"nodeType":"ExpressionStatement","src":"5168:78:12"},{"eventCall":{"arguments":[{"id":3164,"name":"_splitOrderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3061,"src":"5292:13:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3165,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"5307:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3166,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"5317:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3167,"name":"_liquidityProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"5326:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3168,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"5346:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3163,"name":"Settled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3790,"src":"5284:7:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint96_$returns$__$","typeString":"function (bytes32,bytes32,bytes32,address,uint96)"}},"id":3169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5284:77:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3170,"nodeType":"EmitStatement","src":"5279:82:12"},{"expression":{"components":[{"id":3171,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"5379:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3172,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3090,"src":"5389:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3173,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5378:17:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$","typeString":"tuple(bytes32,address)"}},"functionReturnParameters":3079,"id":3174,"nodeType":"Return","src":"5371:24:12"}]},"documentation":{"id":3059,"nodeType":"StructuredDocumentation","src":"3790:35:12","text":"@dev See {settle-IPaycrest}. "},"functionSelector":"5fe44cac","id":3176,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":3074,"kind":"modifierInvocation","modifierName":{"id":3073,"name":"onlyAggregator","nameLocations":["4041:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":2889,"src":"4041:14:12"},"nodeType":"ModifierInvocation","src":"4041:16:12"}],"name":"settle","nameLocation":"3839:6:12","nodeType":"FunctionDefinition","parameters":{"id":3072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3061,"mutability":"mutable","name":"_splitOrderId","nameLocation":"3863:13:12","nodeType":"VariableDeclaration","scope":3176,"src":"3855:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3060,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3855:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3063,"mutability":"mutable","name":"_orderId","nameLocation":"3894:8:12","nodeType":"VariableDeclaration","scope":3176,"src":"3886:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3886:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3065,"mutability":"mutable","name":"_label","nameLocation":"3921:6:12","nodeType":"VariableDeclaration","scope":3176,"src":"3913:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3064,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3913:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3067,"mutability":"mutable","name":"_liquidityProvider","nameLocation":"3945:18:12","nodeType":"VariableDeclaration","scope":3176,"src":"3937:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3066,"name":"address","nodeType":"ElementaryTypeName","src":"3937:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3069,"mutability":"mutable","name":"_settlePercent","nameLocation":"3981:14:12","nodeType":"VariableDeclaration","scope":3176,"src":"3974:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3068,"name":"uint64","nodeType":"ElementaryTypeName","src":"3974:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3071,"mutability":"mutable","name":"_isPartner","nameLocation":"4010:10:12","nodeType":"VariableDeclaration","scope":3176,"src":"4005:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3070,"name":"bool","nodeType":"ElementaryTypeName","src":"4005:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3845:185:12"},"returnParameters":{"id":3079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3076,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3176,"src":"4066:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3075,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4066:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3078,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3176,"src":"4075:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3077,"name":"address","nodeType":"ElementaryTypeName","src":"4075:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4065:18:12"},"scope":3516,"src":"3830:1572:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3211,"nodeType":"Block","src":"5462:289:12","statements":[{"assignments":[3182],"declarations":[{"constant":false,"id":3182,"mutability":"mutable","name":"recipient","nameLocation":"5480:9:12","nodeType":"VariableDeclaration","scope":3211,"src":"5472:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3181,"name":"address","nodeType":"ElementaryTypeName","src":"5472:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3187,"initialValue":{"expression":{"baseExpression":{"id":3183,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"5492:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3185,"indexExpression":{"id":3184,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"5498:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5492:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5508:18:12","memberName":"senderFeeRecipient","nodeType":"MemberAccess","referencedDeclaration":3828,"src":"5492:34:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5472:54:12"},{"assignments":[3189],"declarations":[{"constant":false,"id":3189,"mutability":"mutable","name":"_fee","nameLocation":"5544:4:12","nodeType":"VariableDeclaration","scope":3211,"src":"5536:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3188,"name":"uint256","nodeType":"ElementaryTypeName","src":"5536:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3194,"initialValue":{"expression":{"baseExpression":{"id":3190,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"5551:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3192,"indexExpression":{"id":3191,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"5557:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5551:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5567:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3830,"src":"5551:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5536:40:12"},{"expression":{"arguments":[{"id":3202,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3182,"src":"5656:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3203,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"5667:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":3196,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"5624:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3198,"indexExpression":{"id":3197,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"5630:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5624:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5640:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3826,"src":"5624:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3195,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5617:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5617:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5647:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5617:38:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5617:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3205,"nodeType":"ExpressionStatement","src":"5617:55:12"},{"eventCall":{"arguments":[{"id":3207,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3182,"src":"5728:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3208,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"5739:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3206,"name":"TransferSenderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3804,"src":"5710:17:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5710:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3210,"nodeType":"EmitStatement","src":"5705:39:12"}]},"id":3212,"implemented":true,"kind":"function","modifiers":[],"name":"transferSenderFee","nameLocation":"5417:17:12","nodeType":"FunctionDefinition","parameters":{"id":3179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3178,"mutability":"mutable","name":"_orderId","nameLocation":"5443:8:12","nodeType":"VariableDeclaration","scope":3212,"src":"5435:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3177,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5435:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5434:18:12"},"returnParameters":{"id":3180,"nodeType":"ParameterList","parameters":[],"src":"5462:0:12"},"scope":3516,"src":"5408:343:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3895],"body":{"id":3271,"nodeType":"Block","src":"5888:455:12","statements":[{"expression":{"arguments":[{"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5963:28:12","subExpression":{"expression":{"baseExpression":{"id":3225,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"5964:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3227,"indexExpression":{"id":3226,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"5970:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5964:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3228,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5980:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3834,"src":"5964:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7264657246756c66696c6c6564","id":3230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5993:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""},"value":"OrderFulfilled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""}],"id":3224,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5955:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5955:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3232,"nodeType":"ExpressionStatement","src":"5955:55:12"},{"expression":{"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3233,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6050:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3235,"indexExpression":{"id":3234,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"6056:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6050:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6066:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3834,"src":"6050:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6080:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6050:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3239,"nodeType":"ExpressionStatement","src":"6050:34:12"},{"expression":{"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3240,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6094:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3242,"indexExpression":{"id":3241,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"6100:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6094:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6110:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3838,"src":"6094:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6123:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6094:30:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":3246,"nodeType":"ExpressionStatement","src":"6094:30:12"},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":3254,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6204:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3256,"indexExpression":{"id":3255,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"6210:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6204:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6220:13:12","memberName":"refundAddress","nodeType":"MemberAccess","referencedDeclaration":3836,"src":"6204:29:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":3258,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6235:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3260,"indexExpression":{"id":3259,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"6241:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6235:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6251:6:12","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3840,"src":"6235:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":3248,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6172:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3250,"indexExpression":{"id":3249,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"6178:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6172:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6188:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3826,"src":"6172:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3247,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"6165:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6165:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6195:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"6165:38:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6165:93:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3263,"nodeType":"ExpressionStatement","src":"6165:93:12"},{"eventCall":{"arguments":[{"id":3265,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"6298:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3266,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"6308:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3264,"name":"Refunded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"6289:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":3267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6289:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3268,"nodeType":"EmitStatement","src":"6284:31:12"},{"expression":{"hexValue":"74727565","id":3269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6332:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3223,"id":3270,"nodeType":"Return","src":"6325:11:12"}]},"documentation":{"id":3213,"nodeType":"StructuredDocumentation","src":"5757:35:12","text":"@dev See {refund-IPaycrest}. "},"functionSelector":"e4683a79","id":3272,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":3220,"kind":"modifierInvocation","modifierName":{"id":3219,"name":"onlyAggregator","nameLocations":["5857:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":2889,"src":"5857:14:12"},"nodeType":"ModifierInvocation","src":"5857:16:12"}],"name":"refund","nameLocation":"5806:6:12","nodeType":"FunctionDefinition","parameters":{"id":3218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3215,"mutability":"mutable","name":"_orderId","nameLocation":"5821:8:12","nodeType":"VariableDeclaration","scope":3272,"src":"5813:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3214,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5813:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3217,"mutability":"mutable","name":"_label","nameLocation":"5839:6:12","nodeType":"VariableDeclaration","scope":3272,"src":"5831:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3216,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5831:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5812:34:12"},"returnParameters":{"id":3223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3272,"src":"5882:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3221,"name":"bool","nodeType":"ElementaryTypeName","src":"5882:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5881:6:12"},"scope":3516,"src":"5797:546:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3350,"nodeType":"Block","src":"6476:982:12","statements":[{"assignments":[3285],"declarations":[{"constant":false,"id":3285,"mutability":"mutable","name":"amount","nameLocation":"6554:6:12","nodeType":"VariableDeclaration","scope":3350,"src":"6546:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3284,"name":"uint256","nodeType":"ElementaryTypeName","src":"6546:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3290,"initialValue":{"expression":{"baseExpression":{"id":3286,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6563:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3288,"indexExpression":{"id":3287,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"6569:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6563:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6579:6:12","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3840,"src":"6563:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6546:39:12"},{"expression":{"id":3298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3291,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"6633:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3292,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"6642:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"baseExpression":{"id":3293,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"6651:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3295,"indexExpression":{"id":3294,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"6657:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6651:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6667:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3830,"src":"6651:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6642:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6633:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3299,"nodeType":"ExpressionStatement","src":"6633:43:12"},{"expression":{"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3300,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"6755:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3302,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6766:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"6755:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3303,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"6793:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3304,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3276,"src":"6802:14:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"6793:23:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6792:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3307,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"6820:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6792:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6755:72:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3310,"nodeType":"ExpressionStatement","src":"6755:72:12"},{"expression":{"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3311,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"6895:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3313,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6906:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"6895:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3314,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"6921:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6932:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"6921:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3316,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3535,"src":"6958:18:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6921:55:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3318,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6920:57:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3319,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"6980:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6920:67:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6895:92:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3322,"nodeType":"ExpressionStatement","src":"6895:92:12"},{"expression":{"id":3332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3323,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"7085:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3325,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7096:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7085:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3326,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"7123:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7134:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7123:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":3328,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"7160:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7171:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7160:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7123:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7122:61:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7085:98:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3333,"nodeType":"ExpressionStatement","src":"7085:98:12"},{"condition":{"id":3334,"name":"_isPartner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"7315:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3349,"nodeType":"IfStatement","src":"7311:141:12","trueBody":{"id":3348,"nodeType":"Block","src":"7327:125:12","statements":[{"expression":{"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3335,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"7341:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7352:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7341:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":3338,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"7379:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7390:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7379:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7341:60:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3341,"nodeType":"ExpressionStatement","src":"7341:60:12"},{"expression":{"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3342,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"7415:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7426:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7415:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7440:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7415:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3347,"nodeType":"ExpressionStatement","src":"7415:26:12"}]}}]},"id":3351,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateFees","nameLocation":"6358:14:12","nodeType":"FunctionDefinition","parameters":{"id":3279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3274,"mutability":"mutable","name":"_orderId","nameLocation":"6381:8:12","nodeType":"VariableDeclaration","scope":3351,"src":"6373:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3273,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6373:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3276,"mutability":"mutable","name":"_settlePercent","nameLocation":"6398:14:12","nodeType":"VariableDeclaration","scope":3351,"src":"6391:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3275,"name":"uint96","nodeType":"ElementaryTypeName","src":"6391:6:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3278,"mutability":"mutable","name":"_isPartner","nameLocation":"6419:10:12","nodeType":"VariableDeclaration","scope":3351,"src":"6414:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3277,"name":"bool","nodeType":"ElementaryTypeName","src":"6414:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6372:58:12"},"returnParameters":{"id":3283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3282,"mutability":"mutable","name":"_feeParams","nameLocation":"6463:10:12","nodeType":"VariableDeclaration","scope":3351,"src":"6452:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_memory_ptr","typeString":"struct Paycrest.fee"},"typeName":{"id":3281,"nodeType":"UserDefinedTypeName","pathNode":{"id":3280,"name":"fee","nameLocations":["6452:3:12"],"nodeType":"IdentifierPath","referencedDeclaration":2831,"src":"6452:3:12"},"referencedDeclaration":2831,"src":"6452:3:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2831_storage_ptr","typeString":"struct Paycrest.fee"}},"visibility":"internal"}],"src":"6451:24:12"},"scope":3516,"src":"6349:1109:12","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[3912],"body":{"id":3364,"nodeType":"Block","src":"7781:39:12","statements":[{"expression":{"baseExpression":{"id":3360,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7798:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3841_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3362,"indexExpression":{"id":3361,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"7804:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7798:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage","typeString":"struct IPaycrest.Order storage ref"}},"functionReturnParameters":3359,"id":3363,"nodeType":"Return","src":"7791:22:12"}]},"documentation":{"id":3352,"nodeType":"StructuredDocumentation","src":"7659:41:12","text":"@dev See {getOrderInfo-IPaycrest}. "},"functionSelector":"768c6ec0","id":3365,"implemented":true,"kind":"function","modifiers":[],"name":"getOrderInfo","nameLocation":"7714:12:12","nodeType":"FunctionDefinition","parameters":{"id":3355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3354,"mutability":"mutable","name":"_orderId","nameLocation":"7735:8:12","nodeType":"VariableDeclaration","scope":3365,"src":"7727:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3353,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7727:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7726:18:12"},"returnParameters":{"id":3359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3365,"src":"7767:12:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_memory_ptr","typeString":"struct IPaycrest.Order"},"typeName":{"id":3357,"nodeType":"UserDefinedTypeName","pathNode":{"id":3356,"name":"Order","nameLocations":["7767:5:12"],"nodeType":"IdentifierPath","referencedDeclaration":3841,"src":"7767:5:12"},"referencedDeclaration":3841,"src":"7767:5:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage_ptr","typeString":"struct IPaycrest.Order"}},"visibility":"internal"}],"src":"7766:14:12"},"scope":3516,"src":"7705:115:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3903],"body":{"id":3377,"nodeType":"Block","src":"7946:49:12","statements":[{"expression":{"baseExpression":{"id":3373,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"7963:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3375,"indexExpression":{"id":3374,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3368,"src":"7981:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7963:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3372,"id":3376,"nodeType":"Return","src":"7956:32:12"}]},"documentation":{"id":3366,"nodeType":"StructuredDocumentation","src":"7826:45:12","text":"@dev See {isTokenSupported-IPaycrest}. "},"functionSelector":"75151b63","id":3378,"implemented":true,"kind":"function","modifiers":[],"name":"isTokenSupported","nameLocation":"7885:16:12","nodeType":"FunctionDefinition","parameters":{"id":3369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3368,"mutability":"mutable","name":"_token","nameLocation":"7910:6:12","nodeType":"VariableDeclaration","scope":3378,"src":"7902:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3367,"name":"address","nodeType":"ElementaryTypeName","src":"7902:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7901:16:12"},"returnParameters":{"id":3372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3371,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3378,"src":"7940:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3370,"name":"bool","nodeType":"ElementaryTypeName","src":"7940:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7939:6:12"},"scope":3516,"src":"7876:119:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3391,"nodeType":"Block","src":"8162:57:12","statements":[{"expression":{"baseExpression":{"id":3387,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"8179:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3531_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3389,"indexExpression":{"id":3388,"name":"code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3381,"src":"8207:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8179:33:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3531_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"functionReturnParameters":3386,"id":3390,"nodeType":"Return","src":"8172:40:12"}]},"documentation":{"id":3379,"nodeType":"StructuredDocumentation","src":"8001:56:12","text":"@dev See {getSupportedInstitutionName-IPaycrest}. "},"functionSelector":"87490d86","id":3392,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInstitutionName","nameLocation":"8071:27:12","nodeType":"FunctionDefinition","parameters":{"id":3382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3381,"mutability":"mutable","name":"code","nameLocation":"8107:4:12","nodeType":"VariableDeclaration","scope":3392,"src":"8099:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3380,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8099:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8098:14:12"},"returnParameters":{"id":3386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3385,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3392,"src":"8136:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3531_memory_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"},"typeName":{"id":3384,"nodeType":"UserDefinedTypeName","pathNode":{"id":3383,"name":"InstitutionByCode","nameLocations":["8136:17:12"],"nodeType":"IdentifierPath","referencedDeclaration":3531,"src":"8136:17:12"},"referencedDeclaration":3531,"src":"8136:17:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3531_storage_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"}},"visibility":"internal"}],"src":"8135:26:12"},"scope":3516,"src":"8062:157:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3450,"nodeType":"Block","src":"8322:390:12","statements":[{"assignments":[3405],"declarations":[{"constant":false,"id":3405,"mutability":"mutable","name":"institutions","nameLocation":"8353:12:12","nodeType":"VariableDeclaration","scope":3450,"src":"8332:33:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3403,"nodeType":"UserDefinedTypeName","pathNode":{"id":3402,"name":"Institution","nameLocations":["8332:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3526,"src":"8332:11:12"},"referencedDeclaration":3526,"src":"8332:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3404,"nodeType":"ArrayTypeName","src":"8332:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"id":3409,"initialValue":{"baseExpression":{"id":3406,"name":"supportedInstitutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"8368:21:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution storage ref[] storage ref)"}},"id":3408,"indexExpression":{"id":3407,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"8390:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8368:31:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_storage_$dyn_storage","typeString":"struct PaycrestSettingManager.Institution storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8332:67:12"},{"assignments":[3411],"declarations":[{"constant":false,"id":3411,"mutability":"mutable","name":"length","nameLocation":"8417:6:12","nodeType":"VariableDeclaration","scope":3450,"src":"8409:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3410,"name":"uint256","nodeType":"ElementaryTypeName","src":"8409:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3414,"initialValue":{"expression":{"id":3412,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3405,"src":"8426:12:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8439:6:12","memberName":"length","nodeType":"MemberAccess","src":"8426:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8409:36:12"},{"assignments":[3419],"declarations":[{"constant":false,"id":3419,"mutability":"mutable","name":"result","nameLocation":"8476:6:12","nodeType":"VariableDeclaration","scope":3450,"src":"8455:27:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3417,"nodeType":"UserDefinedTypeName","pathNode":{"id":3416,"name":"Institution","nameLocations":["8455:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3526,"src":"8455:11:12"},"referencedDeclaration":3526,"src":"8455:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3418,"nodeType":"ArrayTypeName","src":"8455:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"id":3426,"initialValue":{"arguments":[{"id":3424,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"8503:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8485:17:12","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct PaycrestSettingManager.Institution memory[] memory)"},"typeName":{"baseType":{"id":3421,"nodeType":"UserDefinedTypeName","pathNode":{"id":3420,"name":"Institution","nameLocations":["8489:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3526,"src":"8489:11:12"},"referencedDeclaration":3526,"src":"8489:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3422,"nodeType":"ArrayTypeName","src":"8489:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}}},"id":3425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8485:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8455:55:12"},{"body":{"id":3446,"nodeType":"Block","src":"8563:111:12","statements":[{"expression":{"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3434,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"8577:6:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3436,"indexExpression":{"id":3435,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3428,"src":"8584:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8577:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3437,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3405,"src":"8589:12:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3439,"indexExpression":{"id":3438,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3428,"src":"8602:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8589:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"src":"8577:27:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3441,"nodeType":"ExpressionStatement","src":"8577:27:12"},{"id":3445,"nodeType":"UncheckedBlock","src":"8618:46:12","statements":[{"expression":{"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8646:3:12","subExpression":{"id":3442,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3428,"src":"8646:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3444,"nodeType":"ExpressionStatement","src":"8646:3:12"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3431,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3428,"src":"8549:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3432,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"8553:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8549:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3447,"initializationExpression":{"assignments":[3428],"declarations":[{"constant":false,"id":3428,"mutability":"mutable","name":"i","nameLocation":"8542:1:12","nodeType":"VariableDeclaration","scope":3447,"src":"8534:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3427,"name":"uint256","nodeType":"ElementaryTypeName","src":"8534:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3430,"initialValue":{"hexValue":"30","id":3429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8546:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8534:13:12"},"nodeType":"ForStatement","src":"8529:145:12"},{"expression":{"id":3448,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"8699:6:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"functionReturnParameters":3400,"id":3449,"nodeType":"Return","src":"8692:13:12"}]},"functionSelector":"02621338","id":3451,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInstitutions","nameLocation":"8234:24:12","nodeType":"FunctionDefinition","parameters":{"id":3395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3394,"mutability":"mutable","name":"currency","nameLocation":"8267:8:12","nodeType":"VariableDeclaration","scope":3451,"src":"8259:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8259:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8258:18:12"},"returnParameters":{"id":3400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3399,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3451,"src":"8300:20:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3397,"nodeType":"UserDefinedTypeName","pathNode":{"id":3396,"name":"Institution","nameLocations":["8300:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3526,"src":"8300:11:12"},"referencedDeclaration":3526,"src":"8300:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3398,"nodeType":"ArrayTypeName","src":"8300:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"src":"8299:22:12"},"scope":3516,"src":"8225:487:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3920],"body":{"id":3463,"nodeType":"Block","src":"8852:52:12","statements":[{"expression":{"components":[{"id":3459,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3535,"src":"8869:18:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3460,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"8889:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3461,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8868:29:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint64_$_t_uint256_$","typeString":"tuple(uint64,uint256)"}},"functionReturnParameters":3458,"id":3462,"nodeType":"Return","src":"8862:35:12"}]},"documentation":{"id":3452,"nodeType":"StructuredDocumentation","src":"8718:42:12","text":"@dev See {getFeeDetails-IPaycrest}. "},"functionSelector":"b810c636","id":3464,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"8774:13:12","nodeType":"FunctionDefinition","parameters":{"id":3453,"nodeType":"ParameterList","parameters":[],"src":"8787:2:12"},"returnParameters":{"id":3458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3455,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3464,"src":"8821:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3454,"name":"uint64","nodeType":"ElementaryTypeName","src":"8821:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3464,"src":"8838:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3456,"name":"uint256","nodeType":"ElementaryTypeName","src":"8838:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8811:40:12"},"scope":3516,"src":"8765:139:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3926],"body":{"id":3472,"nodeType":"Block","src":"9027:42:12","statements":[{"expression":{"id":3470,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3539,"src":"9044:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3469,"id":3471,"nodeType":"Return","src":"9037:25:12"}]},"documentation":{"id":3465,"nodeType":"StructuredDocumentation","src":"8910:49:12","text":"@dev See {getAggregatorAddress-IPaycrest}. "},"functionSelector":"e8d6e0de","id":3473,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregatorAddress","nameLocation":"8973:20:12","nodeType":"FunctionDefinition","parameters":{"id":3466,"nodeType":"ParameterList","parameters":[],"src":"8993:2:12"},"returnParameters":{"id":3469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3468,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3473,"src":"9018:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3467,"name":"address","nodeType":"ElementaryTypeName","src":"9018:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9017:9:12"},"scope":3516,"src":"8964:105:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3940],"body":{"id":3485,"nodeType":"Block","src":"9203:46:12","statements":[{"expression":{"baseExpression":{"id":3481,"name":"_isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"9220:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3483,"indexExpression":{"id":3482,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3476,"src":"9235:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9220:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3480,"id":3484,"nodeType":"Return","src":"9213:29:12"}]},"documentation":{"id":3474,"nodeType":"StructuredDocumentation","src":"9075:49:12","text":"@dev See {getWhitelistedStatus-IPaycrest}. "},"functionSelector":"d8e8de34","id":3486,"implemented":true,"kind":"function","modifiers":[],"name":"getWhitelistedStatus","nameLocation":"9138:20:12","nodeType":"FunctionDefinition","parameters":{"id":3477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3476,"mutability":"mutable","name":"sender","nameLocation":"9167:6:12","nodeType":"VariableDeclaration","scope":3486,"src":"9159:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3475,"name":"address","nodeType":"ElementaryTypeName","src":"9159:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9158:16:12"},"returnParameters":{"id":3480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3486,"src":"9197:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3478,"name":"bool","nodeType":"ElementaryTypeName","src":"9197:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9196:6:12"},"scope":3516,"src":"9129:120:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3932],"body":{"id":3494,"nodeType":"Block","src":"9363:35:12","statements":[{"expression":{"id":3492,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"9380:11:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":3491,"id":3493,"nodeType":"Return","src":"9373:18:12"}]},"documentation":{"id":3487,"nodeType":"StructuredDocumentation","src":"9255:42:12","text":"@dev See {getAggregator-IPaycrest}. "},"functionSelector":"3ad59dbc","id":3495,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregator","nameLocation":"9311:13:12","nodeType":"FunctionDefinition","parameters":{"id":3488,"nodeType":"ParameterList","parameters":[],"src":"9324:2:12"},"returnParameters":{"id":3491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3490,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3495,"src":"9349:12:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3489,"name":"bytes","nodeType":"ElementaryTypeName","src":"9349:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9348:14:12"},"scope":3516,"src":"9302:96:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3514,"nodeType":"Block","src":"9585:61:12","statements":[{"expression":{"arguments":[{"id":3510,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3499,"src":"9619:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3511,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"9631:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3507,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"9602:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3506,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"9595:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9595:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9610:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"9595:23:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9595:44:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3513,"nodeType":"ExpressionStatement","src":"9595:44:12"}]},"functionSelector":"d9caed12","id":3515,"implemented":true,"kind":"function","modifiers":[{"id":3504,"kind":"modifierInvocation","modifierName":{"id":3503,"name":"onlyOwner","nameLocations":["9575:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"9575:9:12"},"nodeType":"ModifierInvocation","src":"9575:9:12"}],"name":"withdraw","nameLocation":"9504:8:12","nodeType":"FunctionDefinition","parameters":{"id":3502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3497,"mutability":"mutable","name":"_token","nameLocation":"9521:6:12","nodeType":"VariableDeclaration","scope":3515,"src":"9513:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3496,"name":"address","nodeType":"ElementaryTypeName","src":"9513:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3499,"mutability":"mutable","name":"_recipient","nameLocation":"9537:10:12","nodeType":"VariableDeclaration","scope":3515,"src":"9529:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3498,"name":"address","nodeType":"ElementaryTypeName","src":"9529:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3501,"mutability":"mutable","name":"_amount","nameLocation":"9557:7:12","nodeType":"VariableDeclaration","scope":3515,"src":"9549:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3500,"name":"uint256","nodeType":"ElementaryTypeName","src":"9549:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9512:53:12"},"returnParameters":{"id":3505,"nodeType":"ParameterList","parameters":[],"src":"9585:0:12"},"scope":3516,"src":"9495:151:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3517,"src":"367:9282:12","usedErrors":[]}],"src":"38:9612:12"},"id":12},"contracts/PaycrestSettingManager.sol":{"ast":{"absolutePath":"contracts/PaycrestSettingManager.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300],"OwnableUpgradeable":[131],"PaycrestSettingManager":[3755]},"id":3756,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3518,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:13"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":3519,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3756,"sourceUnit":132,"src":"62:75:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3520,"name":"OwnableUpgradeable","nameLocations":["174:18:13"],"nodeType":"IdentifierPath","referencedDeclaration":131,"src":"174:18:13"},"id":3521,"nodeType":"InheritanceSpecifier","src":"174:18:13"}],"canonicalName":"PaycrestSettingManager","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3755,"linearizedBaseContracts":[3755,131,1162,300],"name":"PaycrestSettingManager","nameLocation":"148:22:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"PaycrestSettingManager.Institution","id":3526,"members":[{"constant":false,"id":3523,"mutability":"mutable","name":"code","nameLocation":"237:4:13","nodeType":"VariableDeclaration","scope":3526,"src":"229:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"229:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3525,"mutability":"mutable","name":"name","nameLocation":"294:4:13","nodeType":"VariableDeclaration","scope":3526,"src":"286:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3524,"name":"bytes32","nodeType":"ElementaryTypeName","src":"286:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Institution","nameLocation":"207:11:13","nodeType":"StructDefinition","scope":3755,"src":"200:109:13","visibility":"public"},{"canonicalName":"PaycrestSettingManager.InstitutionByCode","id":3531,"members":[{"constant":false,"id":3528,"mutability":"mutable","name":"name","nameLocation":"357:4:13","nodeType":"VariableDeclaration","scope":3531,"src":"349:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3527,"name":"bytes32","nodeType":"ElementaryTypeName","src":"349:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3530,"mutability":"mutable","name":"currency","nameLocation":"379:8:13","nodeType":"VariableDeclaration","scope":3531,"src":"371:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"371:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"InstitutionByCode","nameLocation":"321:17:13","nodeType":"StructDefinition","scope":3755,"src":"314:80:13","visibility":"public"},{"constant":false,"id":3533,"mutability":"mutable","name":"MAX_BPS","nameLocation":"416:7:13","nodeType":"VariableDeclaration","scope":3755,"src":"399:24:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3532,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3535,"mutability":"mutable","name":"protocolFeePercent","nameLocation":"445:18:13","nodeType":"VariableDeclaration","scope":3755,"src":"429:34:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3534,"name":"uint64","nodeType":"ElementaryTypeName","src":"429:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3537,"mutability":"mutable","name":"feeRecipient","nameLocation":"492:12:13","nodeType":"VariableDeclaration","scope":3755,"src":"475:29:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3536,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3539,"mutability":"mutable","name":"_aggregatorAddress","nameLocation":"527:18:13","nodeType":"VariableDeclaration","scope":3755,"src":"510:35:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3538,"name":"address","nodeType":"ElementaryTypeName","src":"510:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3541,"mutability":"mutable","name":"_aggregator","nameLocation":"566:11:13","nodeType":"VariableDeclaration","scope":3755,"src":"551:26:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes"},"typeName":{"id":3540,"name":"bytes","nodeType":"ElementaryTypeName","src":"551:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3545,"mutability":"mutable","name":"__gap","nameLocation":"717:5:13","nodeType":"VariableDeclaration","scope":3755,"src":"697:25:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":3542,"name":"uint256","nodeType":"ElementaryTypeName","src":"697:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3544,"length":{"hexValue":"3530","id":3543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"705:2:13","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"697:11:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"},{"constant":false,"id":3549,"mutability":"mutable","name":"_isTokenSupported","nameLocation":"763:17:13","nodeType":"VariableDeclaration","scope":3755,"src":"729:51:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3548,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3546,"name":"address","nodeType":"ElementaryTypeName","src":"737:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"729:24:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3547,"name":"bool","nodeType":"ElementaryTypeName","src":"748:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":3553,"mutability":"mutable","name":"_isWhitelisted","nameLocation":"820:14:13","nodeType":"VariableDeclaration","scope":3755,"src":"786:48:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3552,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3550,"name":"address","nodeType":"ElementaryTypeName","src":"794:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"786:24:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3551,"name":"bool","nodeType":"ElementaryTypeName","src":"805:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":3559,"mutability":"mutable","name":"supportedInstitutions","nameLocation":"884:21:13","nodeType":"VariableDeclaration","scope":3755,"src":"841:64:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])"},"typeName":{"id":3558,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3554,"name":"bytes32","nodeType":"ElementaryTypeName","src":"849:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"841:33:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":3556,"nodeType":"UserDefinedTypeName","pathNode":{"id":3555,"name":"Institution","nameLocations":["860:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":3526,"src":"860:11:13"},"referencedDeclaration":3526,"src":"860:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3557,"nodeType":"ArrayTypeName","src":"860:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}}},"visibility":"internal"},{"constant":false,"id":3564,"mutability":"mutable","name":"supportedInstitutionsByCode","nameLocation":"958:27:13","nodeType":"VariableDeclaration","scope":3755,"src":"911:74:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3531_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)"},"typeName":{"id":3563,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3560,"name":"bytes32","nodeType":"ElementaryTypeName","src":"919:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"911:37:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3531_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3562,"nodeType":"UserDefinedTypeName","pathNode":{"id":3561,"name":"InstitutionByCode","nameLocations":["930:17:13"],"nodeType":"IdentifierPath","referencedDeclaration":3531,"src":"930:17:13"},"referencedDeclaration":3531,"src":"930:17:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3531_storage_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"}}},"visibility":"internal"},{"anonymous":false,"eventSelector":"e22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace930","id":3572,"name":"SettingManagerBool","nameLocation":"998:18:13","nodeType":"EventDefinition","parameters":{"id":3571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3566,"indexed":false,"mutability":"mutable","name":"what","nameLocation":"1025:4:13","nodeType":"VariableDeclaration","scope":3572,"src":"1017:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3565,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1017:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3568,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1039:5:13","nodeType":"VariableDeclaration","scope":3572,"src":"1031:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3567,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3570,"indexed":false,"mutability":"mutable","name":"status","nameLocation":"1051:6:13","nodeType":"VariableDeclaration","scope":3572,"src":"1046:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3569,"name":"bool","nodeType":"ElementaryTypeName","src":"1046:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1016:42:13"},"src":"992:67:13"},{"anonymous":false,"eventSelector":"c8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a9","id":3576,"name":"PaycrestFees","nameLocation":"1070:12:13","nodeType":"EventDefinition","parameters":{"id":3575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3574,"indexed":false,"mutability":"mutable","name":"protocolFee","nameLocation":"1090:11:13","nodeType":"VariableDeclaration","scope":3576,"src":"1083:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3573,"name":"uint64","nodeType":"ElementaryTypeName","src":"1083:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1082:20:13"},"src":"1064:39:13"},{"anonymous":false,"eventSelector":"6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef","id":3580,"name":"SetAggregator","nameLocation":"1114:13:13","nodeType":"EventDefinition","parameters":{"id":3579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3578,"indexed":false,"mutability":"mutable","name":"aggregator","nameLocation":"1134:10:13","nodeType":"VariableDeclaration","scope":3580,"src":"1128:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3577,"name":"bytes","nodeType":"ElementaryTypeName","src":"1128:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1127:18:13"},"src":"1108:38:13"},{"anonymous":false,"eventSelector":"2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a73","id":3584,"name":"SetFeeRecipient","nameLocation":"1157:15:13","nodeType":"EventDefinition","parameters":{"id":3583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3582,"indexed":false,"mutability":"mutable","name":"feeRecipient","nameLocation":"1181:12:13","nodeType":"VariableDeclaration","scope":3584,"src":"1173:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3581,"name":"address","nodeType":"ElementaryTypeName","src":"1173:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1172:22:13"},"src":"1151:44:13"},{"body":{"id":3631,"nodeType":"Block","src":"1490:255:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3596,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3588,"src":"1508:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1525:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1517:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3597,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:13","typeDescriptions":{}}},"id":3600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1517:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1508:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50617963726573743a207a65726f2061646472657373","id":3602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1529:24:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""},"value":"Paycrest: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""}],"id":3595,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1500:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1500:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3604,"nodeType":"ExpressionStatement","src":"1500:54:13"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3605,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3586,"src":"1568:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"746f6b656e","id":3606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1576:7:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b9b0454cadcb5884dd3faa6ba975da4d2459aa3f11d31291a25a8358f84946d","typeString":"literal_string \"token\""},"value":"token"},"src":"1568:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3614,"nodeType":"IfStatement","src":"1564:54:13","trueBody":{"expression":{"id":3612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3608,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"1585:17:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3610,"indexExpression":{"id":3609,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3588,"src":"1603:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1585:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3611,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"1612:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1585:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3613,"nodeType":"ExpressionStatement","src":"1585:33:13"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3615,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3586,"src":"1632:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"77686974656c697374","id":3616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1640:11:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_54c80de7e611b57d6d38523e3c0c59a6a3e72cddf62c95cf51a204e52c1a86ad","typeString":"literal_string \"whitelist\""},"value":"whitelist"},"src":"1632:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3624,"nodeType":"IfStatement","src":"1628:55:13","trueBody":{"expression":{"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3618,"name":"_isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"1653:14:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3620,"indexExpression":{"id":3619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3588,"src":"1668:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1653:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3621,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"1677:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1653:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3623,"nodeType":"ExpressionStatement","src":"1653:30:13"}},{"eventCall":{"arguments":[{"id":3626,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3586,"src":"1718:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3627,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3588,"src":"1724:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3628,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"1731:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3625,"name":"SettingManagerBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"1699:18:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bool)"}},"id":3629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1699:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3630,"nodeType":"EmitStatement","src":"1694:44:13"}]},"functionSelector":"99e3c0b4","id":3632,"implemented":true,"kind":"function","modifiers":[{"id":3593,"kind":"modifierInvocation","modifierName":{"id":3592,"name":"onlyOwner","nameLocations":["1480:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"1480:9:13"},"nodeType":"ModifierInvocation","src":"1480:9:13"}],"name":"settingManagerBool","nameLocation":"1410:18:13","nodeType":"FunctionDefinition","parameters":{"id":3591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3586,"mutability":"mutable","name":"what","nameLocation":"1437:4:13","nodeType":"VariableDeclaration","scope":3632,"src":"1429:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3585,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1429:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3588,"mutability":"mutable","name":"value","nameLocation":"1451:5:13","nodeType":"VariableDeclaration","scope":3632,"src":"1443:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3587,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3590,"mutability":"mutable","name":"status","nameLocation":"1463:6:13","nodeType":"VariableDeclaration","scope":3632,"src":"1458:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3589,"name":"bool","nodeType":"ElementaryTypeName","src":"1458:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1428:42:13"},"returnParameters":{"id":3594,"nodeType":"ParameterList","parameters":[],"src":"1490:0:13"},"scope":3755,"src":"1401:344:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3685,"nodeType":"Block","src":"1857:394:13","statements":[{"assignments":[3644],"declarations":[{"constant":false,"id":3644,"mutability":"mutable","name":"length","nameLocation":"1876:6:13","nodeType":"VariableDeclaration","scope":3685,"src":"1868:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3643,"name":"uint256","nodeType":"ElementaryTypeName","src":"1868:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3647,"initialValue":{"expression":{"id":3645,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3638,"src":"1885:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1898:6:13","memberName":"length","nodeType":"MemberAccess","src":"1885:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1868:36:13"},{"body":{"id":3683,"nodeType":"Block","src":"1945:300:13","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3659,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3638,"src":"1996:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3661,"indexExpression":{"id":3660,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"2009:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1996:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Institution_$3526_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}],"expression":{"baseExpression":{"id":3655,"name":"supportedInstitutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"1959:21:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution storage ref[] storage ref)"}},"id":3657,"indexExpression":{"id":3656,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"1981:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1959:31:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_storage_$dyn_storage","typeString":"struct PaycrestSettingManager.Institution storage ref[] storage ref"}},"id":3658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1991:4:13","memberName":"push","nodeType":"MemberAccess","src":"1959:36:13","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_ptr_$_t_struct$_Institution_$3526_storage_$returns$__$attached_to$_t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_ptr_$","typeString":"function (struct PaycrestSettingManager.Institution storage ref[] storage pointer,struct PaycrestSettingManager.Institution storage ref)"}},"id":3662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1959:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3663,"nodeType":"ExpressionStatement","src":"1959:53:13"},{"expression":{"id":3677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3664,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"2026:27:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3531_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3669,"indexExpression":{"expression":{"baseExpression":{"id":3665,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3638,"src":"2054:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3667,"indexExpression":{"id":3666,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"2067:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2054:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3668,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2070:4:13","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":3523,"src":"2054:20:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2026:49:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3531_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"baseExpression":{"id":3671,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3638,"src":"2120:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3673,"indexExpression":{"id":3672,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"2133:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2120:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2136:4:13","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":3525,"src":"2120:20:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3675,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"2152:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3670,"name":"InstitutionByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3531,"src":"2078:17:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_InstitutionByCode_$3531_storage_ptr_$","typeString":"type(struct PaycrestSettingManager.InstitutionByCode storage pointer)"}},"id":3676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["2114:4:13","2142:8:13"],"names":["name","currency"],"nodeType":"FunctionCall","src":"2078:97:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3531_memory_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode memory"}},"src":"2026:149:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3531_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"id":3678,"nodeType":"ExpressionStatement","src":"2026:149:13"},{"id":3682,"nodeType":"UncheckedBlock","src":"2189:46:13","statements":[{"expression":{"id":3680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2217:3:13","subExpression":{"id":3679,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"2217:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3681,"nodeType":"ExpressionStatement","src":"2217:3:13"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3652,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"1931:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3653,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3644,"src":"1935:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1931:10:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3684,"initializationExpression":{"assignments":[3649],"declarations":[{"constant":false,"id":3649,"mutability":"mutable","name":"i","nameLocation":"1924:1:13","nodeType":"VariableDeclaration","scope":3684,"src":"1919:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3648,"name":"uint","nodeType":"ElementaryTypeName","src":"1919:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3651,"initialValue":{"hexValue":"30","id":3650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1928:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1919:10:13"},"nodeType":"ForStatement","src":"1914:331:13"}]},"functionSelector":"32200882","id":3686,"implemented":true,"kind":"function","modifiers":[{"id":3641,"kind":"modifierInvocation","modifierName":{"id":3640,"name":"onlyOwner","nameLocations":["1847:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"1847:9:13"},"nodeType":"ModifierInvocation","src":"1847:9:13"}],"name":"setSupportedInstitutions","nameLocation":"1760:24:13","nodeType":"FunctionDefinition","parameters":{"id":3639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3634,"mutability":"mutable","name":"currency","nameLocation":"1793:8:13","nodeType":"VariableDeclaration","scope":3686,"src":"1785:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3633,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1785:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3638,"mutability":"mutable","name":"institutions","nameLocation":"1824:12:13","nodeType":"VariableDeclaration","scope":3686,"src":"1803:33:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3636,"nodeType":"UserDefinedTypeName","pathNode":{"id":3635,"name":"Institution","nameLocations":["1803:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":3526,"src":"1803:11:13"},"referencedDeclaration":3526,"src":"1803:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3526_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3637,"nodeType":"ArrayTypeName","src":"1803:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3526_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"src":"1784:53:13"},"returnParameters":{"id":3642,"nodeType":"ParameterList","parameters":[],"src":"1857:0:13"},"scope":3755,"src":"1751:500:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3701,"nodeType":"Block","src":"2332:105:13","statements":[{"expression":{"id":3695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3693,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3535,"src":"2342:18:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3694,"name":"_protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"2363:19:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2342:40:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3696,"nodeType":"ExpressionStatement","src":"2342:40:13"},{"eventCall":{"arguments":[{"id":3698,"name":"_protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"2410:19:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3697,"name":"PaycrestFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"2397:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":3699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2397:33:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3700,"nodeType":"EmitStatement","src":"2392:38:13"}]},"functionSelector":"84630736","id":3702,"implemented":true,"kind":"function","modifiers":[{"id":3691,"kind":"modifierInvocation","modifierName":{"id":3690,"name":"onlyOwner","nameLocations":["2322:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2322:9:13"},"nodeType":"ModifierInvocation","src":"2322:9:13"}],"name":"updateProtocolFees","nameLocation":"2266:18:13","nodeType":"FunctionDefinition","parameters":{"id":3689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3688,"mutability":"mutable","name":"_protocolFeePercent","nameLocation":"2292:19:13","nodeType":"VariableDeclaration","scope":3702,"src":"2285:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3687,"name":"uint64","nodeType":"ElementaryTypeName","src":"2285:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2284:28:13"},"returnParameters":{"id":3692,"nodeType":"ParameterList","parameters":[],"src":"2332:0:13"},"scope":3755,"src":"2257:180:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3737,"nodeType":"Block","src":"2524:182:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3712,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"2542:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2559:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2551:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3713,"name":"address","nodeType":"ElementaryTypeName","src":"2551:7:13","typeDescriptions":{}}},"id":3716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2551:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2542:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50617963726573743a207a65726f2061646472657373","id":3718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2563:24:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""},"value":"Paycrest: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""}],"id":3711,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2534:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2534:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3720,"nodeType":"ExpressionStatement","src":"2534:54:13"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3721,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"2602:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"666565","id":3722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2610:5:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_833b9f6abf0b529613680afe2a00fa663cc95cbdc47d726d85a044462eabbf02","typeString":"literal_string \"fee\""},"value":"fee"},"src":"2602:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3728,"nodeType":"IfStatement","src":"2598:39:13","trueBody":{"expression":{"id":3726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3724,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"2617:12:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3725,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"2632:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2617:20:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3727,"nodeType":"ExpressionStatement","src":"2617:20:13"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3729,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"2651:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"61676772656761746f72","id":3730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2659:12:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_e124d7cc79a19705865fa21b784ba187cd393559e960c0c071132cb60354d1a3","typeString":"literal_string \"aggregator\""},"value":"aggregator"},"src":"2651:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3736,"nodeType":"IfStatement","src":"2647:52:13","trueBody":{"expression":{"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3732,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3539,"src":"2673:18:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3733,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"2694:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2673:26:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3735,"nodeType":"ExpressionStatement","src":"2673:26:13"}}]},"functionSelector":"79a0effb","id":3738,"implemented":true,"kind":"function","modifiers":[{"id":3709,"kind":"modifierInvocation","modifierName":{"id":3708,"name":"onlyOwner","nameLocations":["2514:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2514:9:13"},"nodeType":"ModifierInvocation","src":"2514:9:13"}],"name":"updateProtocolAddresses","nameLocation":"2452:23:13","nodeType":"FunctionDefinition","parameters":{"id":3707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3704,"mutability":"mutable","name":"what","nameLocation":"2484:4:13","nodeType":"VariableDeclaration","scope":3738,"src":"2476:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2476:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3706,"mutability":"mutable","name":"value","nameLocation":"2498:5:13","nodeType":"VariableDeclaration","scope":3738,"src":"2490:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3705,"name":"address","nodeType":"ElementaryTypeName","src":"2490:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2475:29:13"},"returnParameters":{"id":3710,"nodeType":"ParameterList","parameters":[],"src":"2524:0:13"},"scope":3755,"src":"2443:263:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3753,"nodeType":"Block","src":"2792:81:13","statements":[{"expression":{"id":3747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3745,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"2802:11:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3746,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3740,"src":"2816:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"2802:24:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":3748,"nodeType":"ExpressionStatement","src":"2802:24:13"},{"eventCall":{"arguments":[{"id":3750,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3740,"src":"2855:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3749,"name":"SetAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3580,"src":"2841:13:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":3751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2841:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3752,"nodeType":"EmitStatement","src":"2836:30:13"}]},"functionSelector":"cb79455b","id":3754,"implemented":true,"kind":"function","modifiers":[{"id":3743,"kind":"modifierInvocation","modifierName":{"id":3742,"name":"onlyOwner","nameLocations":["2782:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2782:9:13"},"nodeType":"ModifierInvocation","src":"2782:9:13"}],"name":"updateProtocolAggregator","nameLocation":"2721:24:13","nodeType":"FunctionDefinition","parameters":{"id":3741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3740,"mutability":"mutable","name":"aggregator","nameLocation":"2761:10:13","nodeType":"VariableDeclaration","scope":3754,"src":"2746:25:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3739,"name":"bytes","nodeType":"ElementaryTypeName","src":"2746:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2745:27:13"},"returnParameters":{"id":3744,"nodeType":"ParameterList","parameters":[],"src":"2792:0:13"},"scope":3755,"src":"2712:161:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3756,"src":"139:2737:13","usedErrors":[]}],"src":"38:2839:13"},"id":13},"contracts/interface/IPaycrest.sol":{"ast":{"absolutePath":"contracts/interface/IPaycrest.sol","exportedSymbols":{"IERC20":[2806],"IPaycrest":[3941]},"id":3942,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3757,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:14"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3759,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3942,"sourceUnit":2807,"src":"63:70:14","symbolAliases":[{"foreign":{"id":3758,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"71:6:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPaycrest","contractDependencies":[],"contractKind":"interface","documentation":{"id":3760,"nodeType":"StructuredDocumentation","src":"134:130:14","text":" @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\n Factory and global config params"},"fullyImplemented":false,"id":3941,"linearizedBaseContracts":[3941],"name":"IPaycrest","nameLocation":"275:9:14","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3761,"nodeType":"StructuredDocumentation","src":"483:38:14","text":"@dev Emitted when deposit is made."},"eventSelector":"2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b","id":3777,"name":"Deposit","nameLocation":"532:7:14","nodeType":"EventDefinition","parameters":{"id":3776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3763,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"556:5:14","nodeType":"VariableDeclaration","scope":3777,"src":"540:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3762,"name":"address","nodeType":"ElementaryTypeName","src":"540:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3765,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"579:6:14","nodeType":"VariableDeclaration","scope":3777,"src":"563:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3764,"name":"uint256","nodeType":"ElementaryTypeName","src":"563:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3767,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"603:7:14","nodeType":"VariableDeclaration","scope":3777,"src":"587:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3766,"name":"bytes32","nodeType":"ElementaryTypeName","src":"587:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3769,"indexed":false,"mutability":"mutable","name":"rate","nameLocation":"620:4:14","nodeType":"VariableDeclaration","scope":3777,"src":"612:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3768,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3771,"indexed":false,"mutability":"mutable","name":"institutionCode","nameLocation":"634:15:14","nodeType":"VariableDeclaration","scope":3777,"src":"626:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3770,"name":"bytes32","nodeType":"ElementaryTypeName","src":"626:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3773,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"659:5:14","nodeType":"VariableDeclaration","scope":3777,"src":"651:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3772,"name":"bytes32","nodeType":"ElementaryTypeName","src":"651:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3775,"indexed":false,"mutability":"mutable","name":"messageHash","nameLocation":"673:11:14","nodeType":"VariableDeclaration","scope":3777,"src":"666:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3774,"name":"string","nodeType":"ElementaryTypeName","src":"666:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:146:14"},"src":"526:160:14"},{"anonymous":false,"documentation":{"id":3778,"nodeType":"StructuredDocumentation","src":"691:52:14","text":"@dev Emitted when aggregator settle transaction."},"eventSelector":"f26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c05326","id":3790,"name":"Settled","nameLocation":"754:7:14","nodeType":"EventDefinition","parameters":{"id":3789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3780,"indexed":false,"mutability":"mutable","name":"_splitOrderId","nameLocation":"770:13:14","nodeType":"VariableDeclaration","scope":3790,"src":"762:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3779,"name":"bytes32","nodeType":"ElementaryTypeName","src":"762:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3782,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"801:7:14","nodeType":"VariableDeclaration","scope":3790,"src":"785:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3781,"name":"bytes32","nodeType":"ElementaryTypeName","src":"785:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3784,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"818:5:14","nodeType":"VariableDeclaration","scope":3790,"src":"810:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3783,"name":"bytes32","nodeType":"ElementaryTypeName","src":"810:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3786,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nameLocation":"841:17:14","nodeType":"VariableDeclaration","scope":3790,"src":"825:33:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3785,"name":"address","nodeType":"ElementaryTypeName","src":"825:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3788,"indexed":false,"mutability":"mutable","name":"settlePercent","nameLocation":"867:13:14","nodeType":"VariableDeclaration","scope":3790,"src":"860:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3787,"name":"uint96","nodeType":"ElementaryTypeName","src":"860:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"761:120:14"},"src":"748:134:14"},{"anonymous":false,"documentation":{"id":3791,"nodeType":"StructuredDocumentation","src":"887:52:14","text":"@dev Emitted when aggregator refund transaction."},"eventSelector":"007c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f","id":3797,"name":"Refunded","nameLocation":"950:8:14","nodeType":"EventDefinition","parameters":{"id":3796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3793,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"975:7:14","nodeType":"VariableDeclaration","scope":3797,"src":"959:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3792,"name":"bytes32","nodeType":"ElementaryTypeName","src":"959:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3795,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"992:5:14","nodeType":"VariableDeclaration","scope":3797,"src":"984:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3794,"name":"bytes32","nodeType":"ElementaryTypeName","src":"984:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"958:40:14"},"src":"944:55:14"},{"anonymous":false,"documentation":{"id":3798,"nodeType":"StructuredDocumentation","src":"1004:48:14","text":"@dev Emitted when sender get therir rewards."},"eventSelector":"96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c2","id":3804,"name":"TransferSenderFee","nameLocation":"1063:17:14","nodeType":"EventDefinition","parameters":{"id":3803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3800,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1097:6:14","nodeType":"VariableDeclaration","scope":3804,"src":"1081:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3799,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3802,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1121:6:14","nodeType":"VariableDeclaration","scope":3804,"src":"1105:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3801,"name":"uint256","nodeType":"ElementaryTypeName","src":"1105:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1080:48:14"},"src":"1057:72:14"},{"anonymous":false,"documentation":{"id":3805,"nodeType":"StructuredDocumentation","src":"1134:59:14","text":"@dev Emitted when primary validator get therir rewards."},"eventSelector":"61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c2","id":3811,"name":"RewardValidator","nameLocation":"1204:15:14","nodeType":"EventDefinition","parameters":{"id":3810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3807,"indexed":true,"mutability":"mutable","name":"validator","nameLocation":"1236:9:14","nodeType":"VariableDeclaration","scope":3811,"src":"1220:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3806,"name":"address","nodeType":"ElementaryTypeName","src":"1220:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3809,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1263:6:14","nodeType":"VariableDeclaration","scope":3811,"src":"1247:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3808,"name":"uint256","nodeType":"ElementaryTypeName","src":"1247:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:51:14"},"src":"1198:73:14"},{"canonicalName":"IPaycrest.TransactionMetadata","id":3822,"members":[{"constant":false,"id":3813,"mutability":"mutable","name":"identifier","nameLocation":"1509:10:14","nodeType":"VariableDeclaration","scope":3822,"src":"1502:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3812,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1502:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3815,"mutability":"mutable","name":"institution","nameLocation":"1628:11:14","nodeType":"VariableDeclaration","scope":3822,"src":"1621:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3814,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1621:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3817,"mutability":"mutable","name":"name","nameLocation":"1747:4:14","nodeType":"VariableDeclaration","scope":3822,"src":"1740:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3816,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1740:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3819,"mutability":"mutable","name":"currency","nameLocation":"1866:8:14","nodeType":"VariableDeclaration","scope":3822,"src":"1859:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3818,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1859:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3821,"mutability":"mutable","name":"liquidityProviderID","nameLocation":"1986:19:14","nodeType":"VariableDeclaration","scope":3822,"src":"1978:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3820,"name":"uint256","nodeType":"ElementaryTypeName","src":"1978:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"TransactionMetadata","nameLocation":"1472:19:14","nodeType":"StructDefinition","scope":3941,"src":"1465:629:14","visibility":"public"},{"canonicalName":"IPaycrest.Order","id":3841,"members":[{"constant":false,"id":3824,"mutability":"mutable","name":"seller","nameLocation":"2131:6:14","nodeType":"VariableDeclaration","scope":3841,"src":"2123:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3823,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3826,"mutability":"mutable","name":"token","nameLocation":"2251:5:14","nodeType":"VariableDeclaration","scope":3841,"src":"2243:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3825,"name":"address","nodeType":"ElementaryTypeName","src":"2243:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3828,"mutability":"mutable","name":"senderFeeRecipient","nameLocation":"2371:18:14","nodeType":"VariableDeclaration","scope":3841,"src":"2363:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3827,"name":"address","nodeType":"ElementaryTypeName","src":"2363:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3830,"mutability":"mutable","name":"senderFee","nameLocation":"2407:9:14","nodeType":"VariableDeclaration","scope":3841,"src":"2399:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3829,"name":"uint256","nodeType":"ElementaryTypeName","src":"2399:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3832,"mutability":"mutable","name":"rate","nameLocation":"2433:4:14","nodeType":"VariableDeclaration","scope":3841,"src":"2426:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3831,"name":"uint96","nodeType":"ElementaryTypeName","src":"2426:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3834,"mutability":"mutable","name":"isFulfilled","nameLocation":"2551:11:14","nodeType":"VariableDeclaration","scope":3841,"src":"2546:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3833,"name":"bool","nodeType":"ElementaryTypeName","src":"2546:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3836,"mutability":"mutable","name":"refundAddress","nameLocation":"2695:13:14","nodeType":"VariableDeclaration","scope":3841,"src":"2687:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3835,"name":"address","nodeType":"ElementaryTypeName","src":"2687:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3838,"mutability":"mutable","name":"currentBPS","nameLocation":"2835:10:14","nodeType":"VariableDeclaration","scope":3841,"src":"2828:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3837,"name":"uint96","nodeType":"ElementaryTypeName","src":"2828:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3840,"mutability":"mutable","name":"amount","nameLocation":"2959:6:14","nodeType":"VariableDeclaration","scope":3841,"src":"2951:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3839,"name":"uint256","nodeType":"ElementaryTypeName","src":"2951:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Order","nameLocation":"2107:5:14","nodeType":"StructDefinition","scope":3941,"src":"2100:968:14","visibility":"public"},{"documentation":{"id":3842,"nodeType":"StructuredDocumentation","src":"3270:1232:14","text":"@notice lock sender `_amount` of `token` into Paycrest.\n Requirements:\n `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\n `_token` must be an acceptable token. @dev See {isTokenSupported}.\n `amount` must be greater than minimum\n `_refundable` refundable address must not be zero address\n @param _token address of the token.\n @param _amount amount in the decimal of `_token` above.\n @param _institutionCode institution code of the sender.\n @param _label reference of the sender.\n @param _rate rate at which sender intended to sell `_amount` of `_token`.\n @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\n @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\n @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\n @param messageHash hash must be the result of a hash operation for the verification to be secure. message\n @return _orderId the bytes20 which is the orderId"},"functionSelector":"2654ec7e","id":3865,"implemented":false,"kind":"function","modifiers":[],"name":"createOrder","nameLocation":"4516:11:14","nodeType":"FunctionDefinition","parameters":{"id":3861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3844,"mutability":"mutable","name":"_token","nameLocation":"4545:6:14","nodeType":"VariableDeclaration","scope":3865,"src":"4537:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3843,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3846,"mutability":"mutable","name":"_amount","nameLocation":"4570:7:14","nodeType":"VariableDeclaration","scope":3865,"src":"4562:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3845,"name":"uint256","nodeType":"ElementaryTypeName","src":"4562:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3848,"mutability":"mutable","name":"_institutionCode","nameLocation":"4596:16:14","nodeType":"VariableDeclaration","scope":3865,"src":"4588:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4588:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3850,"mutability":"mutable","name":"_label","nameLocation":"4630:6:14","nodeType":"VariableDeclaration","scope":3865,"src":"4622:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3849,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4622:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3852,"mutability":"mutable","name":"_rate","nameLocation":"4653:5:14","nodeType":"VariableDeclaration","scope":3865,"src":"4646:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3851,"name":"uint96","nodeType":"ElementaryTypeName","src":"4646:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3854,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"4677:19:14","nodeType":"VariableDeclaration","scope":3865,"src":"4669:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3853,"name":"address","nodeType":"ElementaryTypeName","src":"4669:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3856,"mutability":"mutable","name":"_senderFee","nameLocation":"4714:10:14","nodeType":"VariableDeclaration","scope":3865,"src":"4706:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3855,"name":"uint256","nodeType":"ElementaryTypeName","src":"4706:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3858,"mutability":"mutable","name":"_refundAddress","nameLocation":"4742:14:14","nodeType":"VariableDeclaration","scope":3865,"src":"4734:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3857,"name":"address","nodeType":"ElementaryTypeName","src":"4734:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3860,"mutability":"mutable","name":"messageHash","nameLocation":"4783:11:14","nodeType":"VariableDeclaration","scope":3865,"src":"4767:27:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":3859,"name":"string","nodeType":"ElementaryTypeName","src":"4767:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4527:268:14"},"returnParameters":{"id":3864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3863,"mutability":"mutable","name":"_orderId","nameLocation":"4822:8:14","nodeType":"VariableDeclaration","scope":3865,"src":"4814:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3862,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4814:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4813:18:14"},"scope":3941,"src":"4507:325:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3866,"nodeType":"StructuredDocumentation","src":"4838:832:14","text":"@notice settle transaction and distribute rewards accordingly.\n Requirements:\n {only aggregators call}.\n `_orderId` it must be less than total ids.\n `_orderId` it must be an open Id.\n `_primaryValidator` must have stake on the Paycrest staking platform.\n `_secondaryValidators` must have stake on the Paycrest staking platform.\n `amount` must be greater than minimum\n `_refundable` refundable address must not be zero address\n @param _orderId transaction Id.\n @param _label reference of the sender.\n @param _liquidityProvider address of the liquidity provider.\n @param _settlePercent rate at which the transaction is settled.\n @param _isPartner is the liquidity provider a partner.\n @return return the status of transaction {bool}"},"functionSelector":"5fe44cac","id":3885,"implemented":false,"kind":"function","modifiers":[],"name":"settle","nameLocation":"5684:6:14","nodeType":"FunctionDefinition","parameters":{"id":3879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3868,"mutability":"mutable","name":"_splitOrderId","nameLocation":"5699:13:14","nodeType":"VariableDeclaration","scope":3885,"src":"5691:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3867,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5691:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3870,"mutability":"mutable","name":"_orderId","nameLocation":"5722:8:14","nodeType":"VariableDeclaration","scope":3885,"src":"5714:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5714:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3872,"mutability":"mutable","name":"_label","nameLocation":"5740:6:14","nodeType":"VariableDeclaration","scope":3885,"src":"5732:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3871,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5732:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3874,"mutability":"mutable","name":"_liquidityProvider","nameLocation":"5756:18:14","nodeType":"VariableDeclaration","scope":3885,"src":"5748:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3873,"name":"address","nodeType":"ElementaryTypeName","src":"5748:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3876,"mutability":"mutable","name":"_settlePercent","nameLocation":"5783:14:14","nodeType":"VariableDeclaration","scope":3885,"src":"5776:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3875,"name":"uint64","nodeType":"ElementaryTypeName","src":"5776:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3878,"mutability":"mutable","name":"_isPartner","nameLocation":"5804:10:14","nodeType":"VariableDeclaration","scope":3885,"src":"5799:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3877,"name":"bool","nodeType":"ElementaryTypeName","src":"5799:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5690:125:14"},"returnParameters":{"id":3884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3881,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3885,"src":"5834:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3880,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5834:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3885,"src":"5843:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3882,"name":"address","nodeType":"ElementaryTypeName","src":"5843:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5833:18:14"},"scope":3941,"src":"5675:177:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3886,"nodeType":"StructuredDocumentation","src":"5858:383:14","text":"@notice refund to the specified refundable address.\n Requirements:\n {only aggregators call}.\n `_orderId` it must be less than total ids.\n `_orderId` it must be an open Id.\n `isFulfilled` must be false.\n @param _orderId transaction Id.\n @param _label reference of the sender.\n @return return the status of transaction {bool}"},"functionSelector":"e4683a79","id":3895,"implemented":false,"kind":"function","modifiers":[],"name":"refund","nameLocation":"6255:6:14","nodeType":"FunctionDefinition","parameters":{"id":3891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3888,"mutability":"mutable","name":"_orderId","nameLocation":"6270:8:14","nodeType":"VariableDeclaration","scope":3895,"src":"6262:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6262:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3890,"mutability":"mutable","name":"_label","nameLocation":"6288:6:14","nodeType":"VariableDeclaration","scope":3895,"src":"6280:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3889,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6280:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6261:34:14"},"returnParameters":{"id":3894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3893,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3895,"src":"6314:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3892,"name":"bool","nodeType":"ElementaryTypeName","src":"6314:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6313:6:14"},"scope":3941,"src":"6246:74:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3896,"nodeType":"StructuredDocumentation","src":"6326:152:14","text":"@notice get supported token from Paycrest.\n @param _token address of the token to check.\n @return return the status of `_token` {bool}"},"functionSelector":"75151b63","id":3903,"implemented":false,"kind":"function","modifiers":[],"name":"isTokenSupported","nameLocation":"6492:16:14","nodeType":"FunctionDefinition","parameters":{"id":3899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3898,"mutability":"mutable","name":"_token","nameLocation":"6517:6:14","nodeType":"VariableDeclaration","scope":3903,"src":"6509:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3897,"name":"address","nodeType":"ElementaryTypeName","src":"6509:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6508:16:14"},"returnParameters":{"id":3902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3903,"src":"6547:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3900,"name":"bool","nodeType":"ElementaryTypeName","src":"6547:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6546:6:14"},"scope":3941,"src":"6483:70:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3904,"nodeType":"StructuredDocumentation","src":"6559:70:14","text":"@notice get order details.\n @param _orderId transaction Id."},"functionSelector":"768c6ec0","id":3912,"implemented":false,"kind":"function","modifiers":[],"name":"getOrderInfo","nameLocation":"6643:12:14","nodeType":"FunctionDefinition","parameters":{"id":3907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3906,"mutability":"mutable","name":"_orderId","nameLocation":"6664:8:14","nodeType":"VariableDeclaration","scope":3912,"src":"6656:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3905,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6656:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6655:18:14"},"returnParameters":{"id":3911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3912,"src":"6696:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_memory_ptr","typeString":"struct IPaycrest.Order"},"typeName":{"id":3909,"nodeType":"UserDefinedTypeName","pathNode":{"id":3908,"name":"Order","nameLocations":["6696:5:14"],"nodeType":"IdentifierPath","referencedDeclaration":3841,"src":"6696:5:14"},"referencedDeclaration":3841,"src":"6696:5:14","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3841_storage_ptr","typeString":"struct IPaycrest.Order"}},"visibility":"internal"}],"src":"6695:14:14"},"scope":3941,"src":"6634:76:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3913,"nodeType":"StructuredDocumentation","src":"6716:204:14","text":"@notice get every rewards and address on Paycrest.\n @return protocolReward amount that will be taken in percentage on all trade.\n @return max_bps maximum amount in bps \"100% == 100_000\"."},"functionSelector":"b810c636","id":3920,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"6934:13:14","nodeType":"FunctionDefinition","parameters":{"id":3914,"nodeType":"ParameterList","parameters":[],"src":"6947:2:14"},"returnParameters":{"id":3919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3916,"mutability":"mutable","name":"protocolReward","nameLocation":"6988:14:14","nodeType":"VariableDeclaration","scope":3920,"src":"6981:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3915,"name":"uint64","nodeType":"ElementaryTypeName","src":"6981:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3918,"mutability":"mutable","name":"max_bps","nameLocation":"7021:7:14","nodeType":"VariableDeclaration","scope":3920,"src":"7013:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3917,"name":"uint256","nodeType":"ElementaryTypeName","src":"7013:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6971:63:14"},"scope":3941,"src":"6925:110:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3921,"nodeType":"StructuredDocumentation","src":"7041:89:14","text":"@notice get address of liquidity aggregator.\n @return address of `Aggregator`."},"functionSelector":"e8d6e0de","id":3926,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregatorAddress","nameLocation":"7144:20:14","nodeType":"FunctionDefinition","parameters":{"id":3922,"nodeType":"ParameterList","parameters":[],"src":"7164:2:14"},"returnParameters":{"id":3925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3926,"src":"7189:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3923,"name":"address","nodeType":"ElementaryTypeName","src":"7189:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7188:9:14"},"scope":3941,"src":"7135:63:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3927,"nodeType":"StructuredDocumentation","src":"7204:77:14","text":"@notice get aggregator public key.\n @return aggregator public key."},"functionSelector":"3ad59dbc","id":3932,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregator","nameLocation":"7295:13:14","nodeType":"FunctionDefinition","parameters":{"id":3928,"nodeType":"ParameterList","parameters":[],"src":"7308:2:14"},"returnParameters":{"id":3931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3932,"src":"7333:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3929,"name":"bytes","nodeType":"ElementaryTypeName","src":"7333:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7332:14:14"},"scope":3941,"src":"7286:61:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3933,"nodeType":"StructuredDocumentation","src":"7357:136:14","text":"@notice get address of sender whitelisting status.\n @param sender address of the sender.\n @return address of `status`."},"functionSelector":"d8e8de34","id":3940,"implemented":false,"kind":"function","modifiers":[],"name":"getWhitelistedStatus","nameLocation":"7507:20:14","nodeType":"FunctionDefinition","parameters":{"id":3936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3935,"mutability":"mutable","name":"sender","nameLocation":"7536:6:14","nodeType":"VariableDeclaration","scope":3940,"src":"7528:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3934,"name":"address","nodeType":"ElementaryTypeName","src":"7528:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7527:16:14"},"returnParameters":{"id":3939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3938,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3940,"src":"7566:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3937,"name":"bool","nodeType":"ElementaryTypeName","src":"7566:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7565:6:14"},"scope":3941,"src":"7498:74:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3942,"src":"265:7310:14","usedErrors":[]}],"src":"38:7538:14"},"id":14}},"contracts":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"OwnableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() { _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"IERC20Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":\"IERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"IERC20PermitUpgradeable":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.","kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":\"IERC20PermitUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"SafeERC20Upgradeable":{"abi":[],"devdoc":{"details":"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","kind":"dev","methods":{},"title":"SafeERC20","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220127eb4d243173cf9ac6ea39f737ccd926bf8210c3a138b2e7d70f40b43f8204564736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH31 0xB4D243173CF9AC6EA39F737CCD926BF8210C3A138B2E7D70F40B43F8204564 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"734:6366:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220127eb4d243173cf9ac6ea39f737ccd926bf8210c3a138b2e7d70f40b43f8204564736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH31 0xB4D243173CF9AC6EA39F737CCD926BF8210C3A138B2E7D70F40B43F8204564 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"734:6366:4:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_callOptionalReturn(contract IERC20Upgradeable,bytes memory)":"infinite","_callOptionalReturnBool(contract IERC20Upgradeable,bytes memory)":"infinite","forceApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeDecreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safeIncreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safePermit(contract IERC20PermitUpgradeable,address,address,uint256,uint256,uint8,bytes32,bytes32)":"infinite","safeTransfer(contract IERC20Upgradeable,address,uint256)":"infinite","safeTransferFrom(contract IERC20Upgradeable,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":\"SafeERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n /**\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n /**\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n */\\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n /**\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n }\\n\\n /**\\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n }\\n }\\n\\n /**\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\n */\\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n _callOptionalReturn(token, approvalCall);\\n }\\n }\\n\\n /**\\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n * Revert on invalid signature.\\n */\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n *\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n */\\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n // and not revert is the subcall reverts.\\n\\n (bool success, bytes memory returndata) = address(token).call(data);\\n return\\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220df70283ff728a1a88debad8b56cd6b31b858a143aff601e8f42a16699317e70d64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF PUSH17 0x283FF728A1A88DEBAD8B56CD6B31B858A1 NUMBER 0xAF 0xF6 ADD 0xE8 DELEGATECALL 0x2A AND PUSH10 0x9317E70D64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:9180:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220df70283ff728a1a88debad8b56cd6b31b858a143aff601e8f42a16699317e70d64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF PUSH17 0x283FF728A1A88DEBAD8B56CD6B31B858A1 NUMBER 0xAF 0xF6 ADD 0xE8 DELEGATECALL 0x2A AND PUSH10 0x9317E70D64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:9180:5:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"StringsUpgradeable":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3fb710f8a96e0067535a9f765fa3f89f59b6e06ba7186e35593d35f029926fa64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xFB PUSH18 0xF8A96E0067535A9F765FA3F89F59B6E06BA PUSH18 0x86E35593D35F029926FA64736F6C63430008 SLT STOP CALLER ","sourceMap":"242:2603:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3fb710f8a96e0067535a9f765fa3f89f59b6e06ba7186e35593d35f029926fa64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xFB PUSH18 0xF8A96E0067535A9F765FA3F89F59B6E06BA PUSH18 0x86E35593D35F029926FA64736F6C63430008 SLT STOP CALLER ","sourceMap":"242:2603:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":\"StringsUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ECDSAUpgradeable":{"abi":[],"devdoc":{"details":"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220717bce4509ab3c6d09fb52c5b26660a25a99945b32e0484c654da9bebac1986064736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x7BCE4509AB3C6D09FB52C5B26660A25A9994 JUMPDEST ORIGIN 0xE0 BASEFEE 0x4C PUSH6 0x4DA9BEBAC198 PUSH1 0x64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"380:8783:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220717bce4509ab3c6d09fb52c5b26660a25a99945b32e0484c654da9bebac1986064736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x7BCE4509AB3C6D09FB52C5B26660A25A9994 JUMPDEST ORIGIN 0xE0 BASEFEE 0x4C PUSH6 0x4DA9BEBAC198 PUSH1 0x64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"380:8783:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_throwError(enum ECDSAUpgradeable.RecoverError)":"infinite","recover(bytes32,bytes memory)":"infinite","recover(bytes32,bytes32,bytes32)":"infinite","recover(bytes32,uint8,bytes32,bytes32)":"infinite","toDataWithIntendedValidatorHash(address,bytes memory)":"infinite","toEthSignedMessageHash(bytes memory)":"infinite","toEthSignedMessageHash(bytes32)":"infinite","toTypedDataHash(bytes32,bytes32)":"infinite","tryRecover(bytes32,bytes memory)":"infinite","tryRecover(bytes32,bytes32,bytes32)":"infinite","tryRecover(bytes32,uint8,bytes32,bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":\"ECDSAUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n mstore(0x1c, hash)\\n message := keccak256(0x00, 0x3c)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n mstore(add(ptr, 0x02), domainSeparator)\\n mstore(add(ptr, 0x22), structHash)\\n data := keccak256(ptr, 0x42)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n * `validator` and `data` according to the version 0 of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n }\\n}\\n\",\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"MathUpgradeable":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b19238f22d888be15246afd45704547bf692f3a8d19f34db13095fb48eddd5264736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x19238F22D888BE15246AFD45 PUSH17 0x4547BF692F3A8D19F34DB13095FB48EDDD MSTORE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12593:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b19238f22d888be15246afd45704547bf692f3a8d19f34db13095fb48eddd5264736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x19238F22D888BE15246AFD45 PUSH17 0x4547BF692F3A8D19F34DB13095FB48EDDD MSTORE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12593:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum MathUpgradeable.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum MathUpgradeable.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum MathUpgradeable.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum MathUpgradeable.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum MathUpgradeable.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":\"MathUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"SignedMathUpgradeable":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70ce3cff074bb9f2b399f4851e008094b94d7fe429bd3afbf9c6f170d3375ce64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC 0xE3 0xCF CREATE PUSH21 0xBB9F2B399F4851E008094B94D7FE429BD3AFBF9C6F OR 0xD CALLER PUSH22 0xCE64736F6C6343000812003300000000000000000000 ","sourceMap":"215:1058:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70ce3cff074bb9f2b399f4851e008094b94d7fe429bd3afbf9c6f170d3375ce64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC 0xE3 0xCF CREATE PUSH21 0xBB9F2B399F4851E008094B94D7FE429BD3AFBF9C6F OR 0xD CALLER PUSH22 0xCE64736F6C6343000812003300000000000000000000 ","sourceMap":"215:1058:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":\"SignedMathUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/Paycrest.sol":{"Paycrest":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"institutionCode","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"string","name":"messageHash","type":"string"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"protocolFee","type":"uint64"}],"name":"PaycrestFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardValidator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"SetAggregator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SettingManagerBool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"uint96","name":"settlePercent","type":"uint96"}],"name":"Settled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSenderFee","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_institutionCode","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"uint96","name":"_rate","type":"uint96"},{"internalType":"address","name":"_senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"_senderFee","type":"uint256"},{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"string","name":"messageHash","type":"string"}],"name":"createOrder","outputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAggregator","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"name":"getOrderInfo","outputs":[{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"senderFee","type":"uint256"},{"internalType":"uint96","name":"rate","type":"uint96"},{"internalType":"bool","name":"isFulfilled","type":"bool"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint96","name":"currentBPS","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPaycrest.Order","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"code","type":"bytes32"}],"name":"getSupportedInstitutionName","outputs":[{"components":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"bytes32","name":"currency","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.InstitutionByCode","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"}],"name":"getSupportedInstitutions","outputs":[{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usdc","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"}],"name":"refund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"institutions","type":"tuple[]"}],"name":"setSupportedInstitutions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"settingManagerBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint64","name":"_settlePercent","type":"uint64"},{"internalType":"bool","name":"_isPartner","type":"bool"}],"name":"settle","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"updateProtocolAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"updateProtocolAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_protocolFeePercent","type":"uint64"}],"name":"updateProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)":{"details":"Emitted when deposit is made."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Refunded(bytes32,bytes32)":{"details":"Emitted when aggregator refund transaction."},"RewardValidator(address,uint256)":{"details":"Emitted when primary validator get therir rewards."},"Settled(bytes32,bytes32,bytes32,address,uint96)":{"details":"Emitted when aggregator settle transaction."},"TransferSenderFee(address,uint256)":{"details":"Emitted when sender get therir rewards."}},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"details":"See {createOrder-IPaycrest}. "},"getAggregator()":{"details":"See {getAggregator-IPaycrest}. "},"getAggregatorAddress()":{"details":"See {getAggregatorAddress-IPaycrest}. "},"getFeeDetails()":{"details":"See {getFeeDetails-IPaycrest}. "},"getOrderInfo(bytes32)":{"details":"See {getOrderInfo-IPaycrest}. "},"getSupportedInstitutionName(bytes32)":{"details":"See {getSupportedInstitutionName-IPaycrest}. "},"getWhitelistedStatus(address)":{"details":"See {getWhitelistedStatus-IPaycrest}. "},"isTokenSupported(address)":{"details":"See {isTokenSupported-IPaycrest}. "},"owner()":{"details":"Returns the address of the current owner."},"refund(bytes32,bytes32)":{"details":"See {refund-IPaycrest}. "},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"settle(bytes32,bytes32,bytes32,address,uint64,bool)":{"details":"See {settle-IPaycrest}. "},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2852":{"entryPoint":null,"id":2852,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_281":{"entryPoint":40,"id":281,"parameterSlots":0,"returnSlots":0},"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack":{"entryPoint":334,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":420,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":373,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":437,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":238,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":407,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a":{"entryPoint":255,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1638:15","statements":[{"body":{"nodeType":"YulBlock","src":"103:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"120:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"125:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"113:6:15"},"nodeType":"YulFunctionCall","src":"113:19:15"},"nodeType":"YulExpressionStatement","src":"113:19:15"},{"nodeType":"YulAssignment","src":"141:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"160:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"165:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"156:3:15"},"nodeType":"YulFunctionCall","src":"156:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"141:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"75:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"80:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"91:11:15","type":""}],"src":"7:169:15"},{"body":{"nodeType":"YulBlock","src":"288:120:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"310:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"318:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"306:3:15"},"nodeType":"YulFunctionCall","src":"306:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"322:34:15","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"299:6:15"},"nodeType":"YulFunctionCall","src":"299:58:15"},"nodeType":"YulExpressionStatement","src":"299:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"378:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"386:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"374:3:15"},"nodeType":"YulFunctionCall","src":"374:15:15"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"391:9:15","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"367:6:15"},"nodeType":"YulFunctionCall","src":"367:34:15"},"nodeType":"YulExpressionStatement","src":"367:34:15"}]},"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"280:6:15","type":""}],"src":"182:226:15"},{"body":{"nodeType":"YulBlock","src":"560:220:15","statements":[{"nodeType":"YulAssignment","src":"570:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"636:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"641:2:15","type":"","value":"39"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"577:58:15"},"nodeType":"YulFunctionCall","src":"577:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"570:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"742:3:15"}],"functionName":{"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nodeType":"YulIdentifier","src":"653:88:15"},"nodeType":"YulFunctionCall","src":"653:93:15"},"nodeType":"YulExpressionStatement","src":"653:93:15"},{"nodeType":"YulAssignment","src":"755:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"766:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"771:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"762:3:15"},"nodeType":"YulFunctionCall","src":"762:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"755:3:15"}]}]},"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"548:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"556:3:15","type":""}],"src":"414:366:15"},{"body":{"nodeType":"YulBlock","src":"957:248:15","statements":[{"nodeType":"YulAssignment","src":"967:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"979:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"990:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"975:3:15"},"nodeType":"YulFunctionCall","src":"975:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"967:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1014:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1025:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1010:3:15"},"nodeType":"YulFunctionCall","src":"1010:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1033:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"1039:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1029:3:15"},"nodeType":"YulFunctionCall","src":"1029:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1003:6:15"},"nodeType":"YulFunctionCall","src":"1003:47:15"},"nodeType":"YulExpressionStatement","src":"1003:47:15"},{"nodeType":"YulAssignment","src":"1059:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1193:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1067:124:15"},"nodeType":"YulFunctionCall","src":"1067:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1059:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"937:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"952:4:15","type":""}],"src":"786:419:15"},{"body":{"nodeType":"YulBlock","src":"1254:43:15","statements":[{"nodeType":"YulAssignment","src":"1264:27:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1279:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"1286:4:15","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1275:3:15"},"nodeType":"YulFunctionCall","src":"1275:16:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1264:7:15"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1236:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1246:7:15","type":""}],"src":"1211:86:15"},{"body":{"nodeType":"YulBlock","src":"1364:51:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1381:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1402:5:15"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"1386:15:15"},"nodeType":"YulFunctionCall","src":"1386:22:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1374:6:15"},"nodeType":"YulFunctionCall","src":"1374:35:15"},"nodeType":"YulExpressionStatement","src":"1374:35:15"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1352:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1359:3:15","type":""}],"src":"1303:112:15"},{"body":{"nodeType":"YulBlock","src":"1515:120:15","statements":[{"nodeType":"YulAssignment","src":"1525:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1537:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1548:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1533:3:15"},"nodeType":"YulFunctionCall","src":"1533:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1525:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1601:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1614:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1625:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1610:3:15"},"nodeType":"YulFunctionCall","src":"1610:17:15"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"1561:39:15"},"nodeType":"YulFunctionCall","src":"1561:67:15"},"nodeType":"YulExpressionStatement","src":"1561:67:15"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1487:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1499:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1510:4:15","type":""}],"src":"1421:214:15"}]},"contents":"{\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is initi\")\n\n mstore(add(memPtr, 32), \"alizing\")\n\n }\n\n function abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 39)\n store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d2565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000175565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620000ec5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e39190620001b5565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015d602783620000ee565b91506200016a82620000ff565b604082019050919050565b6000602082019050818103600083015262000190816200014e565b9050919050565b600060ff82169050919050565b620001af8162000197565b82525050565b6000602082019050620001cc6000830184620001a4565b92915050565b613d9e80620001e26000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806387490d86116100b8578063cb79455b1161007c578063cb79455b1461034e578063d8e8de341461036a578063d9caed121461039a578063e4683a79146103b6578063e8d6e0de146103e6578063f2fde38b1461040457610137565b806387490d86146102a95780638da5cb5b146102d957806399e3c0b4146102f7578063b810c63614610313578063c4d66de81461033257610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb14610271578063846307361461028d57610137565b8063026213381461013c5780632654ec7e1461016c578063322008821461019c5780633ad59dbc146101b85780635fe44cac146101d6575b600080fd5b610156600480360381019061015191906124bf565b610420565b60405161016391906125d9565b60405180910390f35b61018660048036038101906101819190612738565b61055e565b6040516101939190612832565b60405180910390f35b6101b660048036038101906101b191906129f1565b610a26565b005b6101c0610b3a565b6040516101cd9190612acc565b60405180910390f35b6101f060048036038101906101eb9190612b66565b610bcc565b6040516101fe929190612c02565b60405180910390f35b61020f610fc5565b005b61022b60048036038101906102269190612c2b565b610fd9565b6040516102389190612c67565b60405180910390f35b61025b600480360381019061025691906124bf565b61102f565b6040516102689190612d75565b60405180910390f35b61028b60048036038101906102869190612d91565b611260565b005b6102a760048036038101906102a29190612dd1565b6113ad565b005b6102c360048036038101906102be91906124bf565b611418565b6040516102d09190612e2d565b60405180910390f35b6102e1611459565b6040516102ee9190612e48565b60405180910390f35b610311600480360381019061030c9190612e63565b611483565b005b61031b611638565b604051610329929190612ed4565b60405180910390f35b61034c60048036038101906103479190612c2b565b61165d565b005b61036860048036038101906103639190612f53565b611829565b005b610384600480360381019061037f9190612c2b565b611880565b6040516103919190612c67565b60405180910390f35b6103b460048036038101906103af9190612fa0565b6118d6565b005b6103d060048036038101906103cb9190612ff3565b611962565b6040516103dd9190612c67565b60405180910390f35b6103ee611c0f565b6040516103fb9190612e48565b60405180910390f35b61041e60048036038101906104199190612c2b565b611c39565b005b60606000609d6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049d57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610457565b50505050905060008151905060008167ffffffffffffffff8111156104c5576104c461285e565b5b6040519080825280602002602001820160405280156104fe57816020015b6104eb612359565b8152602001906001900390816104e35790505b50905060005b828110156105525783818151811061051f5761051e613033565b5b602002602001015182828151811061053a57610539613033565b5b60200260200101819052508080600101915050610504565b50809350505050919050565b600061056d8b8b86898d611cbc565b606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168b61059c9190613091565b6105a69190613102565b8511156105e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105df90613190565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610625939291906131b0565b6020604051808303816000875af1158015610644573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066891906131fc565b5060a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906106b990613229565b91905055503360a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610710929190613271565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b815250609f600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610a10959493929190613311565b60405180910390a49a9950505050505050505050565b610a2e611ecb565b60008151905060005b81811015610b3457609d6000858152602001908152602001600020838281518110610a6557610a64613033565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610aca57610ac9613033565b5b602002602001015160200151815260200185815250609e6000858481518110610af657610af5613033565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610a37565b50505050565b606060688054610b499061338e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b759061338e565b8015610bc25780601f10610b9757610100808354040283529160200191610bc2565b820191906000526020600020905b815481529060010190602001808311610ba557829003601f168201915b5050505050905090565b600080606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c569061340b565b60405180910390fd5b609f6000888152602001908152602001600020600401600c9054906101000a900460ff1615610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90613477565b60405180910390fd5b6000609f600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff16609f60008a815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff16610d459190613497565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506000610d8a898767ffffffffffffffff1687611f49565b90506000609f60008b815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1603610e29576001609f60008b8152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f60008b8152602001908152602001600020600301541115610e2857610e278961205a565b5b5b600081600001511115610edc578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606660089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b8152600401610e97929190613271565b6020604051808303816000875af1158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda91906131fc565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b8152600401610f1b929190613271565b6020604051808303816000875af1158015610f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5e91906131fc565b508673ffffffffffffffffffffffffffffffffffffffff16897ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268c8b8a604051610faa93929190613508565b60405180910390a38882935093505050965096945050505050565b610fcd611ecb565b610fd760006121ae565b565b6000609b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611037612379565b609f6000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b611268611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce9061358b565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113405780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113a95780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113b5611ecb565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a98160405161140d91906135ab565b60405180910390a150565b61142061243b565b609e6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61148b611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f19061358b565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036115795780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115f85780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161162b939291906135c6565b60405180910390a1505050565b600080606660009054906101000a900467ffffffffffffffff16606554915091509091565b60008060019054906101000a900460ff1615905080801561168e5750600160008054906101000a900460ff1660ff16105b806116bb575061169d30612274565b1580156116ba5750600160008054906101000a900460ff1660ff16145b5b6116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f19061366f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611737576001600060016101000a81548160ff0219169083151502179055505b6001609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506117cc612297565b80156118255760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161181c91906136d7565b60405180910390a15b5050565b611831611ecb565b81816068918261184292919061389f565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef828260405161187492919061399c565b60405180910390a15050565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118de611ecb565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611919929190613271565b6020604051808303816000875af1158015611938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195c91906131fc565b50505050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb9061340b565b60405180910390fd5b609f6000848152602001908152602001600020600401600c9054906101000a900460ff1615611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90613477565b60405180910390fd5b6001609f6000858152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb609f600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609f6000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611b8a929190613271565b6020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd91906131fc565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611bfd9190612832565b60405180910390a26001905092915050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c41611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca790613a32565b60405180910390fd5b611cb9816121ae565b50565b609b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90613a9e565b60405180910390fd5b60008411611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613b0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190613b76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6090613b76565b60405180910390fd5b6000801b609e60008381526020019081526020016000206000015403611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb90613be2565b60405180910390fd5b5050505050565b611ed36122f0565b73ffffffffffffffffffffffffffffffffffffffff16611ef1611459565b73ffffffffffffffffffffffffffffffffffffffff1614611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613c4e565b60405180910390fd5b565b611f5161245b565b6000609f6000868152602001908152602001600020600601549050609f60008681526020019081526020016000206003015481611f8e9190613c6e565b9050606554846bffffffffffffffffffffffff1682611fad9190613091565b611fb79190613102565b826020018181525050606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168360200151611ff39190613091565b611ffd9190613102565b8260000181815250508160000151826020015161201a9190613c6e565b82602001818152505082156120525781600001518260200181815161203f9190613ca2565b9150818152505060008260000181815250505b509392505050565b6000609f600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000609f6000848152602001908152602001600020600301549050609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612121929190613271565b6020604051808303816000875af1158015612140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216491906131fc565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd90613d48565b60405180910390fd5b6122ee6122f8565b565b600033905090565b600060019054906101000a900460ff16612347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233e90613d48565b60405180910390fd5b6123576123526122f0565b6121ae565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61249c81612489565b81146124a757600080fd5b50565b6000813590506124b981612493565b92915050565b6000602082840312156124d5576124d461247f565b5b60006124e3848285016124aa565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61252181612489565b82525050565b60408201600082015161253d6000850182612518565b5060208201516125506020850182612518565b50505050565b60006125628383612527565b60408301905092915050565b6000602082019050919050565b6000612586826124ec565b61259081856124f7565b935061259b83612508565b8060005b838110156125cc5781516125b38882612556565b97506125be8361256e565b92505060018101905061259f565b5085935050505092915050565b600060208201905081810360008301526125f3818461257b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612626826125fb565b9050919050565b6126368161261b565b811461264157600080fd5b50565b6000813590506126538161262d565b92915050565b6000819050919050565b61266c81612659565b811461267757600080fd5b50565b60008135905061268981612663565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6126b08161268f565b81146126bb57600080fd5b50565b6000813590506126cd816126a7565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126f8576126f76126d3565b5b8235905067ffffffffffffffff811115612715576127146126d8565b5b602083019150836001820283011115612731576127306126dd565b5b9250929050565b6000806000806000806000806000806101208b8d03121561275c5761275b61247f565b5b600061276a8d828e01612644565b9a5050602061277b8d828e0161267a565b995050604061278c8d828e016124aa565b985050606061279d8d828e016124aa565b97505060806127ae8d828e016126be565b96505060a06127bf8d828e01612644565b95505060c06127d08d828e0161267a565b94505060e06127e18d828e01612644565b9350506101008b013567ffffffffffffffff81111561280357612802612484565b5b61280f8d828e016126e2565b92509250509295989b9194979a5092959850565b61282c81612489565b82525050565b60006020820190506128476000830184612823565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128968261284d565b810181811067ffffffffffffffff821117156128b5576128b461285e565b5b80604052505050565b60006128c8612475565b90506128d4828261288d565b919050565b600067ffffffffffffffff8211156128f4576128f361285e565b5b602082029050602081019050919050565b600080fd5b6000604082840312156129205761291f612905565b5b61292a60406128be565b9050600061293a848285016124aa565b600083015250602061294e848285016124aa565b60208301525092915050565b600061296d612968846128d9565b6128be565b905080838252602082019050604084028301858111156129905761298f6126dd565b5b835b818110156129b957806129a5888261290a565b845260208401935050604081019050612992565b5050509392505050565b600082601f8301126129d8576129d76126d3565b5b81356129e884826020860161295a565b91505092915050565b60008060408385031215612a0857612a0761247f565b5b6000612a16858286016124aa565b925050602083013567ffffffffffffffff811115612a3757612a36612484565b5b612a43858286016129c3565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a87578082015181840152602081019050612a6c565b60008484015250505050565b6000612a9e82612a4d565b612aa88185612a58565b9350612ab8818560208601612a69565b612ac18161284d565b840191505092915050565b60006020820190508181036000830152612ae68184612a93565b905092915050565b600067ffffffffffffffff82169050919050565b612b0b81612aee565b8114612b1657600080fd5b50565b600081359050612b2881612b02565b92915050565b60008115159050919050565b612b4381612b2e565b8114612b4e57600080fd5b50565b600081359050612b6081612b3a565b92915050565b60008060008060008060c08789031215612b8357612b8261247f565b5b6000612b9189828a016124aa565b9650506020612ba289828a016124aa565b9550506040612bb389828a016124aa565b9450506060612bc489828a01612644565b9350506080612bd589828a01612b19565b92505060a0612be689828a01612b51565b9150509295509295509295565b612bfc8161261b565b82525050565b6000604082019050612c176000830185612823565b612c246020830184612bf3565b9392505050565b600060208284031215612c4157612c4061247f565b5b6000612c4f84828501612644565b91505092915050565b612c6181612b2e565b82525050565b6000602082019050612c7c6000830184612c58565b92915050565b612c8b8161261b565b82525050565b612c9a81612659565b82525050565b612ca98161268f565b82525050565b612cb881612b2e565b82525050565b61012082016000820151612cd56000850182612c82565b506020820151612ce86020850182612c82565b506040820151612cfb6040850182612c82565b506060820151612d0e6060850182612c91565b506080820151612d216080850182612ca0565b5060a0820151612d3460a0850182612caf565b5060c0820151612d4760c0850182612c82565b5060e0820151612d5a60e0850182612ca0565b50610100820151612d6f610100850182612c91565b50505050565b600061012082019050612d8b6000830184612cbe565b92915050565b60008060408385031215612da857612da761247f565b5b6000612db6858286016124aa565b9250506020612dc785828601612644565b9150509250929050565b600060208284031215612de757612de661247f565b5b6000612df584828501612b19565b91505092915050565b604082016000820151612e146000850182612518565b506020820151612e276020850182612518565b50505050565b6000604082019050612e426000830184612dfe565b92915050565b6000602082019050612e5d6000830184612bf3565b92915050565b600080600060608486031215612e7c57612e7b61247f565b5b6000612e8a868287016124aa565b9350506020612e9b86828701612644565b9250506040612eac86828701612b51565b9150509250925092565b612ebf81612aee565b82525050565b612ece81612659565b82525050565b6000604082019050612ee96000830185612eb6565b612ef66020830184612ec5565b9392505050565b60008083601f840112612f1357612f126126d3565b5b8235905067ffffffffffffffff811115612f3057612f2f6126d8565b5b602083019150836001820283011115612f4c57612f4b6126dd565b5b9250929050565b60008060208385031215612f6a57612f6961247f565b5b600083013567ffffffffffffffff811115612f8857612f87612484565b5b612f9485828601612efd565b92509250509250929050565b600080600060608486031215612fb957612fb861247f565b5b6000612fc786828701612644565b9350506020612fd886828701612644565b9250506040612fe98682870161267a565b9150509250925092565b6000806040838503121561300a5761300961247f565b5b6000613018858286016124aa565b9250506020613029858286016124aa565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309c82612659565b91506130a783612659565b92508282026130b581612659565b915082820484148315176130cc576130cb613062565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061310d82612659565b915061311883612659565b925082613128576131276130d3565b5b828204905092915050565b600082825260208201905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b600061317a601083613133565b915061318582613144565b602082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b60006060820190506131c56000830186612bf3565b6131d26020830185612bf3565b6131df6040830184612ec5565b949350505050565b6000815190506131f681612b3a565b92915050565b6000602082840312156132125761321161247f565b5b6000613220848285016131e7565b91505092915050565b600061323482612659565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361326657613265613062565b5b600182019050919050565b60006040820190506132866000830185612bf3565b6132936020830184612ec5565b9392505050565b6000819050919050565b60006132bf6132ba6132b58461268f565b61329a565b612659565b9050919050565b6132cf816132a4565b82525050565b82818337600083830152505050565b60006132f08385613133565b93506132fd8385846132d5565b6133068361284d565b840190509392505050565b600060808201905061332660008301886132c6565b6133336020830187612823565b6133406040830186612823565b81810360608301526133538184866132e4565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133a657607f821691505b6020821081036133b9576133b861335f565b5b50919050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b60006133f5600e83613133565b9150613400826133bf565b602082019050919050565b60006020820190508181036000830152613424816133e8565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b6000613461600e83613133565b915061346c8261342b565b602082019050919050565b6000602082019050818103600083015261349081613454565b9050919050565b60006134a28261268f565b91506134ad8361268f565b925082820390506bffffffffffffffffffffffff8111156134d1576134d0613062565b5b92915050565b60006134f26134ed6134e884612aee565b61329a565b61268f565b9050919050565b613502816134d7565b82525050565b600060608201905061351d6000830186612823565b61352a6020830185612823565b61353760408301846134f9565b949350505050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000613575601683613133565b91506135808261353f565b602082019050919050565b600060208201905081810360008301526135a481613568565b9050919050565b60006020820190506135c06000830184612eb6565b92915050565b60006060820190506135db6000830186612823565b6135e86020830185612bf3565b6135f56040830184612c58565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613659602e83613133565b9150613664826135fd565b604082019050919050565b600060208201905081810360008301526136888161364c565b9050919050565b6000819050919050565b600060ff82169050919050565b60006136c16136bc6136b78461368f565b61329a565b613699565b9050919050565b6136d1816136a6565b82525050565b60006020820190506136ec60008301846136c8565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261375f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613722565b6137698683613722565b95508019841693508086168417925050509392505050565b600061379c61379761379284612659565b61329a565b612659565b9050919050565b6000819050919050565b6137b683613781565b6137ca6137c2826137a3565b84845461372f565b825550505050565b600090565b6137df6137d2565b6137ea8184846137ad565b505050565b5b8181101561380e576138036000826137d7565b6001810190506137f0565b5050565b601f82111561385357613824816136fd565b61382d84613712565b8101602085101561383c578190505b61385061384885613712565b8301826137ef565b50505b505050565b600082821c905092915050565b600061387660001984600802613858565b1980831691505092915050565b600061388f8383613865565b9150826002028217905092915050565b6138a983836136f2565b67ffffffffffffffff8111156138c2576138c161285e565b5b6138cc825461338e565b6138d7828285613812565b6000601f83116001811461390657600084156138f4578287013590505b6138fe8582613883565b865550613966565b601f198416613914866136fd565b60005b8281101561393c57848901358255600182019150602085019450602081019050613917565b868310156139595784890135613955601f891682613865565b8355505b6001600288020188555050505b50505050505050565b600061397b8385612a58565b93506139888385846132d5565b6139918361284d565b840190509392505050565b600060208201905081810360008301526139b781848661396f565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a1c602683613133565b9150613a27826139c0565b604082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613a88601183613133565b9150613a9382613a52565b602082019050919050565b60006020820190508181036000830152613ab781613a7b565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613af4600c83613133565b9150613aff82613abe565b602082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613b60601083613133565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613bcc601683613133565b9150613bd782613b96565b602082019050919050565b60006020820190508181036000830152613bfb81613bbf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c38602083613133565b9150613c4382613c02565b602082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b6000613c7982612659565b9150613c8483612659565b9250828203905081811115613c9c57613c9b613062565b5b92915050565b6000613cad82612659565b9150613cb883612659565b9250828201905080821115613cd057613ccf613062565b5b92915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613d32602b83613133565b9150613d3d82613cd6565b604082019050919050565b60006020820190508181036000830152613d6181613d25565b905091905056fea2646970667358221220f803c3247b0b726c64865b7a580dd6d825218d8aa6f111de58c8caa232a024ab64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x22 PUSH3 0x28 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x7B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x72 SWAP1 PUSH3 0x175 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP1 AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ PUSH3 0xEC JUMPI PUSH1 0xFF PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0xFF PUSH1 0x40 MLOAD PUSH3 0xE3 SWAP2 SWAP1 PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C697A696E6700000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15D PUSH1 0x27 DUP4 PUSH3 0xEE JUMP JUMPDEST SWAP2 POP PUSH3 0x16A DUP3 PUSH3 0xFF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x190 DUP2 PUSH3 0x14E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1AF DUP2 PUSH3 0x197 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1CC PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x1A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3D9E DUP1 PUSH3 0x1E2 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x87490D86 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xCB79455B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xD8E8DE34 EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0xE4683A79 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xE8D6E0DE EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x404 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x87490D86 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xB810C636 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x332 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x75151B63 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x768C6EC0 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x84630736 EQ PUSH2 0x28D JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x2621338 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x2654EC7E EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x32200882 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x3AD59DBC EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x5FE44CAC EQ PUSH2 0x1D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x24BF JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x25D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x2738 JUMP JUMPDEST PUSH2 0x55E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x2832 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x29F1 JUMP JUMPDEST PUSH2 0xA26 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C0 PUSH2 0xB3A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CD SWAP2 SWAP1 PUSH2 0x2ACC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP3 SWAP2 SWAP1 PUSH2 0x2C02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH2 0xFC5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH2 0xFD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x24BF JUMP JUMPDEST PUSH2 0x102F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x2D75 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x28B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x2D91 JUMP JUMPDEST PUSH2 0x1260 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x2DD1 JUMP JUMPDEST PUSH2 0x13AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0x24BF JUMP JUMPDEST PUSH2 0x1418 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x2E2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E1 PUSH2 0x1459 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2EE SWAP2 SWAP1 PUSH2 0x2E48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x311 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x2E63 JUMP JUMPDEST PUSH2 0x1483 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31B PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x329 SWAP3 SWAP2 SWAP1 PUSH2 0x2ED4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH2 0x165D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x363 SWAP2 SWAP1 PUSH2 0x2F53 JUMP JUMPDEST PUSH2 0x1829 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x384 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37F SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH2 0x1880 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x391 SWAP2 SWAP1 PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3AF SWAP2 SWAP1 PUSH2 0x2FA0 JUMP JUMPDEST PUSH2 0x18D6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2FF3 JUMP JUMPDEST PUSH2 0x1962 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH2 0x1C0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP2 SWAP1 PUSH2 0x2E48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH2 0x1C39 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x9D PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x49D JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x457 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C5 JUMPI PUSH2 0x4C4 PUSH2 0x285E JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x4EB PUSH2 0x2359 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x4E3 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x552 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x51F JUMPI PUSH2 0x51E PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53A JUMPI PUSH2 0x539 PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x504 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56D DUP12 DUP12 DUP7 DUP10 DUP14 PUSH2 0x1CBC JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP12 PUSH2 0x59C SWAP2 SWAP1 PUSH2 0x3091 JUMP JUMPDEST PUSH2 0x5A6 SWAP2 SWAP1 PUSH2 0x3102 JUMP JUMPDEST DUP6 GT ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DF SWAP1 PUSH2 0x3190 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP14 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x625 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31B0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x644 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x668 SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP PUSH1 0xA0 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6B9 SWAP1 PUSH2 0x3229 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP CALLER PUSH1 0xA0 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x710 SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x65 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP1 DUP11 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C205F90C01160D42994A0EB521810056D94BB82A1FCB038D7179C4158A1F15B DUP11 DUP14 DUP14 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xA10 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3311 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA2E PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB34 JUMPI PUSH1 0x9D PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA65 JUMPI PUSH2 0xA64 PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xACA JUMPI PUSH2 0xAC9 PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9E PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xAF6 JUMPI PUSH2 0xAF5 PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xA37 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x68 DUP1 SLOAD PUSH2 0xB49 SWAP1 PUSH2 0x338E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xB75 SWAP1 PUSH2 0x338E JUMP JUMPDEST DUP1 ISZERO PUSH2 0xBC2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB97 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xBC2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xBA5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC56 SWAP1 PUSH2 0x340B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCBA SWAP1 PUSH2 0x3477 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x9F PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD45 SWAP2 SWAP1 PUSH2 0x3497 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0xD8A DUP10 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x1F49 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE29 JUMPI PUSH1 0x1 PUSH1 0x9F PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD GT ISZERO PUSH2 0xE28 JUMPI PUSH2 0xE27 DUP10 PUSH2 0x205A JUMP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD GT ISZERO PUSH2 0xEDC JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x66 PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE97 SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEDA SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1B SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF5E SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH32 0xF26DE978CBAEA68EA699627155A10AD53DF3321B0F95A08264C0CFD6D4C05326 DUP13 DUP12 DUP11 PUSH1 0x40 MLOAD PUSH2 0xFAA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3508 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP9 DUP3 SWAP4 POP SWAP4 POP POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFCD PUSH2 0x1ECB JUMP JUMPDEST PUSH2 0xFD7 PUSH1 0x0 PUSH2 0x21AE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9B PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1037 PUSH2 0x2379 JUMP JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1268 PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12CE SWAP1 PUSH2 0x358B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x1340 JUMPI DUP1 PUSH1 0x66 PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x13A9 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x13B5 PUSH2 0x1ECB JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC8CA786C100BC62A0DFFBE768B5F0B770D84E8604C5DE54B54197B9066BB42A9 DUP2 PUSH1 0x40 MLOAD PUSH2 0x140D SWAP2 SWAP1 PUSH2 0x35AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1420 PUSH2 0x243B JUMP JUMPDEST PUSH1 0x9E PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x148B PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x14FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14F1 SWAP1 PUSH2 0x358B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x1579 JUMPI DUP1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x15F8 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x162B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x35C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x65 SLOAD SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x168E JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND LT JUMPDEST DUP1 PUSH2 0x16BB JUMPI POP PUSH2 0x169D ADDRESS PUSH2 0x2274 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x16BA JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ JUMPDEST JUMPDEST PUSH2 0x16FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16F1 SWAP1 PUSH2 0x366F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1737 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x186A0 PUSH1 0x65 DUP2 SWAP1 SSTORE POP PUSH2 0x1388 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x17CC PUSH2 0x2297 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1825 JUMPI PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x181C SWAP2 SWAP1 PUSH2 0x36D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1831 PUSH2 0x1ECB JUMP JUMPDEST DUP2 DUP2 PUSH1 0x68 SWAP2 DUP3 PUSH2 0x1842 SWAP3 SWAP2 SWAP1 PUSH2 0x389F JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1874 SWAP3 SWAP2 SWAP1 PUSH2 0x399C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9C PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18DE PUSH2 0x1ECB JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1919 SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1938 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x195C SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x19F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19EB SWAP1 PUSH2 0x340B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1A58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A4F SWAP1 PUSH2 0x3477 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x9F PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x9F PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B8A SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCD SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP DUP3 PUSH31 0x7C875846B687732A7579C19BB1DADE66CD14E9F4F809565E2B2B5E76C72B4F DUP4 PUSH1 0x40 MLOAD PUSH2 0x1BFD SWAP2 SWAP1 PUSH2 0x2832 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1C41 PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1CB0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CA7 SWAP1 PUSH2 0x3A32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1CB9 DUP2 PUSH2 0x21AE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x9B PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1D48 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D3F SWAP1 PUSH2 0x3A9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x1D8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D82 SWAP1 PUSH2 0x3B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1DFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DF1 SWAP1 PUSH2 0x3B76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1E69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E60 SWAP1 PUSH2 0x3B76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SHL PUSH1 0x9E PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SUB PUSH2 0x1EC4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EBB SWAP1 PUSH2 0x3BE2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1ED3 PUSH2 0x22F0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1EF1 PUSH2 0x1459 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F47 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F3E SWAP1 PUSH2 0x3C4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x1F51 PUSH2 0x245B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH2 0x1F8E SWAP2 SWAP1 PUSH2 0x3C6E JUMP JUMPDEST SWAP1 POP PUSH1 0x65 SLOAD DUP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1FAD SWAP2 SWAP1 PUSH2 0x3091 JUMP JUMPDEST PUSH2 0x1FB7 SWAP2 SWAP1 PUSH2 0x3102 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1FF3 SWAP2 SWAP1 PUSH2 0x3091 JUMP JUMPDEST PUSH2 0x1FFD SWAP2 SWAP1 PUSH2 0x3102 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x201A SWAP2 SWAP1 PUSH2 0x3C6E JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP DUP3 ISZERO PUSH2 0x2052 JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x203F SWAP2 SWAP1 PUSH2 0x3CA2 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2121 SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2140 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2164 SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x96C76D5AEC8A8C11A9C8E02768E3FA309347330D08961E0CF9FD43B349B684C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x22E6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22DD SWAP1 PUSH2 0x3D48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22EE PUSH2 0x22F8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2347 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x233E SWAP1 PUSH2 0x3D48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2357 PUSH2 0x2352 PUSH2 0x22F0 JUMP JUMPDEST PUSH2 0x21AE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x249C DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP2 EQ PUSH2 0x24A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x24B9 DUP2 PUSH2 0x2493 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24D5 JUMPI PUSH2 0x24D4 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x24E3 DUP5 DUP3 DUP6 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2521 DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x253D PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2518 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2550 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2518 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2562 DUP4 DUP4 PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2586 DUP3 PUSH2 0x24EC JUMP JUMPDEST PUSH2 0x2590 DUP2 DUP6 PUSH2 0x24F7 JUMP JUMPDEST SWAP4 POP PUSH2 0x259B DUP4 PUSH2 0x2508 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25CC JUMPI DUP2 MLOAD PUSH2 0x25B3 DUP9 DUP3 PUSH2 0x2556 JUMP JUMPDEST SWAP8 POP PUSH2 0x25BE DUP4 PUSH2 0x256E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x259F JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x25F3 DUP2 DUP5 PUSH2 0x257B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2626 DUP3 PUSH2 0x25FB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2636 DUP2 PUSH2 0x261B JUMP JUMPDEST DUP2 EQ PUSH2 0x2641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2653 DUP2 PUSH2 0x262D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x266C DUP2 PUSH2 0x2659 JUMP JUMPDEST DUP2 EQ PUSH2 0x2677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2689 DUP2 PUSH2 0x2663 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26B0 DUP2 PUSH2 0x268F JUMP JUMPDEST DUP2 EQ PUSH2 0x26BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26CD DUP2 PUSH2 0x26A7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x26F8 JUMPI PUSH2 0x26F7 PUSH2 0x26D3 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2715 JUMPI PUSH2 0x2714 PUSH2 0x26D8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2731 JUMPI PUSH2 0x2730 PUSH2 0x26DD JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x275C JUMPI PUSH2 0x275B PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x276A DUP14 DUP3 DUP15 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x277B DUP14 DUP3 DUP15 ADD PUSH2 0x267A JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x278C DUP14 DUP3 DUP15 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x279D DUP14 DUP3 DUP15 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x27AE DUP14 DUP3 DUP15 ADD PUSH2 0x26BE JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x27BF DUP14 DUP3 DUP15 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x27D0 DUP14 DUP3 DUP15 ADD PUSH2 0x267A JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x27E1 DUP14 DUP3 DUP15 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2803 JUMPI PUSH2 0x2802 PUSH2 0x2484 JUMP JUMPDEST JUMPDEST PUSH2 0x280F DUP14 DUP3 DUP15 ADD PUSH2 0x26E2 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH2 0x282C DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2847 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2823 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2896 DUP3 PUSH2 0x284D JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x28B5 JUMPI PUSH2 0x28B4 PUSH2 0x285E JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28C8 PUSH2 0x2475 JUMP JUMPDEST SWAP1 POP PUSH2 0x28D4 DUP3 DUP3 PUSH2 0x288D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x28F4 JUMPI PUSH2 0x28F3 PUSH2 0x285E JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2920 JUMPI PUSH2 0x291F PUSH2 0x2905 JUMP JUMPDEST JUMPDEST PUSH2 0x292A PUSH1 0x40 PUSH2 0x28BE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x293A DUP5 DUP3 DUP6 ADD PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x294E DUP5 DUP3 DUP6 ADD PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296D PUSH2 0x2968 DUP5 PUSH2 0x28D9 JUMP JUMPDEST PUSH2 0x28BE JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2990 JUMPI PUSH2 0x298F PUSH2 0x26DD JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29B9 JUMPI DUP1 PUSH2 0x29A5 DUP9 DUP3 PUSH2 0x290A JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x2992 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29D8 JUMPI PUSH2 0x29D7 PUSH2 0x26D3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29E8 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x295A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A08 JUMPI PUSH2 0x2A07 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2A16 DUP6 DUP3 DUP7 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A37 JUMPI PUSH2 0x2A36 PUSH2 0x2484 JUMP JUMPDEST JUMPDEST PUSH2 0x2A43 DUP6 DUP3 DUP7 ADD PUSH2 0x29C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A87 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2A6C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9E DUP3 PUSH2 0x2A4D JUMP JUMPDEST PUSH2 0x2AA8 DUP2 DUP6 PUSH2 0x2A58 JUMP JUMPDEST SWAP4 POP PUSH2 0x2AB8 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2A69 JUMP JUMPDEST PUSH2 0x2AC1 DUP2 PUSH2 0x284D JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2AE6 DUP2 DUP5 PUSH2 0x2A93 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B0B DUP2 PUSH2 0x2AEE JUMP JUMPDEST DUP2 EQ PUSH2 0x2B16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2B28 DUP2 PUSH2 0x2B02 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B43 DUP2 PUSH2 0x2B2E JUMP JUMPDEST DUP2 EQ PUSH2 0x2B4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2B60 DUP2 PUSH2 0x2B3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2B83 JUMPI PUSH2 0x2B82 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2B91 DUP10 DUP3 DUP11 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x2BA2 DUP10 DUP3 DUP11 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x2BB3 DUP10 DUP3 DUP11 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x2BC4 DUP10 DUP3 DUP11 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x2BD5 DUP10 DUP3 DUP11 ADD PUSH2 0x2B19 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x2BE6 DUP10 DUP3 DUP11 ADD PUSH2 0x2B51 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x2BFC DUP2 PUSH2 0x261B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2C17 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x2C24 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2BF3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C41 JUMPI PUSH2 0x2C40 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2C4F DUP5 DUP3 DUP6 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2C61 DUP2 PUSH2 0x2B2E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2C7C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2C58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2C8B DUP2 PUSH2 0x261B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2C9A DUP2 PUSH2 0x2659 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2CA9 DUP2 PUSH2 0x268F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2CB8 DUP2 PUSH2 0x2B2E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x120 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2CD5 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2C82 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2CE8 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2C82 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2CFB PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2C82 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2D0E PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2C91 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2D21 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2CA0 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2D34 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2CAF JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x2D47 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2C82 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x2D5A PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2CA0 JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x2D6F PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2C91 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 ADD SWAP1 POP PUSH2 0x2D8B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2CBE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DA8 JUMPI PUSH2 0x2DA7 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DB6 DUP6 DUP3 DUP7 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2DC7 DUP6 DUP3 DUP7 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DE7 JUMPI PUSH2 0x2DE6 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DF5 DUP5 DUP3 DUP6 ADD PUSH2 0x2B19 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2E14 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2518 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2E27 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2518 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2E42 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2DFE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2E5D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2BF3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2E7C JUMPI PUSH2 0x2E7B PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E8A DUP7 DUP3 DUP8 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2E9B DUP7 DUP3 DUP8 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2EAC DUP7 DUP3 DUP8 ADD PUSH2 0x2B51 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x2EBF DUP2 PUSH2 0x2AEE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2ECE DUP2 PUSH2 0x2659 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2EE9 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2EB6 JUMP JUMPDEST PUSH2 0x2EF6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2EC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2F13 JUMPI PUSH2 0x2F12 PUSH2 0x26D3 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F30 JUMPI PUSH2 0x2F2F PUSH2 0x26D8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2F4C JUMPI PUSH2 0x2F4B PUSH2 0x26DD JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F6A JUMPI PUSH2 0x2F69 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F88 JUMPI PUSH2 0x2F87 PUSH2 0x2484 JUMP JUMPDEST JUMPDEST PUSH2 0x2F94 DUP6 DUP3 DUP7 ADD PUSH2 0x2EFD JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2FB9 JUMPI PUSH2 0x2FB8 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2FC7 DUP7 DUP3 DUP8 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2FD8 DUP7 DUP3 DUP8 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2FE9 DUP7 DUP3 DUP8 ADD PUSH2 0x267A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x300A JUMPI PUSH2 0x3009 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3018 DUP6 DUP3 DUP7 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3029 DUP6 DUP3 DUP7 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x309C DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH2 0x30A7 DUP4 PUSH2 0x2659 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x30B5 DUP2 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x30CC JUMPI PUSH2 0x30CB PUSH2 0x3062 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x310D DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH2 0x3118 DUP4 PUSH2 0x2659 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x3128 JUMPI PUSH2 0x3127 PUSH2 0x30D3 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x53656E646572466565546F6F4869676800000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x317A PUSH1 0x10 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3185 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x31A9 DUP2 PUSH2 0x316D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x31C5 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2BF3 JUMP JUMPDEST PUSH2 0x31D2 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2BF3 JUMP JUMPDEST PUSH2 0x31DF PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EC5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x31F6 DUP2 PUSH2 0x2B3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3212 JUMPI PUSH2 0x3211 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3220 DUP5 DUP3 DUP6 ADD PUSH2 0x31E7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3234 DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x3266 JUMPI PUSH2 0x3265 PUSH2 0x3062 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3286 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2BF3 JUMP JUMPDEST PUSH2 0x3293 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2EC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32BF PUSH2 0x32BA PUSH2 0x32B5 DUP5 PUSH2 0x268F JUMP JUMPDEST PUSH2 0x329A JUMP JUMPDEST PUSH2 0x2659 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x32CF DUP2 PUSH2 0x32A4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32F0 DUP4 DUP6 PUSH2 0x3133 JUMP JUMPDEST SWAP4 POP PUSH2 0x32FD DUP4 DUP6 DUP5 PUSH2 0x32D5 JUMP JUMPDEST PUSH2 0x3306 DUP4 PUSH2 0x284D JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x3326 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x32C6 JUMP JUMPDEST PUSH2 0x3333 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x3340 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2823 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3353 DUP2 DUP5 DUP7 PUSH2 0x32E4 JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x33A6 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x33B9 JUMPI PUSH2 0x33B8 PUSH2 0x335F JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F6E6C7941676772656761746F72000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33F5 PUSH1 0xE DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3400 DUP3 PUSH2 0x33BF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3424 DUP2 PUSH2 0x33E8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F7264657246756C66696C6C6564000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3461 PUSH1 0xE DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x346C DUP3 PUSH2 0x342B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3490 DUP2 PUSH2 0x3454 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34A2 DUP3 PUSH2 0x268F JUMP JUMPDEST SWAP2 POP PUSH2 0x34AD DUP4 PUSH2 0x268F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x34D1 JUMPI PUSH2 0x34D0 PUSH2 0x3062 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34F2 PUSH2 0x34ED PUSH2 0x34E8 DUP5 PUSH2 0x2AEE JUMP JUMPDEST PUSH2 0x329A JUMP JUMPDEST PUSH2 0x268F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3502 DUP2 PUSH2 0x34D7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x351D PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x352A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x3537 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x34F9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3575 PUSH1 0x16 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3580 DUP3 PUSH2 0x353F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x35A4 DUP2 PUSH2 0x3568 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x35C0 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2EB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x35DB PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x35E8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2BF3 JUMP JUMPDEST PUSH2 0x35F5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2C58 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3659 PUSH1 0x2E DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3664 DUP3 PUSH2 0x35FD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3688 DUP2 PUSH2 0x364C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36C1 PUSH2 0x36BC PUSH2 0x36B7 DUP5 PUSH2 0x368F JUMP JUMPDEST PUSH2 0x329A JUMP JUMPDEST PUSH2 0x3699 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x36D1 DUP2 PUSH2 0x36A6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x36EC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x36C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x375F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x3722 JUMP JUMPDEST PUSH2 0x3769 DUP7 DUP4 PUSH2 0x3722 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379C PUSH2 0x3797 PUSH2 0x3792 DUP5 PUSH2 0x2659 JUMP JUMPDEST PUSH2 0x329A JUMP JUMPDEST PUSH2 0x2659 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x37B6 DUP4 PUSH2 0x3781 JUMP JUMPDEST PUSH2 0x37CA PUSH2 0x37C2 DUP3 PUSH2 0x37A3 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x372F JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x37DF PUSH2 0x37D2 JUMP JUMPDEST PUSH2 0x37EA DUP2 DUP5 DUP5 PUSH2 0x37AD JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x380E JUMPI PUSH2 0x3803 PUSH1 0x0 DUP3 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x37F0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x3853 JUMPI PUSH2 0x3824 DUP2 PUSH2 0x36FD JUMP JUMPDEST PUSH2 0x382D DUP5 PUSH2 0x3712 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x383C JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x3850 PUSH2 0x3848 DUP6 PUSH2 0x3712 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x37EF JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3876 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x3858 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x388F DUP4 DUP4 PUSH2 0x3865 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x38A9 DUP4 DUP4 PUSH2 0x36F2 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38C2 JUMPI PUSH2 0x38C1 PUSH2 0x285E JUMP JUMPDEST JUMPDEST PUSH2 0x38CC DUP3 SLOAD PUSH2 0x338E JUMP JUMPDEST PUSH2 0x38D7 DUP3 DUP3 DUP6 PUSH2 0x3812 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3906 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x38F4 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x38FE DUP6 DUP3 PUSH2 0x3883 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x3966 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x3914 DUP7 PUSH2 0x36FD JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x393C JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3917 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x3959 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x3955 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x3865 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x397B DUP4 DUP6 PUSH2 0x2A58 JUMP JUMPDEST SWAP4 POP PUSH2 0x3988 DUP4 DUP6 DUP5 PUSH2 0x32D5 JUMP JUMPDEST PUSH2 0x3991 DUP4 PUSH2 0x284D JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x39B7 DUP2 DUP5 DUP7 PUSH2 0x396F JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A1C PUSH1 0x26 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A27 DUP3 PUSH2 0x39C0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A4B DUP2 PUSH2 0x3A0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x546F6B656E4E6F74537570706F72746564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A88 PUSH1 0x11 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A93 DUP3 PUSH2 0x3A52 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3AB7 DUP2 PUSH2 0x3A7B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E7449735A65726F0000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AF4 PUSH1 0xC DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3AFF DUP3 PUSH2 0x3ABE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3B23 DUP2 PUSH2 0x3AE7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5468726F775A65726F4164647265737300000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B60 PUSH1 0x10 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3B6B DUP3 PUSH2 0x3B2A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3B8F DUP2 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C6964496E737469747574696F6E436F646500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BCC PUSH1 0x16 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3BD7 DUP3 PUSH2 0x3B96 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3BFB DUP2 PUSH2 0x3BBF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C38 PUSH1 0x20 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3C43 DUP3 PUSH2 0x3C02 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C67 DUP2 PUSH2 0x3C2B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C79 DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH2 0x3C84 DUP4 PUSH2 0x2659 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3C9C JUMPI PUSH2 0x3C9B PUSH2 0x3062 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CAD DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH2 0x3CB8 DUP4 PUSH2 0x2659 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CD0 JUMPI PUSH2 0x3CCF PUSH2 0x3062 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D32 PUSH1 0x2B DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3D3D DUP3 PUSH2 0x3CD6 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D61 DUP2 PUSH2 0x3D25 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 SUB 0xC3 0x24 PUSH28 0xB726C64865B7A580DD6D825218D8AA6F111DE58C8CAA232A024AB64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"367:9282:12:-:0;;;782:53;;;;;;;;;;806:22;:20;;;:22;;:::i;:::-;367:9282;;5939:280:1;6007:13;;;;;;;;;;;6006:14;5998:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6094:15;6078:31;;:12;;;;;;;;;;:31;;;6074:139;;6140:15;6125:12;;:30;;;;;;;;;;;;;;;;;;6174:28;6186:15;6174:28;;;;;;:::i;:::-;;;;;;;;6074:139;5939:280::o;7:169:15:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:226::-;322:34;318:1;310:6;306:14;299:58;391:9;386:2;378:6;374:15;367:34;182:226;:::o;414:366::-;556:3;577:67;641:2;636:3;577:67;:::i;:::-;570:74;;653:93;742:3;653:93;:::i;:::-;771:2;766:3;762:12;755:19;;414:366;;;:::o;786:419::-;952:4;990:2;979:9;975:18;967:26;;1039:9;1033:4;1029:20;1025:1;1014:9;1010:17;1003:47;1067:131;1193:4;1067:131;:::i;:::-;1059:139;;786:419;;;:::o;1211:86::-;1246:7;1286:4;1279:5;1275:16;1264:27;;1211:86;;;:::o;1303:112::-;1386:22;1402:5;1386:22;:::i;:::-;1381:3;1374:35;1303:112;;:::o;1421:214::-;1510:4;1548:2;1537:9;1533:18;1525:26;;1561:67;1625:1;1614:9;1610:17;1601:6;1561:67;:::i;:::-;1421:214;;;;:::o;367:9282:12:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__Ownable_init_26":{"entryPoint":8855,"id":26,"parameterSlots":0,"returnSlots":0},"@__Ownable_init_unchained_37":{"entryPoint":8952,"id":37,"parameterSlots":0,"returnSlots":0},"@_calculateFees_3351":{"entryPoint":8009,"id":3351,"parameterSlots":3,"returnSlots":1},"@_checkOwner_68":{"entryPoint":7883,"id":68,"parameterSlots":0,"returnSlots":0},"@_handler_3058":{"entryPoint":7356,"id":3058,"parameterSlots":5,"returnSlots":0},"@_msgSender_1147":{"entryPoint":8944,"id":1147,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_125":{"entryPoint":8622,"id":125,"parameterSlots":1,"returnSlots":0},"@createOrder_2997":{"entryPoint":1374,"id":2997,"parameterSlots":10,"returnSlots":1},"@getAggregatorAddress_3473":{"entryPoint":7183,"id":3473,"parameterSlots":0,"returnSlots":1},"@getAggregator_3495":{"entryPoint":2874,"id":3495,"parameterSlots":0,"returnSlots":1},"@getFeeDetails_3464":{"entryPoint":5688,"id":3464,"parameterSlots":0,"returnSlots":2},"@getOrderInfo_3365":{"entryPoint":4143,"id":3365,"parameterSlots":1,"returnSlots":1},"@getSupportedInstitutionName_3392":{"entryPoint":5144,"id":3392,"parameterSlots":1,"returnSlots":1},"@getSupportedInstitutions_3451":{"entryPoint":1056,"id":3451,"parameterSlots":1,"returnSlots":1},"@getWhitelistedStatus_3486":{"entryPoint":6272,"id":3486,"parameterSlots":1,"returnSlots":1},"@initialize_2877":{"entryPoint":5725,"id":2877,"parameterSlots":1,"returnSlots":0},"@isContract_808":{"entryPoint":8820,"id":808,"parameterSlots":1,"returnSlots":1},"@isTokenSupported_3378":{"entryPoint":4057,"id":3378,"parameterSlots":1,"returnSlots":1},"@owner_54":{"entryPoint":5209,"id":54,"parameterSlots":0,"returnSlots":1},"@refund_3272":{"entryPoint":6498,"id":3272,"parameterSlots":2,"returnSlots":1},"@renounceOwnership_82":{"entryPoint":4037,"id":82,"parameterSlots":0,"returnSlots":0},"@setSupportedInstitutions_3686":{"entryPoint":2598,"id":3686,"parameterSlots":2,"returnSlots":0},"@settingManagerBool_3632":{"entryPoint":5251,"id":3632,"parameterSlots":3,"returnSlots":0},"@settle_3176":{"entryPoint":3020,"id":3176,"parameterSlots":6,"returnSlots":2},"@transferOwnership_105":{"entryPoint":7225,"id":105,"parameterSlots":1,"returnSlots":0},"@transferSenderFee_3212":{"entryPoint":8282,"id":3212,"parameterSlots":1,"returnSlots":0},"@updateProtocolAddresses_3738":{"entryPoint":4704,"id":3738,"parameterSlots":2,"returnSlots":0},"@updateProtocolAggregator_3754":{"entryPoint":6185,"id":3754,"parameterSlots":2,"returnSlots":0},"@updateProtocolFees_3702":{"entryPoint":5037,"id":3702,"parameterSlots":1,"returnSlots":0},"@withdraw_3515":{"entryPoint":6358,"id":3515,"parameterSlots":3,"returnSlots":0},"abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":10586,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":9796,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":10691,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":11089,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":12775,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":9386,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":12029,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_string_calldata_ptr":{"entryPoint":9954,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_struct$_Institution_$3526_memory_ptr":{"entryPoint":10506,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":9850,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint64":{"entryPoint":11033,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint96":{"entryPoint":9918,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":11307,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":12192,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr":{"entryPoint":10040,"id":null,"parameterSlots":2,"returnSlots":10},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":12796,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":9407,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":11665,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_addresst_bool":{"entryPoint":11875,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":10737,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32":{"entryPoint":12275,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_addresst_uint64t_bool":{"entryPoint":11110,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":12115,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint64":{"entryPoint":11729,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr":{"entryPoint":9558,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":11394,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":11251,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":9595,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool":{"entryPoint":11439,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":11352,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32":{"entryPoint":9496,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":10275,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":14703,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":10899,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack":{"entryPoint":14024,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":13028,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":14863,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack":{"entryPoint":15079,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack":{"entryPoint":13672,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack":{"entryPoint":12653,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack":{"entryPoint":13900,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack":{"entryPoint":13396,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack":{"entryPoint":15295,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":15403,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack":{"entryPoint":15187,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack":{"entryPoint":14971,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack":{"entryPoint":15653,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack":{"entryPoint":13288,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_struct$_InstitutionByCode_$3531_memory_ptr_to_t_struct$_InstitutionByCode_$3531_memory_ptr_fromStack":{"entryPoint":11774,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr":{"entryPoint":9511,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_Order_$3841_memory_ptr_to_t_struct$_Order_$3841_memory_ptr_fromStack":{"entryPoint":11454,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256":{"entryPoint":11409,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":11973,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint64_to_t_uint64_fromStack":{"entryPoint":11958,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint64_to_t_uint96_fromStack":{"entryPoint":13561,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint256_fromStack":{"entryPoint":12998,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint96":{"entryPoint":11424,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":11848,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":12720,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":12913,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":9689,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":11367,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":10290,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":11266,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed":{"entryPoint":13766,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed":{"entryPoint":13576,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":14748,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":10956,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":14039,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14898,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15114,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13707,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12688,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13935,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13431,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15330,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15438,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15222,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15006,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15688,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13323,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_struct$_InstitutionByCode_$3531_memory_ptr__to_t_struct$_InstitutionByCode_$3531_memory_ptr__fromStack_reversed":{"entryPoint":11821,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_Order_$3841_memory_ptr__to_t_struct$_Order_$3841_memory_ptr__fromStack_reversed":{"entryPoint":11637,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":13739,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64_t_uint256__to_t_uint64_t_uint256__fromStack_reversed":{"entryPoint":11988,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13073,"id":null,"parameterSlots":6,"returnSlots":1},"allocate_memory":{"entryPoint":10430,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":9333,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":10457,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":9480,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_bytes_storage":{"entryPoint":14077,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":9452,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_calldata_ptr":{"entryPoint":14066,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":10829,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":9582,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":9463,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":10840,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":12595,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":15522,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":12546,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":12433,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":15470,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint96":{"entryPoint":13463,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_bytes_storage":{"entryPoint":14354,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":9755,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":11054,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":9353,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_1_by_1":{"entryPoint":13967,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":9723,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":9817,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint64":{"entryPoint":10990,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":13977,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":9871,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":14319,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_rational_1_by_1_to_t_uint8":{"entryPoint":13990,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint256_to_t_uint256":{"entryPoint":14209,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint64_to_t_uint96":{"entryPoint":13527,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint96_to_t_uint256":{"entryPoint":12964,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage":{"entryPoint":14495,"id":null,"parameterSlots":3,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":13013,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":10857,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":14098,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":13198,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":14467,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":10381,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":12954,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":12841,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":14437,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":12386,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":12499,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":13151,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":12339,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10334,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":14243,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":9944,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":9939,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":10501,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":9949,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":9348,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":9343,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":10317,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":14114,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":14424,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":14295,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":14784,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2":{"entryPoint":15038,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4":{"entryPoint":13631,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4":{"entryPoint":12612,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759":{"entryPoint":13821,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5":{"entryPoint":13355,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5":{"entryPoint":15254,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":15362,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7":{"entryPoint":15146,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1":{"entryPoint":14930,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b":{"entryPoint":15574,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243":{"entryPoint":13247,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":14127,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":14253,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":9773,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":11066,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":9363,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":9827,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint64":{"entryPoint":11010,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint96":{"entryPoint":9895,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":14290,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:49255:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"379:32:15","statements":[{"nodeType":"YulAssignment","src":"389:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:15"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:15","type":""}],"src":"334:77:15"},{"body":{"nodeType":"YulBlock","src":"460:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:15"},"nodeType":"YulFunctionCall","src":"519:12:15"},"nodeType":"YulExpressionStatement","src":"519:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"490:17:15"},"nodeType":"YulFunctionCall","src":"490:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:15"},"nodeType":"YulFunctionCall","src":"480:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:15"},"nodeType":"YulFunctionCall","src":"473:43:15"},"nodeType":"YulIf","src":"470:63:15"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:15","type":""}],"src":"417:122:15"},{"body":{"nodeType":"YulBlock","src":"597:87:15","statements":[{"nodeType":"YulAssignment","src":"607:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:15"},"nodeType":"YulFunctionCall","src":"616:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:15"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"645:26:15"},"nodeType":"YulFunctionCall","src":"645:33:15"},"nodeType":"YulExpressionStatement","src":"645:33:15"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:15","type":""}],"src":"545:139:15"},{"body":{"nodeType":"YulBlock","src":"756:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"802:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"804:77:15"},"nodeType":"YulFunctionCall","src":"804:79:15"},"nodeType":"YulExpressionStatement","src":"804:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"777:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"773:3:15"},"nodeType":"YulFunctionCall","src":"773:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"798:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"769:3:15"},"nodeType":"YulFunctionCall","src":"769:32:15"},"nodeType":"YulIf","src":"766:119:15"},{"nodeType":"YulBlock","src":"895:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"910:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"924:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"914:6:15","type":""}]},{"nodeType":"YulAssignment","src":"939:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"974:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"985:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"970:3:15"},"nodeType":"YulFunctionCall","src":"970:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"994:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"949:20:15"},"nodeType":"YulFunctionCall","src":"949:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"939:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"726:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"737:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"749:6:15","type":""}],"src":"690:329:15"},{"body":{"nodeType":"YulBlock","src":"1128:40:15","statements":[{"nodeType":"YulAssignment","src":"1139:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1155:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1149:5:15"},"nodeType":"YulFunctionCall","src":"1149:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1139:6:15"}]}]},"name":"array_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1111:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1121:6:15","type":""}],"src":"1025:143:15"},{"body":{"nodeType":"YulBlock","src":"1314:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1331:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"1336:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1324:6:15"},"nodeType":"YulFunctionCall","src":"1324:19:15"},"nodeType":"YulExpressionStatement","src":"1324:19:15"},{"nodeType":"YulAssignment","src":"1352:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1371:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1376:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1367:3:15"},"nodeType":"YulFunctionCall","src":"1367:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1352:11:15"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1286:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1291:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1302:11:15","type":""}],"src":"1174:213:15"},{"body":{"nodeType":"YulBlock","src":"1494:60:15","statements":[{"nodeType":"YulAssignment","src":"1504:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"1512:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1504:4:15"}]},{"nodeType":"YulAssignment","src":"1525:22:15","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1537:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1542:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1533:3:15"},"nodeType":"YulFunctionCall","src":"1533:14:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1525:4:15"}]}]},"name":"array_dataslot_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1481:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1489:4:15","type":""}],"src":"1393:161:15"},{"body":{"nodeType":"YulBlock","src":"1615:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1632:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1655:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"1637:17:15"},"nodeType":"YulFunctionCall","src":"1637:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1625:6:15"},"nodeType":"YulFunctionCall","src":"1625:37:15"},"nodeType":"YulExpressionStatement","src":"1625:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1603:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1610:3:15","type":""}],"src":"1560:108:15"},{"body":{"nodeType":"YulBlock","src":"1882:391:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1892:26:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1908:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1913:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1904:3:15"},"nodeType":"YulFunctionCall","src":"1904:14:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"1896:4:15","type":""}]},{"nodeType":"YulBlock","src":"1928:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1963:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1993:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2000:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1989:3:15"},"nodeType":"YulFunctionCall","src":"1989:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1983:5:15"},"nodeType":"YulFunctionCall","src":"1983:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"1967:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2053:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2071:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2076:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2067:3:15"},"nodeType":"YulFunctionCall","src":"2067:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"2019:33:15"},"nodeType":"YulFunctionCall","src":"2019:63:15"},"nodeType":"YulExpressionStatement","src":"2019:63:15"}]},{"nodeType":"YulBlock","src":"2102:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2137:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2167:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2174:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2163:3:15"},"nodeType":"YulFunctionCall","src":"2163:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2157:5:15"},"nodeType":"YulFunctionCall","src":"2157:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2141:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2227:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2245:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2250:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2241:3:15"},"nodeType":"YulFunctionCall","src":"2241:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"2193:33:15"},"nodeType":"YulFunctionCall","src":"2193:63:15"},"nodeType":"YulExpressionStatement","src":"2193:63:15"}]}]},"name":"abi_encode_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1869:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1876:3:15","type":""}],"src":"1768:505:15"},{"body":{"nodeType":"YulBlock","src":"2417:157:15","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2519:6:15"},{"name":"pos","nodeType":"YulIdentifier","src":"2527:3:15"}],"functionName":{"name":"abi_encode_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr","nodeType":"YulIdentifier","src":"2427:91:15"},"nodeType":"YulFunctionCall","src":"2427:104:15"},"nodeType":"YulExpressionStatement","src":"2427:104:15"},{"nodeType":"YulAssignment","src":"2540:28:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2558:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2563:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2554:3:15"},"nodeType":"YulFunctionCall","src":"2554:14:15"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2540:10:15"}]}]},"name":"abi_encodeUpdatedPos_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2390:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2398:3:15","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2406:10:15","type":""}],"src":"2279:295:15"},{"body":{"nodeType":"YulBlock","src":"2684:38:15","statements":[{"nodeType":"YulAssignment","src":"2694:22:15","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2706:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2711:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2702:3:15"},"nodeType":"YulFunctionCall","src":"2702:14:15"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"2694:4:15"}]}]},"name":"array_nextElement_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"2671:3:15","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"2679:4:15","type":""}],"src":"2580:142:15"},{"body":{"nodeType":"YulBlock","src":"3008:782:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3018:97:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3109:5:15"}],"functionName":{"name":"array_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3032:76:15"},"nodeType":"YulFunctionCall","src":"3032:83:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3022:6:15","type":""}]},{"nodeType":"YulAssignment","src":"3124:122:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3234:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"3239:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3131:102:15"},"nodeType":"YulFunctionCall","src":"3131:115:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3124:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"3255:100:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3349:5:15"}],"functionName":{"name":"array_dataslot_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3270:78:15"},"nodeType":"YulFunctionCall","src":"3270:85:15"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"3259:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3364:21:15","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"3378:7:15"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3368:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3454:311:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3468:34:15","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3495:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3489:5:15"},"nodeType":"YulFunctionCall","src":"3489:13:15"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"3472:13:15","type":""}]},{"nodeType":"YulAssignment","src":"3515:128:15","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"3624:13:15"},{"name":"pos","nodeType":"YulIdentifier","src":"3639:3:15"}],"functionName":{"name":"abi_encodeUpdatedPos_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr","nodeType":"YulIdentifier","src":"3522:101:15"},"nodeType":"YulFunctionCall","src":"3522:121:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3515:3:15"}]},{"nodeType":"YulAssignment","src":"3656:99:15","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3748:6:15"}],"functionName":{"name":"array_nextElement_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3666:81:15"},"nodeType":"YulFunctionCall","src":"3666:89:15"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3656:6:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3416:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"3419:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3413:2:15"},"nodeType":"YulFunctionCall","src":"3413:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3427:18:15","statements":[{"nodeType":"YulAssignment","src":"3429:14:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3438:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"3441:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3434:3:15"},"nodeType":"YulFunctionCall","src":"3434:9:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"3398:14:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3400:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"3409:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3404:1:15","type":""}]}]},"src":"3394:371:15"},{"nodeType":"YulAssignment","src":"3774:10:15","value":{"name":"pos","nodeType":"YulIdentifier","src":"3781:3:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3774:3:15"}]}]},"name":"abi_encode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2987:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2994:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3003:3:15","type":""}],"src":"2826:964:15"},{"body":{"nodeType":"YulBlock","src":"4002:283:15","statements":[{"nodeType":"YulAssignment","src":"4012:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4024:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4035:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4020:3:15"},"nodeType":"YulFunctionCall","src":"4020:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4012:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4059:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4070:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4055:3:15"},"nodeType":"YulFunctionCall","src":"4055:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4078:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4084:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4074:3:15"},"nodeType":"YulFunctionCall","src":"4074:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4048:6:15"},"nodeType":"YulFunctionCall","src":"4048:47:15"},"nodeType":"YulExpressionStatement","src":"4048:47:15"},{"nodeType":"YulAssignment","src":"4104:174:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4264:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"4273:4:15"}],"functionName":{"name":"abi_encode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4112:151:15"},"nodeType":"YulFunctionCall","src":"4112:166:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4104:4:15"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3974:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3986:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3997:4:15","type":""}],"src":"3796:489:15"},{"body":{"nodeType":"YulBlock","src":"4336:81:15","statements":[{"nodeType":"YulAssignment","src":"4346:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4361:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"4368:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4357:3:15"},"nodeType":"YulFunctionCall","src":"4357:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4346:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4318:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4328:7:15","type":""}],"src":"4291:126:15"},{"body":{"nodeType":"YulBlock","src":"4468:51:15","statements":[{"nodeType":"YulAssignment","src":"4478:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4507:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"4489:17:15"},"nodeType":"YulFunctionCall","src":"4489:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4478:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4450:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4460:7:15","type":""}],"src":"4423:96:15"},{"body":{"nodeType":"YulBlock","src":"4568:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"4625:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4634:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4637:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4627:6:15"},"nodeType":"YulFunctionCall","src":"4627:12:15"},"nodeType":"YulExpressionStatement","src":"4627:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4591:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4616:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4598:17:15"},"nodeType":"YulFunctionCall","src":"4598:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4588:2:15"},"nodeType":"YulFunctionCall","src":"4588:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4581:6:15"},"nodeType":"YulFunctionCall","src":"4581:43:15"},"nodeType":"YulIf","src":"4578:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4561:5:15","type":""}],"src":"4525:122:15"},{"body":{"nodeType":"YulBlock","src":"4705:87:15","statements":[{"nodeType":"YulAssignment","src":"4715:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4737:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4724:12:15"},"nodeType":"YulFunctionCall","src":"4724:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4715:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4780:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4753:26:15"},"nodeType":"YulFunctionCall","src":"4753:33:15"},"nodeType":"YulExpressionStatement","src":"4753:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4683:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"4691:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4699:5:15","type":""}],"src":"4653:139:15"},{"body":{"nodeType":"YulBlock","src":"4843:32:15","statements":[{"nodeType":"YulAssignment","src":"4853:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"4864:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4853:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4825:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4835:7:15","type":""}],"src":"4798:77:15"},{"body":{"nodeType":"YulBlock","src":"4924:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"4981:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4990:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4993:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4983:6:15"},"nodeType":"YulFunctionCall","src":"4983:12:15"},"nodeType":"YulExpressionStatement","src":"4983:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4947:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4972:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"4954:17:15"},"nodeType":"YulFunctionCall","src":"4954:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4944:2:15"},"nodeType":"YulFunctionCall","src":"4944:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4937:6:15"},"nodeType":"YulFunctionCall","src":"4937:43:15"},"nodeType":"YulIf","src":"4934:63:15"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4917:5:15","type":""}],"src":"4881:122:15"},{"body":{"nodeType":"YulBlock","src":"5061:87:15","statements":[{"nodeType":"YulAssignment","src":"5071:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5093:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5080:12:15"},"nodeType":"YulFunctionCall","src":"5080:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5071:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5136:5:15"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"5109:26:15"},"nodeType":"YulFunctionCall","src":"5109:33:15"},"nodeType":"YulExpressionStatement","src":"5109:33:15"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5039:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5047:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5055:5:15","type":""}],"src":"5009:139:15"},{"body":{"nodeType":"YulBlock","src":"5198:65:15","statements":[{"nodeType":"YulAssignment","src":"5208:49:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5223:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5230:26:15","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5219:3:15"},"nodeType":"YulFunctionCall","src":"5219:38:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5208:7:15"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5180:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5190:7:15","type":""}],"src":"5154:109:15"},{"body":{"nodeType":"YulBlock","src":"5311:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"5367:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5376:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5379:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5369:6:15"},"nodeType":"YulFunctionCall","src":"5369:12:15"},"nodeType":"YulExpressionStatement","src":"5369:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5334:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5358:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"5341:16:15"},"nodeType":"YulFunctionCall","src":"5341:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5331:2:15"},"nodeType":"YulFunctionCall","src":"5331:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5324:6:15"},"nodeType":"YulFunctionCall","src":"5324:42:15"},"nodeType":"YulIf","src":"5321:62:15"}]},"name":"validator_revert_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5304:5:15","type":""}],"src":"5269:120:15"},{"body":{"nodeType":"YulBlock","src":"5446:86:15","statements":[{"nodeType":"YulAssignment","src":"5456:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5478:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5465:12:15"},"nodeType":"YulFunctionCall","src":"5465:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5456:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5520:5:15"}],"functionName":{"name":"validator_revert_t_uint96","nodeType":"YulIdentifier","src":"5494:25:15"},"nodeType":"YulFunctionCall","src":"5494:32:15"},"nodeType":"YulExpressionStatement","src":"5494:32:15"}]},"name":"abi_decode_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5424:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5432:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5440:5:15","type":""}],"src":"5395:137:15"},{"body":{"nodeType":"YulBlock","src":"5627:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5644:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5647:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5637:6:15"},"nodeType":"YulFunctionCall","src":"5637:12:15"},"nodeType":"YulExpressionStatement","src":"5637:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"5538:117:15"},{"body":{"nodeType":"YulBlock","src":"5750:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5767:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5770:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5760:6:15"},"nodeType":"YulFunctionCall","src":"5760:12:15"},"nodeType":"YulExpressionStatement","src":"5760:12:15"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"5661:117:15"},{"body":{"nodeType":"YulBlock","src":"5873:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5890:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5893:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5883:6:15"},"nodeType":"YulFunctionCall","src":"5883:12:15"},"nodeType":"YulExpressionStatement","src":"5883:12:15"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"5784:117:15"},{"body":{"nodeType":"YulBlock","src":"5996:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"6045:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"6047:77:15"},"nodeType":"YulFunctionCall","src":"6047:79:15"},"nodeType":"YulExpressionStatement","src":"6047:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6024:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"6032:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6020:3:15"},"nodeType":"YulFunctionCall","src":"6020:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"6039:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6016:3:15"},"nodeType":"YulFunctionCall","src":"6016:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6009:6:15"},"nodeType":"YulFunctionCall","src":"6009:35:15"},"nodeType":"YulIf","src":"6006:122:15"},{"nodeType":"YulAssignment","src":"6137:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6160:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6147:12:15"},"nodeType":"YulFunctionCall","src":"6147:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6137:6:15"}]},{"body":{"nodeType":"YulBlock","src":"6210:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"6212:77:15"},"nodeType":"YulFunctionCall","src":"6212:79:15"},"nodeType":"YulExpressionStatement","src":"6212:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6182:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"6190:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6179:2:15"},"nodeType":"YulFunctionCall","src":"6179:30:15"},"nodeType":"YulIf","src":"6176:117:15"},{"nodeType":"YulAssignment","src":"6302:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6318:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"6326:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6314:3:15"},"nodeType":"YulFunctionCall","src":"6314:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"6302:8:15"}]},{"body":{"nodeType":"YulBlock","src":"6385:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"6387:77:15"},"nodeType":"YulFunctionCall","src":"6387:79:15"},"nodeType":"YulExpressionStatement","src":"6387:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"6350:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6364:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"6372:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6360:3:15"},"nodeType":"YulFunctionCall","src":"6360:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6346:3:15"},"nodeType":"YulFunctionCall","src":"6346:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"6380:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6343:2:15"},"nodeType":"YulFunctionCall","src":"6343:41:15"},"nodeType":"YulIf","src":"6340:128:15"}]},"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5963:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5971:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"5979:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"5989:6:15","type":""}],"src":"5921:553:15"},{"body":{"nodeType":"YulBlock","src":"6701:1472:15","statements":[{"body":{"nodeType":"YulBlock","src":"6748:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6750:77:15"},"nodeType":"YulFunctionCall","src":"6750:79:15"},"nodeType":"YulExpressionStatement","src":"6750:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6722:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6731:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6718:3:15"},"nodeType":"YulFunctionCall","src":"6718:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6743:3:15","type":"","value":"288"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6714:3:15"},"nodeType":"YulFunctionCall","src":"6714:33:15"},"nodeType":"YulIf","src":"6711:120:15"},{"nodeType":"YulBlock","src":"6841:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6856:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6870:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6860:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6885:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6920:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6931:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6916:3:15"},"nodeType":"YulFunctionCall","src":"6916:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6940:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6895:20:15"},"nodeType":"YulFunctionCall","src":"6895:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6885:6:15"}]}]},{"nodeType":"YulBlock","src":"6968:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6983:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6997:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6987:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7013:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7048:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7059:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7044:3:15"},"nodeType":"YulFunctionCall","src":"7044:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7068:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"7023:20:15"},"nodeType":"YulFunctionCall","src":"7023:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7013:6:15"}]}]},{"nodeType":"YulBlock","src":"7096:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7111:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7125:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7115:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7141:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7176:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7187:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7172:3:15"},"nodeType":"YulFunctionCall","src":"7172:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7196:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7151:20:15"},"nodeType":"YulFunctionCall","src":"7151:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7141:6:15"}]}]},{"nodeType":"YulBlock","src":"7224:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7239:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7253:2:15","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7243:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7269:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7304:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7315:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7300:3:15"},"nodeType":"YulFunctionCall","src":"7300:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7324:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7279:20:15"},"nodeType":"YulFunctionCall","src":"7279:53:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7269:6:15"}]}]},{"nodeType":"YulBlock","src":"7352:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7367:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7381:3:15","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7371:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7398:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7432:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7443:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7428:3:15"},"nodeType":"YulFunctionCall","src":"7428:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7452:7:15"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"7408:19:15"},"nodeType":"YulFunctionCall","src":"7408:52:15"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"7398:6:15"}]}]},{"nodeType":"YulBlock","src":"7480:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7495:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7509:3:15","type":"","value":"160"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7499:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7526:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7561:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7572:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7557:3:15"},"nodeType":"YulFunctionCall","src":"7557:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7581:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7536:20:15"},"nodeType":"YulFunctionCall","src":"7536:53:15"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"7526:6:15"}]}]},{"nodeType":"YulBlock","src":"7609:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7624:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7638:3:15","type":"","value":"192"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7628:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7655:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7690:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7701:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7686:3:15"},"nodeType":"YulFunctionCall","src":"7686:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7710:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"7665:20:15"},"nodeType":"YulFunctionCall","src":"7665:53:15"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"7655:6:15"}]}]},{"nodeType":"YulBlock","src":"7738:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7753:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7767:3:15","type":"","value":"224"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7757:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7784:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7819:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7830:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7815:3:15"},"nodeType":"YulFunctionCall","src":"7815:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7839:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7794:20:15"},"nodeType":"YulFunctionCall","src":"7794:53:15"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"7784:6:15"}]}]},{"nodeType":"YulBlock","src":"7867:299:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7882:47:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7913:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"7924:3:15","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7909:3:15"},"nodeType":"YulFunctionCall","src":"7909:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7896:12:15"},"nodeType":"YulFunctionCall","src":"7896:33:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7886:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"7976:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"7978:77:15"},"nodeType":"YulFunctionCall","src":"7978:79:15"},"nodeType":"YulExpressionStatement","src":"7978:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7948:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7956:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7945:2:15"},"nodeType":"YulFunctionCall","src":"7945:30:15"},"nodeType":"YulIf","src":"7942:117:15"},{"nodeType":"YulAssignment","src":"8073:83:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8128:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"8139:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8124:3:15"},"nodeType":"YulFunctionCall","src":"8124:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8148:7:15"}],"functionName":{"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulIdentifier","src":"8091:32:15"},"nodeType":"YulFunctionCall","src":"8091:65:15"},"variableNames":[{"name":"value8","nodeType":"YulIdentifier","src":"8073:6:15"},{"name":"value9","nodeType":"YulIdentifier","src":"8081:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6599:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6610:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6622:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6630:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6638:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6646:6:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6654:6:15","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6662:6:15","type":""},{"name":"value6","nodeType":"YulTypedName","src":"6670:6:15","type":""},{"name":"value7","nodeType":"YulTypedName","src":"6678:6:15","type":""},{"name":"value8","nodeType":"YulTypedName","src":"6686:6:15","type":""},{"name":"value9","nodeType":"YulTypedName","src":"6694:6:15","type":""}],"src":"6480:1693:15"},{"body":{"nodeType":"YulBlock","src":"8244:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8261:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8284:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8266:17:15"},"nodeType":"YulFunctionCall","src":"8266:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8254:6:15"},"nodeType":"YulFunctionCall","src":"8254:37:15"},"nodeType":"YulExpressionStatement","src":"8254:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8232:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8239:3:15","type":""}],"src":"8179:118:15"},{"body":{"nodeType":"YulBlock","src":"8401:124:15","statements":[{"nodeType":"YulAssignment","src":"8411:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8423:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8434:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8419:3:15"},"nodeType":"YulFunctionCall","src":"8419:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8411:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8491:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8504:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8515:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8500:3:15"},"nodeType":"YulFunctionCall","src":"8500:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"8447:43:15"},"nodeType":"YulFunctionCall","src":"8447:71:15"},"nodeType":"YulExpressionStatement","src":"8447:71:15"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8373:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8385:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8396:4:15","type":""}],"src":"8303:222:15"},{"body":{"nodeType":"YulBlock","src":"8579:54:15","statements":[{"nodeType":"YulAssignment","src":"8589:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8607:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"8614:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8603:3:15"},"nodeType":"YulFunctionCall","src":"8603:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8623:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8619:3:15"},"nodeType":"YulFunctionCall","src":"8619:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8599:3:15"},"nodeType":"YulFunctionCall","src":"8599:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"8589:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8562:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"8572:6:15","type":""}],"src":"8531:102:15"},{"body":{"nodeType":"YulBlock","src":"8667:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8684:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8687:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8677:6:15"},"nodeType":"YulFunctionCall","src":"8677:88:15"},"nodeType":"YulExpressionStatement","src":"8677:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8781:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8784:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8774:6:15"},"nodeType":"YulFunctionCall","src":"8774:15:15"},"nodeType":"YulExpressionStatement","src":"8774:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8805:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8808:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8798:6:15"},"nodeType":"YulFunctionCall","src":"8798:15:15"},"nodeType":"YulExpressionStatement","src":"8798:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"8639:180:15"},{"body":{"nodeType":"YulBlock","src":"8868:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"8878:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8900:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8930:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8908:21:15"},"nodeType":"YulFunctionCall","src":"8908:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8896:3:15"},"nodeType":"YulFunctionCall","src":"8896:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"8882:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"9047:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"9049:16:15"},"nodeType":"YulFunctionCall","src":"9049:18:15"},"nodeType":"YulExpressionStatement","src":"9049:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"8990:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"9002:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8987:2:15"},"nodeType":"YulFunctionCall","src":"8987:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9026:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"9038:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9023:2:15"},"nodeType":"YulFunctionCall","src":"9023:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8984:2:15"},"nodeType":"YulFunctionCall","src":"8984:62:15"},"nodeType":"YulIf","src":"8981:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9085:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9089:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9078:6:15"},"nodeType":"YulFunctionCall","src":"9078:22:15"},"nodeType":"YulExpressionStatement","src":"9078:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"8854:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"8862:4:15","type":""}],"src":"8825:281:15"},{"body":{"nodeType":"YulBlock","src":"9153:88:15","statements":[{"nodeType":"YulAssignment","src":"9163:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"9173:18:15"},"nodeType":"YulFunctionCall","src":"9173:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9163:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9222:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"9230:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"9202:19:15"},"nodeType":"YulFunctionCall","src":"9202:33:15"},"nodeType":"YulExpressionStatement","src":"9202:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"9137:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"9146:6:15","type":""}],"src":"9112:129:15"},{"body":{"nodeType":"YulBlock","src":"9358:229:15","statements":[{"body":{"nodeType":"YulBlock","src":"9463:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"9465:16:15"},"nodeType":"YulFunctionCall","src":"9465:18:15"},"nodeType":"YulExpressionStatement","src":"9465:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9435:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9443:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9432:2:15"},"nodeType":"YulFunctionCall","src":"9432:30:15"},"nodeType":"YulIf","src":"9429:56:15"},{"nodeType":"YulAssignment","src":"9495:25:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9507:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9515:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"9503:3:15"},"nodeType":"YulFunctionCall","src":"9503:17:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"9495:4:15"}]},{"nodeType":"YulAssignment","src":"9557:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"9569:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"9575:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9565:3:15"},"nodeType":"YulFunctionCall","src":"9565:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"9557:4:15"}]}]},"name":"array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"9342:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"9353:4:15","type":""}],"src":"9247:340:15"},{"body":{"nodeType":"YulBlock","src":"9682:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9699:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9702:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9692:6:15"},"nodeType":"YulFunctionCall","src":"9692:12:15"},"nodeType":"YulExpressionStatement","src":"9692:12:15"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"9593:117:15"},{"body":{"nodeType":"YulBlock","src":"9805:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9822:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9825:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9815:6:15"},"nodeType":"YulFunctionCall","src":"9815:12:15"},"nodeType":"YulExpressionStatement","src":"9815:12:15"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"9716:117:15"},{"body":{"nodeType":"YulBlock","src":"9972:494:15","statements":[{"body":{"nodeType":"YulBlock","src":"10016:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"10018:77:15"},"nodeType":"YulFunctionCall","src":"10018:79:15"},"nodeType":"YulExpressionStatement","src":"10018:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"9993:3:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"9998:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9989:3:15"},"nodeType":"YulFunctionCall","src":"9989:19:15"},{"kind":"number","nodeType":"YulLiteral","src":"10010:4:15","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9985:3:15"},"nodeType":"YulFunctionCall","src":"9985:30:15"},"nodeType":"YulIf","src":"9982:117:15"},{"nodeType":"YulAssignment","src":"10108:30:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10133:4:15","type":"","value":"0x40"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"10117:15:15"},"nodeType":"YulFunctionCall","src":"10117:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"10108:5:15"}]},{"nodeType":"YulBlock","src":"10148:150:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10183:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10197:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10187:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10223:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"10230:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10219:3:15"},"nodeType":"YulFunctionCall","src":"10219:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10262:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10273:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10258:3:15"},"nodeType":"YulFunctionCall","src":"10258:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"10282:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"10237:20:15"},"nodeType":"YulFunctionCall","src":"10237:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10212:6:15"},"nodeType":"YulFunctionCall","src":"10212:75:15"},"nodeType":"YulExpressionStatement","src":"10212:75:15"}]},{"nodeType":"YulBlock","src":"10308:151:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10343:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10357:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10347:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10384:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"10391:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10380:3:15"},"nodeType":"YulFunctionCall","src":"10380:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10423:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10434:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10419:3:15"},"nodeType":"YulFunctionCall","src":"10419:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"10443:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"10398:20:15"},"nodeType":"YulFunctionCall","src":"10398:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10373:6:15"},"nodeType":"YulFunctionCall","src":"10373:75:15"},"nodeType":"YulExpressionStatement","src":"10373:75:15"}]}]},"name":"abi_decode_t_struct$_Institution_$3526_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9947:9:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"9958:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"9966:5:15","type":""}],"src":"9888:578:15"},{"body":{"nodeType":"YulBlock","src":"10654:666:15","statements":[{"nodeType":"YulAssignment","src":"10664:119:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10775:6:15"}],"functionName":{"name":"array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10689:85:15"},"nodeType":"YulFunctionCall","src":"10689:93:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"10673:15:15"},"nodeType":"YulFunctionCall","src":"10673:110:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"10664:5:15"}]},{"nodeType":"YulVariableDeclaration","src":"10792:16:15","value":{"name":"array","nodeType":"YulIdentifier","src":"10803:5:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"10796:3:15","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10825:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"10832:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10818:6:15"},"nodeType":"YulFunctionCall","src":"10818:21:15"},"nodeType":"YulExpressionStatement","src":"10818:21:15"},{"nodeType":"YulAssignment","src":"10848:23:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10859:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"10866:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10855:3:15"},"nodeType":"YulFunctionCall","src":"10855:16:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10848:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"10881:44:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10899:6:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10911:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"10919:4:15","type":"","value":"0x40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10907:3:15"},"nodeType":"YulFunctionCall","src":"10907:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10895:3:15"},"nodeType":"YulFunctionCall","src":"10895:30:15"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"10885:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"10953:103:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"10967:77:15"},"nodeType":"YulFunctionCall","src":"10967:79:15"},"nodeType":"YulExpressionStatement","src":"10967:79:15"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"10940:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"10948:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10937:2:15"},"nodeType":"YulFunctionCall","src":"10937:15:15"},"nodeType":"YulIf","src":"10934:122:15"},{"body":{"nodeType":"YulBlock","src":"11141:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"11156:21:15","value":{"name":"src","nodeType":"YulIdentifier","src":"11174:3:15"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"11160:10:15","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"11198:3:15"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"11253:10:15"},{"name":"end","nodeType":"YulIdentifier","src":"11265:3:15"}],"functionName":{"name":"abi_decode_t_struct$_Institution_$3526_memory_ptr","nodeType":"YulIdentifier","src":"11203:49:15"},"nodeType":"YulFunctionCall","src":"11203:66:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11191:6:15"},"nodeType":"YulFunctionCall","src":"11191:79:15"},"nodeType":"YulExpressionStatement","src":"11191:79:15"},{"nodeType":"YulAssignment","src":"11283:21:15","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"11294:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"11299:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11290:3:15"},"nodeType":"YulFunctionCall","src":"11290:14:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"11283:3:15"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11094:3:15"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"11099:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11091:2:15"},"nodeType":"YulFunctionCall","src":"11091:15:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11107:25:15","statements":[{"nodeType":"YulAssignment","src":"11109:21:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11120:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"11125:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11116:3:15"},"nodeType":"YulFunctionCall","src":"11116:14:15"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"11109:3:15"}]}]},"pre":{"nodeType":"YulBlock","src":"11069:21:15","statements":[{"nodeType":"YulVariableDeclaration","src":"11071:17:15","value":{"name":"offset","nodeType":"YulIdentifier","src":"11082:6:15"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"11075:3:15","type":""}]}]},"src":"11065:249:15"}]},"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"10624:6:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"10632:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"10640:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"10648:5:15","type":""}],"src":"10523:797:15"},{"body":{"nodeType":"YulBlock","src":"11483:322:15","statements":[{"body":{"nodeType":"YulBlock","src":"11532:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"11534:77:15"},"nodeType":"YulFunctionCall","src":"11534:79:15"},"nodeType":"YulExpressionStatement","src":"11534:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11511:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"11519:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11507:3:15"},"nodeType":"YulFunctionCall","src":"11507:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"11526:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11503:3:15"},"nodeType":"YulFunctionCall","src":"11503:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11496:6:15"},"nodeType":"YulFunctionCall","src":"11496:35:15"},"nodeType":"YulIf","src":"11493:122:15"},{"nodeType":"YulVariableDeclaration","src":"11624:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11651:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11638:12:15"},"nodeType":"YulFunctionCall","src":"11638:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11628:6:15","type":""}]},{"nodeType":"YulAssignment","src":"11667:132:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11772:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"11780:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11768:3:15"},"nodeType":"YulFunctionCall","src":"11768:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"11787:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"11795:3:15"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11676:91:15"},"nodeType":"YulFunctionCall","src":"11676:123:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"11667:5:15"}]}]},"name":"abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11461:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"11469:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"11477:5:15","type":""}],"src":"11377:428:15"},{"body":{"nodeType":"YulBlock","src":"11948:605:15","statements":[{"body":{"nodeType":"YulBlock","src":"11994:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"11996:77:15"},"nodeType":"YulFunctionCall","src":"11996:79:15"},"nodeType":"YulExpressionStatement","src":"11996:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11969:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"11978:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11965:3:15"},"nodeType":"YulFunctionCall","src":"11965:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"11990:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11961:3:15"},"nodeType":"YulFunctionCall","src":"11961:32:15"},"nodeType":"YulIf","src":"11958:119:15"},{"nodeType":"YulBlock","src":"12087:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12102:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"12116:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"12106:6:15","type":""}]},{"nodeType":"YulAssignment","src":"12131:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12166:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"12177:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12162:3:15"},"nodeType":"YulFunctionCall","src":"12162:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"12186:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"12141:20:15"},"nodeType":"YulFunctionCall","src":"12141:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12131:6:15"}]}]},{"nodeType":"YulBlock","src":"12214:332:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12229:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12260:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"12271:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12256:3:15"},"nodeType":"YulFunctionCall","src":"12256:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12243:12:15"},"nodeType":"YulFunctionCall","src":"12243:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"12233:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"12322:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"12324:77:15"},"nodeType":"YulFunctionCall","src":"12324:79:15"},"nodeType":"YulExpressionStatement","src":"12324:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12294:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12302:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12291:2:15"},"nodeType":"YulFunctionCall","src":"12291:30:15"},"nodeType":"YulIf","src":"12288:117:15"},{"nodeType":"YulAssignment","src":"12419:117:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12508:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"12519:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12504:3:15"},"nodeType":"YulFunctionCall","src":"12504:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"12528:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"12429:74:15"},"nodeType":"YulFunctionCall","src":"12429:107:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12419:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11910:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11921:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11933:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11941:6:15","type":""}],"src":"11811:742:15"},{"body":{"nodeType":"YulBlock","src":"12617:40:15","statements":[{"nodeType":"YulAssignment","src":"12628:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12644:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12638:5:15"},"nodeType":"YulFunctionCall","src":"12638:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12628:6:15"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12600:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"12610:6:15","type":""}],"src":"12559:98:15"},{"body":{"nodeType":"YulBlock","src":"12758:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12775:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"12780:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12768:6:15"},"nodeType":"YulFunctionCall","src":"12768:19:15"},"nodeType":"YulExpressionStatement","src":"12768:19:15"},{"nodeType":"YulAssignment","src":"12796:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12815:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"12820:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12811:3:15"},"nodeType":"YulFunctionCall","src":"12811:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"12796:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12730:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"12735:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"12746:11:15","type":""}],"src":"12663:168:15"},{"body":{"nodeType":"YulBlock","src":"12899:184:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12909:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"12918:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"12913:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"12978:63:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"13003:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"13008:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12999:3:15"},"nodeType":"YulFunctionCall","src":"12999:11:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"13022:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"13027:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13018:3:15"},"nodeType":"YulFunctionCall","src":"13018:11:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13012:5:15"},"nodeType":"YulFunctionCall","src":"13012:18:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12992:6:15"},"nodeType":"YulFunctionCall","src":"12992:39:15"},"nodeType":"YulExpressionStatement","src":"12992:39:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12939:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"12942:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12936:2:15"},"nodeType":"YulFunctionCall","src":"12936:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"12950:19:15","statements":[{"nodeType":"YulAssignment","src":"12952:15:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12961:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"12964:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12957:3:15"},"nodeType":"YulFunctionCall","src":"12957:10:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"12952:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"12932:3:15","statements":[]},"src":"12928:113:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"13061:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"13066:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13057:3:15"},"nodeType":"YulFunctionCall","src":"13057:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"13075:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13050:6:15"},"nodeType":"YulFunctionCall","src":"13050:27:15"},"nodeType":"YulExpressionStatement","src":"13050:27:15"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"12881:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"12886:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"12891:6:15","type":""}],"src":"12837:246:15"},{"body":{"nodeType":"YulBlock","src":"13179:283:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13189:52:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13235:5:15"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"13203:31:15"},"nodeType":"YulFunctionCall","src":"13203:38:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"13193:6:15","type":""}]},{"nodeType":"YulAssignment","src":"13250:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13315:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"13320:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13257:57:15"},"nodeType":"YulFunctionCall","src":"13257:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13250:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13375:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"13382:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13371:3:15"},"nodeType":"YulFunctionCall","src":"13371:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"13389:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"13394:6:15"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"13336:34:15"},"nodeType":"YulFunctionCall","src":"13336:65:15"},"nodeType":"YulExpressionStatement","src":"13336:65:15"},{"nodeType":"YulAssignment","src":"13410:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13421:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13448:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"13426:21:15"},"nodeType":"YulFunctionCall","src":"13426:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13417:3:15"},"nodeType":"YulFunctionCall","src":"13417:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13410:3:15"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13160:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13167:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13175:3:15","type":""}],"src":"13089:373:15"},{"body":{"nodeType":"YulBlock","src":"13584:193:15","statements":[{"nodeType":"YulAssignment","src":"13594:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13606:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"13617:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13602:3:15"},"nodeType":"YulFunctionCall","src":"13602:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13594:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13641:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"13652:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13637:3:15"},"nodeType":"YulFunctionCall","src":"13637:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13660:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"13666:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13656:3:15"},"nodeType":"YulFunctionCall","src":"13656:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13630:6:15"},"nodeType":"YulFunctionCall","src":"13630:47:15"},"nodeType":"YulExpressionStatement","src":"13630:47:15"},{"nodeType":"YulAssignment","src":"13686:84:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13756:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"13765:4:15"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13694:61:15"},"nodeType":"YulFunctionCall","src":"13694:76:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13686:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13556:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13568:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13579:4:15","type":""}],"src":"13468:309:15"},{"body":{"nodeType":"YulBlock","src":"13827:57:15","statements":[{"nodeType":"YulAssignment","src":"13837:41:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13852:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"13859:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13848:3:15"},"nodeType":"YulFunctionCall","src":"13848:30:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"13837:7:15"}]}]},"name":"cleanup_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13809:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"13819:7:15","type":""}],"src":"13783:101:15"},{"body":{"nodeType":"YulBlock","src":"13932:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"13988:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13997:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14000:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13990:6:15"},"nodeType":"YulFunctionCall","src":"13990:12:15"},"nodeType":"YulExpressionStatement","src":"13990:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13955:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13979:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"13962:16:15"},"nodeType":"YulFunctionCall","src":"13962:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"13952:2:15"},"nodeType":"YulFunctionCall","src":"13952:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13945:6:15"},"nodeType":"YulFunctionCall","src":"13945:42:15"},"nodeType":"YulIf","src":"13942:62:15"}]},"name":"validator_revert_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13925:5:15","type":""}],"src":"13890:120:15"},{"body":{"nodeType":"YulBlock","src":"14067:86:15","statements":[{"nodeType":"YulAssignment","src":"14077:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14099:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14086:12:15"},"nodeType":"YulFunctionCall","src":"14086:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14077:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14141:5:15"}],"functionName":{"name":"validator_revert_t_uint64","nodeType":"YulIdentifier","src":"14115:25:15"},"nodeType":"YulFunctionCall","src":"14115:32:15"},"nodeType":"YulExpressionStatement","src":"14115:32:15"}]},"name":"abi_decode_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"14045:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"14053:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"14061:5:15","type":""}],"src":"14016:137:15"},{"body":{"nodeType":"YulBlock","src":"14201:48:15","statements":[{"nodeType":"YulAssignment","src":"14211:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14236:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14229:6:15"},"nodeType":"YulFunctionCall","src":"14229:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14222:6:15"},"nodeType":"YulFunctionCall","src":"14222:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"14211:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14183:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"14193:7:15","type":""}],"src":"14159:90:15"},{"body":{"nodeType":"YulBlock","src":"14295:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"14349:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14358:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14361:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14351:6:15"},"nodeType":"YulFunctionCall","src":"14351:12:15"},"nodeType":"YulExpressionStatement","src":"14351:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14318:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14340:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"14325:14:15"},"nodeType":"YulFunctionCall","src":"14325:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"14315:2:15"},"nodeType":"YulFunctionCall","src":"14315:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14308:6:15"},"nodeType":"YulFunctionCall","src":"14308:40:15"},"nodeType":"YulIf","src":"14305:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14288:5:15","type":""}],"src":"14255:116:15"},{"body":{"nodeType":"YulBlock","src":"14426:84:15","statements":[{"nodeType":"YulAssignment","src":"14436:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14458:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14445:12:15"},"nodeType":"YulFunctionCall","src":"14445:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14436:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14498:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"14474:23:15"},"nodeType":"YulFunctionCall","src":"14474:30:15"},"nodeType":"YulExpressionStatement","src":"14474:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"14404:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"14412:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"14420:5:15","type":""}],"src":"14377:133:15"},{"body":{"nodeType":"YulBlock","src":"14663:902:15","statements":[{"body":{"nodeType":"YulBlock","src":"14710:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"14712:77:15"},"nodeType":"YulFunctionCall","src":"14712:79:15"},"nodeType":"YulExpressionStatement","src":"14712:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14684:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"14693:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14680:3:15"},"nodeType":"YulFunctionCall","src":"14680:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"14705:3:15","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14676:3:15"},"nodeType":"YulFunctionCall","src":"14676:33:15"},"nodeType":"YulIf","src":"14673:120:15"},{"nodeType":"YulBlock","src":"14803:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14818:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"14832:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14822:6:15","type":""}]},{"nodeType":"YulAssignment","src":"14847:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14882:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"14893:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14878:3:15"},"nodeType":"YulFunctionCall","src":"14878:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14902:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"14857:20:15"},"nodeType":"YulFunctionCall","src":"14857:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"14847:6:15"}]}]},{"nodeType":"YulBlock","src":"14930:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14945:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"14959:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14949:6:15","type":""}]},{"nodeType":"YulAssignment","src":"14975:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15010:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15021:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15006:3:15"},"nodeType":"YulFunctionCall","src":"15006:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15030:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"14985:20:15"},"nodeType":"YulFunctionCall","src":"14985:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"14975:6:15"}]}]},{"nodeType":"YulBlock","src":"15058:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15073:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15087:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15077:6:15","type":""}]},{"nodeType":"YulAssignment","src":"15103:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15138:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15149:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15134:3:15"},"nodeType":"YulFunctionCall","src":"15134:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15158:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"15113:20:15"},"nodeType":"YulFunctionCall","src":"15113:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"15103:6:15"}]}]},{"nodeType":"YulBlock","src":"15186:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15201:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15215:2:15","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15205:6:15","type":""}]},{"nodeType":"YulAssignment","src":"15231:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15266:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15277:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15262:3:15"},"nodeType":"YulFunctionCall","src":"15262:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15286:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"15241:20:15"},"nodeType":"YulFunctionCall","src":"15241:53:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"15231:6:15"}]}]},{"nodeType":"YulBlock","src":"15314:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15329:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15343:3:15","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15333:6:15","type":""}]},{"nodeType":"YulAssignment","src":"15360:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15394:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15405:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15390:3:15"},"nodeType":"YulFunctionCall","src":"15390:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15414:7:15"}],"functionName":{"name":"abi_decode_t_uint64","nodeType":"YulIdentifier","src":"15370:19:15"},"nodeType":"YulFunctionCall","src":"15370:52:15"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"15360:6:15"}]}]},{"nodeType":"YulBlock","src":"15442:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15457:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15471:3:15","type":"","value":"160"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15461:6:15","type":""}]},{"nodeType":"YulAssignment","src":"15488:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15520:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15531:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15516:3:15"},"nodeType":"YulFunctionCall","src":"15516:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15540:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"15498:17:15"},"nodeType":"YulFunctionCall","src":"15498:50:15"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"15488:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_addresst_uint64t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14593:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"14604:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14616:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14624:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"14632:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"14640:6:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"14648:6:15","type":""},{"name":"value5","nodeType":"YulTypedName","src":"14656:6:15","type":""}],"src":"14516:1049:15"},{"body":{"nodeType":"YulBlock","src":"15636:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15653:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15676:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"15658:17:15"},"nodeType":"YulFunctionCall","src":"15658:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15646:6:15"},"nodeType":"YulFunctionCall","src":"15646:37:15"},"nodeType":"YulExpressionStatement","src":"15646:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15624:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"15631:3:15","type":""}],"src":"15571:118:15"},{"body":{"nodeType":"YulBlock","src":"15821:206:15","statements":[{"nodeType":"YulAssignment","src":"15831:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15843:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"15854:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15839:3:15"},"nodeType":"YulFunctionCall","src":"15839:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15831:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15911:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15924:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"15935:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15920:3:15"},"nodeType":"YulFunctionCall","src":"15920:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"15867:43:15"},"nodeType":"YulFunctionCall","src":"15867:71:15"},"nodeType":"YulExpressionStatement","src":"15867:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"15992:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16005:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16016:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16001:3:15"},"nodeType":"YulFunctionCall","src":"16001:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"15948:43:15"},"nodeType":"YulFunctionCall","src":"15948:72:15"},"nodeType":"YulExpressionStatement","src":"15948:72:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15785:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15797:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15805:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15816:4:15","type":""}],"src":"15695:332:15"},{"body":{"nodeType":"YulBlock","src":"16099:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"16145:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"16147:77:15"},"nodeType":"YulFunctionCall","src":"16147:79:15"},"nodeType":"YulExpressionStatement","src":"16147:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"16120:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"16129:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16116:3:15"},"nodeType":"YulFunctionCall","src":"16116:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"16141:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"16112:3:15"},"nodeType":"YulFunctionCall","src":"16112:32:15"},"nodeType":"YulIf","src":"16109:119:15"},{"nodeType":"YulBlock","src":"16238:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16253:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16267:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"16257:6:15","type":""}]},{"nodeType":"YulAssignment","src":"16282:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16317:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"16328:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16313:3:15"},"nodeType":"YulFunctionCall","src":"16313:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"16337:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"16292:20:15"},"nodeType":"YulFunctionCall","src":"16292:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"16282:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16069:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"16080:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"16092:6:15","type":""}],"src":"16033:329:15"},{"body":{"nodeType":"YulBlock","src":"16427:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16444:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16464:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"16449:14:15"},"nodeType":"YulFunctionCall","src":"16449:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16437:6:15"},"nodeType":"YulFunctionCall","src":"16437:34:15"},"nodeType":"YulExpressionStatement","src":"16437:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16415:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16422:3:15","type":""}],"src":"16368:109:15"},{"body":{"nodeType":"YulBlock","src":"16575:118:15","statements":[{"nodeType":"YulAssignment","src":"16585:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16597:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16608:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16593:3:15"},"nodeType":"YulFunctionCall","src":"16593:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16585:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16659:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16672:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16683:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16668:3:15"},"nodeType":"YulFunctionCall","src":"16668:17:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"16621:37:15"},"nodeType":"YulFunctionCall","src":"16621:65:15"},"nodeType":"YulExpressionStatement","src":"16621:65:15"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16547:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16559:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16570:4:15","type":""}],"src":"16483:210:15"},{"body":{"nodeType":"YulBlock","src":"16754:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16771:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16794:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"16776:17:15"},"nodeType":"YulFunctionCall","src":"16776:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16764:6:15"},"nodeType":"YulFunctionCall","src":"16764:37:15"},"nodeType":"YulExpressionStatement","src":"16764:37:15"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16742:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16749:3:15","type":""}],"src":"16699:108:15"},{"body":{"nodeType":"YulBlock","src":"16868:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16885:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16908:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16890:17:15"},"nodeType":"YulFunctionCall","src":"16890:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16878:6:15"},"nodeType":"YulFunctionCall","src":"16878:37:15"},"nodeType":"YulExpressionStatement","src":"16878:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16856:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16863:3:15","type":""}],"src":"16813:108:15"},{"body":{"nodeType":"YulBlock","src":"16980:52:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16997:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17019:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"17002:16:15"},"nodeType":"YulFunctionCall","src":"17002:23:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16990:6:15"},"nodeType":"YulFunctionCall","src":"16990:36:15"},"nodeType":"YulExpressionStatement","src":"16990:36:15"}]},"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16968:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16975:3:15","type":""}],"src":"16927:105:15"},{"body":{"nodeType":"YulBlock","src":"17087:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17104:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17124:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"17109:14:15"},"nodeType":"YulFunctionCall","src":"17109:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17097:6:15"},"nodeType":"YulFunctionCall","src":"17097:34:15"},"nodeType":"YulExpressionStatement","src":"17097:34:15"}]},"name":"abi_encode_t_bool_to_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17075:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17082:3:15","type":""}],"src":"17038:99:15"},{"body":{"nodeType":"YulBlock","src":"17311:1651:15","statements":[{"nodeType":"YulVariableDeclaration","src":"17321:28:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17337:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17342:6:15","type":"","value":"0x0120"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17333:3:15"},"nodeType":"YulFunctionCall","src":"17333:16:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"17325:4:15","type":""}]},{"nodeType":"YulBlock","src":"17359:166:15","statements":[{"nodeType":"YulVariableDeclaration","src":"17396:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17426:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"17433:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17422:3:15"},"nodeType":"YulFunctionCall","src":"17422:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17416:5:15"},"nodeType":"YulFunctionCall","src":"17416:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"17400:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"17486:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17504:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17509:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17500:3:15"},"nodeType":"YulFunctionCall","src":"17500:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"17452:33:15"},"nodeType":"YulFunctionCall","src":"17452:63:15"},"nodeType":"YulExpressionStatement","src":"17452:63:15"}]},{"nodeType":"YulBlock","src":"17535:165:15","statements":[{"nodeType":"YulVariableDeclaration","src":"17571:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17601:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"17608:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17597:3:15"},"nodeType":"YulFunctionCall","src":"17597:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17591:5:15"},"nodeType":"YulFunctionCall","src":"17591:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"17575:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"17661:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17679:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17684:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17675:3:15"},"nodeType":"YulFunctionCall","src":"17675:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"17627:33:15"},"nodeType":"YulFunctionCall","src":"17627:63:15"},"nodeType":"YulExpressionStatement","src":"17627:63:15"}]},{"nodeType":"YulBlock","src":"17710:178:15","statements":[{"nodeType":"YulVariableDeclaration","src":"17759:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17789:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"17796:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17785:3:15"},"nodeType":"YulFunctionCall","src":"17785:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17779:5:15"},"nodeType":"YulFunctionCall","src":"17779:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"17763:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"17849:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17867:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17872:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17863:3:15"},"nodeType":"YulFunctionCall","src":"17863:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"17815:33:15"},"nodeType":"YulFunctionCall","src":"17815:63:15"},"nodeType":"YulExpressionStatement","src":"17815:63:15"}]},{"nodeType":"YulBlock","src":"17898:169:15","statements":[{"nodeType":"YulVariableDeclaration","src":"17938:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17968:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"17975:4:15","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17964:3:15"},"nodeType":"YulFunctionCall","src":"17964:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17958:5:15"},"nodeType":"YulFunctionCall","src":"17958:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"17942:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18028:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18046:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18051:4:15","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18042:3:15"},"nodeType":"YulFunctionCall","src":"18042:14:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"17994:33:15"},"nodeType":"YulFunctionCall","src":"17994:63:15"},"nodeType":"YulExpressionStatement","src":"17994:63:15"}]},{"nodeType":"YulBlock","src":"18077:162:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18112:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18142:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18149:4:15","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18138:3:15"},"nodeType":"YulFunctionCall","src":"18138:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18132:5:15"},"nodeType":"YulFunctionCall","src":"18132:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18116:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18200:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18218:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18223:4:15","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18214:3:15"},"nodeType":"YulFunctionCall","src":"18214:14:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulIdentifier","src":"18168:31:15"},"nodeType":"YulFunctionCall","src":"18168:61:15"},"nodeType":"YulExpressionStatement","src":"18168:61:15"}]},{"nodeType":"YulBlock","src":"18249:165:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18291:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18321:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18328:4:15","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18317:3:15"},"nodeType":"YulFunctionCall","src":"18317:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18311:5:15"},"nodeType":"YulFunctionCall","src":"18311:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18295:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18375:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18393:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18398:4:15","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18389:3:15"},"nodeType":"YulFunctionCall","src":"18389:14:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool","nodeType":"YulIdentifier","src":"18347:27:15"},"nodeType":"YulFunctionCall","src":"18347:57:15"},"nodeType":"YulExpressionStatement","src":"18347:57:15"}]},{"nodeType":"YulBlock","src":"18424:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18468:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18498:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18505:4:15","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18494:3:15"},"nodeType":"YulFunctionCall","src":"18494:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18488:5:15"},"nodeType":"YulFunctionCall","src":"18488:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18472:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18558:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18576:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18581:4:15","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18572:3:15"},"nodeType":"YulFunctionCall","src":"18572:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18524:33:15"},"nodeType":"YulFunctionCall","src":"18524:63:15"},"nodeType":"YulExpressionStatement","src":"18524:63:15"}]},{"nodeType":"YulBlock","src":"18607:168:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18648:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18678:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18685:4:15","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18674:3:15"},"nodeType":"YulFunctionCall","src":"18674:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18668:5:15"},"nodeType":"YulFunctionCall","src":"18668:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18652:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18736:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18754:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18759:4:15","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18750:3:15"},"nodeType":"YulFunctionCall","src":"18750:14:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulIdentifier","src":"18704:31:15"},"nodeType":"YulFunctionCall","src":"18704:61:15"},"nodeType":"YulExpressionStatement","src":"18704:61:15"}]},{"nodeType":"YulBlock","src":"18785:170:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18822:45:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18852:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18859:6:15","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18848:3:15"},"nodeType":"YulFunctionCall","src":"18848:18:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18842:5:15"},"nodeType":"YulFunctionCall","src":"18842:25:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18826:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18914:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18932:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18937:6:15","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18928:3:15"},"nodeType":"YulFunctionCall","src":"18928:16:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"18880:33:15"},"nodeType":"YulFunctionCall","src":"18880:65:15"},"nodeType":"YulExpressionStatement","src":"18880:65:15"}]}]},"name":"abi_encode_t_struct$_Order_$3841_memory_ptr_to_t_struct$_Order_$3841_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17298:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17305:3:15","type":""}],"src":"17199:1763:15"},{"body":{"nodeType":"YulBlock","src":"19112:171:15","statements":[{"nodeType":"YulAssignment","src":"19122:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19134:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19145:3:15","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19130:3:15"},"nodeType":"YulFunctionCall","src":"19130:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19122:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19249:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19262:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19273:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19258:3:15"},"nodeType":"YulFunctionCall","src":"19258:17:15"}],"functionName":{"name":"abi_encode_t_struct$_Order_$3841_memory_ptr_to_t_struct$_Order_$3841_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19159:89:15"},"nodeType":"YulFunctionCall","src":"19159:117:15"},"nodeType":"YulExpressionStatement","src":"19159:117:15"}]},"name":"abi_encode_tuple_t_struct$_Order_$3841_memory_ptr__to_t_struct$_Order_$3841_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19084:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19096:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19107:4:15","type":""}],"src":"18968:315:15"},{"body":{"nodeType":"YulBlock","src":"19372:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"19418:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"19420:77:15"},"nodeType":"YulFunctionCall","src":"19420:79:15"},"nodeType":"YulExpressionStatement","src":"19420:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"19393:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"19402:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19389:3:15"},"nodeType":"YulFunctionCall","src":"19389:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"19414:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"19385:3:15"},"nodeType":"YulFunctionCall","src":"19385:32:15"},"nodeType":"YulIf","src":"19382:119:15"},{"nodeType":"YulBlock","src":"19511:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19526:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"19540:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"19530:6:15","type":""}]},{"nodeType":"YulAssignment","src":"19555:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19590:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"19601:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19586:3:15"},"nodeType":"YulFunctionCall","src":"19586:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"19610:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"19565:20:15"},"nodeType":"YulFunctionCall","src":"19565:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"19555:6:15"}]}]},{"nodeType":"YulBlock","src":"19638:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19653:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"19667:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"19657:6:15","type":""}]},{"nodeType":"YulAssignment","src":"19683:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19718:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"19729:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19714:3:15"},"nodeType":"YulFunctionCall","src":"19714:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"19738:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"19693:20:15"},"nodeType":"YulFunctionCall","src":"19693:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"19683:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19334:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"19345:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"19357:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19365:6:15","type":""}],"src":"19289:474:15"},{"body":{"nodeType":"YulBlock","src":"19834:262:15","statements":[{"body":{"nodeType":"YulBlock","src":"19880:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"19882:77:15"},"nodeType":"YulFunctionCall","src":"19882:79:15"},"nodeType":"YulExpressionStatement","src":"19882:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"19855:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"19864:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19851:3:15"},"nodeType":"YulFunctionCall","src":"19851:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"19876:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"19847:3:15"},"nodeType":"YulFunctionCall","src":"19847:32:15"},"nodeType":"YulIf","src":"19844:119:15"},{"nodeType":"YulBlock","src":"19973:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19988:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"20002:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"19992:6:15","type":""}]},{"nodeType":"YulAssignment","src":"20017:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20051:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"20062:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20047:3:15"},"nodeType":"YulFunctionCall","src":"20047:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"20071:7:15"}],"functionName":{"name":"abi_decode_t_uint64","nodeType":"YulIdentifier","src":"20027:19:15"},"nodeType":"YulFunctionCall","src":"20027:52:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"20017:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19804:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"19815:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"19827:6:15","type":""}],"src":"19769:327:15"},{"body":{"nodeType":"YulBlock","src":"20344:395:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20354:26:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20370:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"20375:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20366:3:15"},"nodeType":"YulFunctionCall","src":"20366:14:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"20358:4:15","type":""}]},{"nodeType":"YulBlock","src":"20390:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20425:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20455:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"20462:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20451:3:15"},"nodeType":"YulFunctionCall","src":"20451:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20445:5:15"},"nodeType":"YulFunctionCall","src":"20445:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"20429:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"20515:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20533:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"20538:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20529:3:15"},"nodeType":"YulFunctionCall","src":"20529:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"20481:33:15"},"nodeType":"YulFunctionCall","src":"20481:63:15"},"nodeType":"YulExpressionStatement","src":"20481:63:15"}]},{"nodeType":"YulBlock","src":"20564:168:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20603:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20633:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"20640:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20629:3:15"},"nodeType":"YulFunctionCall","src":"20629:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20623:5:15"},"nodeType":"YulFunctionCall","src":"20623:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"20607:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"20693:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20711:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"20716:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20707:3:15"},"nodeType":"YulFunctionCall","src":"20707:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"20659:33:15"},"nodeType":"YulFunctionCall","src":"20659:63:15"},"nodeType":"YulExpressionStatement","src":"20659:63:15"}]}]},"name":"abi_encode_t_struct$_InstitutionByCode_$3531_memory_ptr_to_t_struct$_InstitutionByCode_$3531_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20331:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"20338:3:15","type":""}],"src":"20208:531:15"},{"body":{"nodeType":"YulBlock","src":"20913:194:15","statements":[{"nodeType":"YulAssignment","src":"20923:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20935:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20946:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20931:3:15"},"nodeType":"YulFunctionCall","src":"20931:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20923:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21073:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21086:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21097:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21082:3:15"},"nodeType":"YulFunctionCall","src":"21082:17:15"}],"functionName":{"name":"abi_encode_t_struct$_InstitutionByCode_$3531_memory_ptr_to_t_struct$_InstitutionByCode_$3531_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20959:113:15"},"nodeType":"YulFunctionCall","src":"20959:141:15"},"nodeType":"YulExpressionStatement","src":"20959:141:15"}]},"name":"abi_encode_tuple_t_struct$_InstitutionByCode_$3531_memory_ptr__to_t_struct$_InstitutionByCode_$3531_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20885:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20897:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20908:4:15","type":""}],"src":"20745:362:15"},{"body":{"nodeType":"YulBlock","src":"21211:124:15","statements":[{"nodeType":"YulAssignment","src":"21221:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21233:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21244:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21229:3:15"},"nodeType":"YulFunctionCall","src":"21229:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21221:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21301:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21314:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21325:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21310:3:15"},"nodeType":"YulFunctionCall","src":"21310:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21257:43:15"},"nodeType":"YulFunctionCall","src":"21257:71:15"},"nodeType":"YulExpressionStatement","src":"21257:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21183:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21195:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21206:4:15","type":""}],"src":"21113:222:15"},{"body":{"nodeType":"YulBlock","src":"21438:516:15","statements":[{"body":{"nodeType":"YulBlock","src":"21484:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"21486:77:15"},"nodeType":"YulFunctionCall","src":"21486:79:15"},"nodeType":"YulExpressionStatement","src":"21486:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"21459:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"21468:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21455:3:15"},"nodeType":"YulFunctionCall","src":"21455:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"21480:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"21451:3:15"},"nodeType":"YulFunctionCall","src":"21451:32:15"},"nodeType":"YulIf","src":"21448:119:15"},{"nodeType":"YulBlock","src":"21577:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21592:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"21606:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"21596:6:15","type":""}]},{"nodeType":"YulAssignment","src":"21621:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21656:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"21667:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21652:3:15"},"nodeType":"YulFunctionCall","src":"21652:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"21676:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"21631:20:15"},"nodeType":"YulFunctionCall","src":"21631:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"21621:6:15"}]}]},{"nodeType":"YulBlock","src":"21704:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21719:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"21733:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"21723:6:15","type":""}]},{"nodeType":"YulAssignment","src":"21749:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21784:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"21795:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21780:3:15"},"nodeType":"YulFunctionCall","src":"21780:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"21804:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"21759:20:15"},"nodeType":"YulFunctionCall","src":"21759:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"21749:6:15"}]}]},{"nodeType":"YulBlock","src":"21832:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21847:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"21861:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"21851:6:15","type":""}]},{"nodeType":"YulAssignment","src":"21877:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21909:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"21920:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21905:3:15"},"nodeType":"YulFunctionCall","src":"21905:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"21929:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"21887:17:15"},"nodeType":"YulFunctionCall","src":"21887:50:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"21877:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21392:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"21403:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"21415:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21423:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"21431:6:15","type":""}],"src":"21341:613:15"},{"body":{"nodeType":"YulBlock","src":"22023:52:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22040:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22062:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"22045:16:15"},"nodeType":"YulFunctionCall","src":"22045:23:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22033:6:15"},"nodeType":"YulFunctionCall","src":"22033:36:15"},"nodeType":"YulExpressionStatement","src":"22033:36:15"}]},"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22011:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22018:3:15","type":""}],"src":"21960:115:15"},{"body":{"nodeType":"YulBlock","src":"22146:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22163:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22186:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22168:17:15"},"nodeType":"YulFunctionCall","src":"22168:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22156:6:15"},"nodeType":"YulFunctionCall","src":"22156:37:15"},"nodeType":"YulExpressionStatement","src":"22156:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22134:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22141:3:15","type":""}],"src":"22081:118:15"},{"body":{"nodeType":"YulBlock","src":"22329:204:15","statements":[{"nodeType":"YulAssignment","src":"22339:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22351:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"22362:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22347:3:15"},"nodeType":"YulFunctionCall","src":"22347:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22339:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22417:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22430:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"22441:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22426:3:15"},"nodeType":"YulFunctionCall","src":"22426:17:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulIdentifier","src":"22375:41:15"},"nodeType":"YulFunctionCall","src":"22375:69:15"},"nodeType":"YulExpressionStatement","src":"22375:69:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"22498:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22511:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"22522:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22507:3:15"},"nodeType":"YulFunctionCall","src":"22507:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"22454:43:15"},"nodeType":"YulFunctionCall","src":"22454:72:15"},"nodeType":"YulExpressionStatement","src":"22454:72:15"}]},"name":"abi_encode_tuple_t_uint64_t_uint256__to_t_uint64_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22293:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22305:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22313:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22324:4:15","type":""}],"src":"22205:328:15"},{"body":{"nodeType":"YulBlock","src":"22626:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"22675:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"22677:77:15"},"nodeType":"YulFunctionCall","src":"22677:79:15"},"nodeType":"YulExpressionStatement","src":"22677:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22654:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"22662:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22650:3:15"},"nodeType":"YulFunctionCall","src":"22650:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"22669:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22646:3:15"},"nodeType":"YulFunctionCall","src":"22646:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"22639:6:15"},"nodeType":"YulFunctionCall","src":"22639:35:15"},"nodeType":"YulIf","src":"22636:122:15"},{"nodeType":"YulAssignment","src":"22767:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22790:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"22777:12:15"},"nodeType":"YulFunctionCall","src":"22777:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"22767:6:15"}]},{"body":{"nodeType":"YulBlock","src":"22840:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"22842:77:15"},"nodeType":"YulFunctionCall","src":"22842:79:15"},"nodeType":"YulExpressionStatement","src":"22842:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"22812:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"22820:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"22809:2:15"},"nodeType":"YulFunctionCall","src":"22809:30:15"},"nodeType":"YulIf","src":"22806:117:15"},{"nodeType":"YulAssignment","src":"22932:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22948:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"22956:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22944:3:15"},"nodeType":"YulFunctionCall","src":"22944:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"22932:8:15"}]},{"body":{"nodeType":"YulBlock","src":"23015:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"23017:77:15"},"nodeType":"YulFunctionCall","src":"23017:79:15"},"nodeType":"YulExpressionStatement","src":"23017:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"22980:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"22994:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23002:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"22990:3:15"},"nodeType":"YulFunctionCall","src":"22990:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22976:3:15"},"nodeType":"YulFunctionCall","src":"22976:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"23010:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"22973:2:15"},"nodeType":"YulFunctionCall","src":"22973:41:15"},"nodeType":"YulIf","src":"22970:128:15"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"22593:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"22601:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"22609:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"22619:6:15","type":""}],"src":"22552:552:15"},{"body":{"nodeType":"YulBlock","src":"23195:442:15","statements":[{"body":{"nodeType":"YulBlock","src":"23241:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"23243:77:15"},"nodeType":"YulFunctionCall","src":"23243:79:15"},"nodeType":"YulExpressionStatement","src":"23243:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"23216:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"23225:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23212:3:15"},"nodeType":"YulFunctionCall","src":"23212:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"23237:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23208:3:15"},"nodeType":"YulFunctionCall","src":"23208:32:15"},"nodeType":"YulIf","src":"23205:119:15"},{"nodeType":"YulBlock","src":"23334:296:15","statements":[{"nodeType":"YulVariableDeclaration","src":"23349:45:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23380:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23391:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23376:3:15"},"nodeType":"YulFunctionCall","src":"23376:17:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23363:12:15"},"nodeType":"YulFunctionCall","src":"23363:31:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23353:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"23441:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"23443:77:15"},"nodeType":"YulFunctionCall","src":"23443:79:15"},"nodeType":"YulExpressionStatement","src":"23443:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23413:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23421:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23410:2:15"},"nodeType":"YulFunctionCall","src":"23410:30:15"},"nodeType":"YulIf","src":"23407:117:15"},{"nodeType":"YulAssignment","src":"23538:82:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23592:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"23603:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23588:3:15"},"nodeType":"YulFunctionCall","src":"23588:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"23612:7:15"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"23556:31:15"},"nodeType":"YulFunctionCall","src":"23556:64:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"23538:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"23546:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23157:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"23168:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"23180:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23188:6:15","type":""}],"src":"23110:527:15"},{"body":{"nodeType":"YulBlock","src":"23743:519:15","statements":[{"body":{"nodeType":"YulBlock","src":"23789:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"23791:77:15"},"nodeType":"YulFunctionCall","src":"23791:79:15"},"nodeType":"YulExpressionStatement","src":"23791:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"23764:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"23773:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23760:3:15"},"nodeType":"YulFunctionCall","src":"23760:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"23785:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23756:3:15"},"nodeType":"YulFunctionCall","src":"23756:32:15"},"nodeType":"YulIf","src":"23753:119:15"},{"nodeType":"YulBlock","src":"23882:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"23897:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"23911:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23901:6:15","type":""}]},{"nodeType":"YulAssignment","src":"23926:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23961:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"23972:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23957:3:15"},"nodeType":"YulFunctionCall","src":"23957:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"23981:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"23936:20:15"},"nodeType":"YulFunctionCall","src":"23936:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"23926:6:15"}]}]},{"nodeType":"YulBlock","src":"24009:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24024:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"24038:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24028:6:15","type":""}]},{"nodeType":"YulAssignment","src":"24054:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24089:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24100:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24085:3:15"},"nodeType":"YulFunctionCall","src":"24085:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24109:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"24064:20:15"},"nodeType":"YulFunctionCall","src":"24064:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"24054:6:15"}]}]},{"nodeType":"YulBlock","src":"24137:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24152:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"24166:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24156:6:15","type":""}]},{"nodeType":"YulAssignment","src":"24182:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24217:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24228:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24213:3:15"},"nodeType":"YulFunctionCall","src":"24213:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24237:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"24192:20:15"},"nodeType":"YulFunctionCall","src":"24192:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"24182:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23697:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"23708:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"23720:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23728:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"23736:6:15","type":""}],"src":"23643:619:15"},{"body":{"nodeType":"YulBlock","src":"24351:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"24397:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"24399:77:15"},"nodeType":"YulFunctionCall","src":"24399:79:15"},"nodeType":"YulExpressionStatement","src":"24399:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"24372:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"24381:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24368:3:15"},"nodeType":"YulFunctionCall","src":"24368:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"24393:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"24364:3:15"},"nodeType":"YulFunctionCall","src":"24364:32:15"},"nodeType":"YulIf","src":"24361:119:15"},{"nodeType":"YulBlock","src":"24490:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24505:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"24519:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24509:6:15","type":""}]},{"nodeType":"YulAssignment","src":"24534:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24569:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24580:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24565:3:15"},"nodeType":"YulFunctionCall","src":"24565:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24589:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"24544:20:15"},"nodeType":"YulFunctionCall","src":"24544:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"24534:6:15"}]}]},{"nodeType":"YulBlock","src":"24617:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24632:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"24646:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24636:6:15","type":""}]},{"nodeType":"YulAssignment","src":"24662:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24697:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24708:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24693:3:15"},"nodeType":"YulFunctionCall","src":"24693:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24717:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"24672:20:15"},"nodeType":"YulFunctionCall","src":"24672:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"24662:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24313:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"24324:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"24336:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24344:6:15","type":""}],"src":"24268:474:15"},{"body":{"nodeType":"YulBlock","src":"24776:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24793:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24796:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24786:6:15"},"nodeType":"YulFunctionCall","src":"24786:88:15"},"nodeType":"YulExpressionStatement","src":"24786:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24890:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"24893:4:15","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24883:6:15"},"nodeType":"YulFunctionCall","src":"24883:15:15"},"nodeType":"YulExpressionStatement","src":"24883:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24914:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24917:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24907:6:15"},"nodeType":"YulFunctionCall","src":"24907:15:15"},"nodeType":"YulExpressionStatement","src":"24907:15:15"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"24748:180:15"},{"body":{"nodeType":"YulBlock","src":"24962:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24979:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24982:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24972:6:15"},"nodeType":"YulFunctionCall","src":"24972:88:15"},"nodeType":"YulExpressionStatement","src":"24972:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25076:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"25079:4:15","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25069:6:15"},"nodeType":"YulFunctionCall","src":"25069:15:15"},"nodeType":"YulExpressionStatement","src":"25069:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25100:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25103:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25093:6:15"},"nodeType":"YulFunctionCall","src":"25093:15:15"},"nodeType":"YulExpressionStatement","src":"25093:15:15"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"24934:180:15"},{"body":{"nodeType":"YulBlock","src":"25168:362:15","statements":[{"nodeType":"YulAssignment","src":"25178:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"25201:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"25183:17:15"},"nodeType":"YulFunctionCall","src":"25183:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"25178:1:15"}]},{"nodeType":"YulAssignment","src":"25212:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"25235:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"25217:17:15"},"nodeType":"YulFunctionCall","src":"25217:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"25212:1:15"}]},{"nodeType":"YulVariableDeclaration","src":"25246:28:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"25269:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"25272:1:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"25265:3:15"},"nodeType":"YulFunctionCall","src":"25265:9:15"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"25250:11:15","type":""}]},{"nodeType":"YulAssignment","src":"25283:41:15","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"25312:11:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"25294:17:15"},"nodeType":"YulFunctionCall","src":"25294:30:15"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"25283:7:15"}]},{"body":{"nodeType":"YulBlock","src":"25501:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"25503:16:15"},"nodeType":"YulFunctionCall","src":"25503:18:15"},"nodeType":"YulExpressionStatement","src":"25503:18:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"25434:1:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25427:6:15"},"nodeType":"YulFunctionCall","src":"25427:9:15"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"25457:1:15"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"25464:7:15"},{"name":"x","nodeType":"YulIdentifier","src":"25473:1:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"25460:3:15"},"nodeType":"YulFunctionCall","src":"25460:15:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"25454:2:15"},"nodeType":"YulFunctionCall","src":"25454:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"25407:2:15"},"nodeType":"YulFunctionCall","src":"25407:83:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25387:6:15"},"nodeType":"YulFunctionCall","src":"25387:113:15"},"nodeType":"YulIf","src":"25384:139:15"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"25151:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"25154:1:15","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"25160:7:15","type":""}],"src":"25120:410:15"},{"body":{"nodeType":"YulBlock","src":"25564:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25581:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25584:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25574:6:15"},"nodeType":"YulFunctionCall","src":"25574:88:15"},"nodeType":"YulExpressionStatement","src":"25574:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25678:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"25681:4:15","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25671:6:15"},"nodeType":"YulFunctionCall","src":"25671:15:15"},"nodeType":"YulExpressionStatement","src":"25671:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25702:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25705:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25695:6:15"},"nodeType":"YulFunctionCall","src":"25695:15:15"},"nodeType":"YulExpressionStatement","src":"25695:15:15"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"25536:180:15"},{"body":{"nodeType":"YulBlock","src":"25764:143:15","statements":[{"nodeType":"YulAssignment","src":"25774:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"25797:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"25779:17:15"},"nodeType":"YulFunctionCall","src":"25779:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"25774:1:15"}]},{"nodeType":"YulAssignment","src":"25808:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"25831:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"25813:17:15"},"nodeType":"YulFunctionCall","src":"25813:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"25808:1:15"}]},{"body":{"nodeType":"YulBlock","src":"25855:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"25857:16:15"},"nodeType":"YulFunctionCall","src":"25857:18:15"},"nodeType":"YulExpressionStatement","src":"25857:18:15"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"25852:1:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25845:6:15"},"nodeType":"YulFunctionCall","src":"25845:9:15"},"nodeType":"YulIf","src":"25842:35:15"},{"nodeType":"YulAssignment","src":"25887:14:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"25896:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"25899:1:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"25892:3:15"},"nodeType":"YulFunctionCall","src":"25892:9:15"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"25887:1:15"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"25753:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"25756:1:15","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"25762:1:15","type":""}],"src":"25722:185:15"},{"body":{"nodeType":"YulBlock","src":"26009:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26026:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"26031:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26019:6:15"},"nodeType":"YulFunctionCall","src":"26019:19:15"},"nodeType":"YulExpressionStatement","src":"26019:19:15"},{"nodeType":"YulAssignment","src":"26047:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26066:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"26071:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26062:3:15"},"nodeType":"YulFunctionCall","src":"26062:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"26047:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25981:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"25986:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"25997:11:15","type":""}],"src":"25913:169:15"},{"body":{"nodeType":"YulBlock","src":"26194:60:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"26216:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"26224:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26212:3:15"},"nodeType":"YulFunctionCall","src":"26212:14:15"},{"hexValue":"53656e646572466565546f6f48696768","kind":"string","nodeType":"YulLiteral","src":"26228:18:15","type":"","value":"SenderFeeTooHigh"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26205:6:15"},"nodeType":"YulFunctionCall","src":"26205:42:15"},"nodeType":"YulExpressionStatement","src":"26205:42:15"}]},"name":"store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"26186:6:15","type":""}],"src":"26088:166:15"},{"body":{"nodeType":"YulBlock","src":"26406:220:15","statements":[{"nodeType":"YulAssignment","src":"26416:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26482:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"26487:2:15","type":"","value":"16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26423:58:15"},"nodeType":"YulFunctionCall","src":"26423:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"26416:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26588:3:15"}],"functionName":{"name":"store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4","nodeType":"YulIdentifier","src":"26499:88:15"},"nodeType":"YulFunctionCall","src":"26499:93:15"},"nodeType":"YulExpressionStatement","src":"26499:93:15"},{"nodeType":"YulAssignment","src":"26601:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26612:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"26617:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26608:3:15"},"nodeType":"YulFunctionCall","src":"26608:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"26601:3:15"}]}]},"name":"abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26394:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"26402:3:15","type":""}],"src":"26260:366:15"},{"body":{"nodeType":"YulBlock","src":"26803:248:15","statements":[{"nodeType":"YulAssignment","src":"26813:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26825:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"26836:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26821:3:15"},"nodeType":"YulFunctionCall","src":"26821:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26813:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26860:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"26871:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26856:3:15"},"nodeType":"YulFunctionCall","src":"26856:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"26879:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"26885:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26875:3:15"},"nodeType":"YulFunctionCall","src":"26875:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26849:6:15"},"nodeType":"YulFunctionCall","src":"26849:47:15"},"nodeType":"YulExpressionStatement","src":"26849:47:15"},{"nodeType":"YulAssignment","src":"26905:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27039:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26913:124:15"},"nodeType":"YulFunctionCall","src":"26913:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26905:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26783:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"26798:4:15","type":""}],"src":"26632:419:15"},{"body":{"nodeType":"YulBlock","src":"27211:288:15","statements":[{"nodeType":"YulAssignment","src":"27221:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27233:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27244:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27229:3:15"},"nodeType":"YulFunctionCall","src":"27229:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27221:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"27301:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27314:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27325:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27310:3:15"},"nodeType":"YulFunctionCall","src":"27310:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27257:43:15"},"nodeType":"YulFunctionCall","src":"27257:71:15"},"nodeType":"YulExpressionStatement","src":"27257:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"27382:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27395:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27406:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27391:3:15"},"nodeType":"YulFunctionCall","src":"27391:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27338:43:15"},"nodeType":"YulFunctionCall","src":"27338:72:15"},"nodeType":"YulExpressionStatement","src":"27338:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"27464:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27477:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27488:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27473:3:15"},"nodeType":"YulFunctionCall","src":"27473:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"27420:43:15"},"nodeType":"YulFunctionCall","src":"27420:72:15"},"nodeType":"YulExpressionStatement","src":"27420:72:15"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27167:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"27179:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"27187:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"27195:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27206:4:15","type":""}],"src":"27057:442:15"},{"body":{"nodeType":"YulBlock","src":"27565:77:15","statements":[{"nodeType":"YulAssignment","src":"27575:22:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"27590:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27584:5:15"},"nodeType":"YulFunctionCall","src":"27584:13:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"27575:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27630:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"27606:23:15"},"nodeType":"YulFunctionCall","src":"27606:30:15"},"nodeType":"YulExpressionStatement","src":"27606:30:15"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"27543:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"27551:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"27559:5:15","type":""}],"src":"27505:137:15"},{"body":{"nodeType":"YulBlock","src":"27722:271:15","statements":[{"body":{"nodeType":"YulBlock","src":"27768:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"27770:77:15"},"nodeType":"YulFunctionCall","src":"27770:79:15"},"nodeType":"YulExpressionStatement","src":"27770:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"27743:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"27752:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27739:3:15"},"nodeType":"YulFunctionCall","src":"27739:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"27764:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"27735:3:15"},"nodeType":"YulFunctionCall","src":"27735:32:15"},"nodeType":"YulIf","src":"27732:119:15"},{"nodeType":"YulBlock","src":"27861:125:15","statements":[{"nodeType":"YulVariableDeclaration","src":"27876:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"27890:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"27880:6:15","type":""}]},{"nodeType":"YulAssignment","src":"27905:71:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27948:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"27959:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27944:3:15"},"nodeType":"YulFunctionCall","src":"27944:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"27968:7:15"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"27915:28:15"},"nodeType":"YulFunctionCall","src":"27915:61:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"27905:6:15"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27692:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"27703:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"27715:6:15","type":""}],"src":"27648:345:15"},{"body":{"nodeType":"YulBlock","src":"28042:190:15","statements":[{"nodeType":"YulAssignment","src":"28052:33:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28079:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"28061:17:15"},"nodeType":"YulFunctionCall","src":"28061:24:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"28052:5:15"}]},{"body":{"nodeType":"YulBlock","src":"28175:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"28177:16:15"},"nodeType":"YulFunctionCall","src":"28177:18:15"},"nodeType":"YulExpressionStatement","src":"28177:18:15"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28100:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"28107:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"28097:2:15"},"nodeType":"YulFunctionCall","src":"28097:77:15"},"nodeType":"YulIf","src":"28094:103:15"},{"nodeType":"YulAssignment","src":"28206:20:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28217:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"28224:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28213:3:15"},"nodeType":"YulFunctionCall","src":"28213:13:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"28206:3:15"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28028:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"28038:3:15","type":""}],"src":"27999:233:15"},{"body":{"nodeType":"YulBlock","src":"28364:206:15","statements":[{"nodeType":"YulAssignment","src":"28374:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28386:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28397:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28382:3:15"},"nodeType":"YulFunctionCall","src":"28382:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"28374:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"28454:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28467:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28478:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28463:3:15"},"nodeType":"YulFunctionCall","src":"28463:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"28410:43:15"},"nodeType":"YulFunctionCall","src":"28410:71:15"},"nodeType":"YulExpressionStatement","src":"28410:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"28535:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28548:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28559:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28544:3:15"},"nodeType":"YulFunctionCall","src":"28544:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"28491:43:15"},"nodeType":"YulFunctionCall","src":"28491:72:15"},"nodeType":"YulExpressionStatement","src":"28491:72:15"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28328:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"28340:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"28348:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"28359:4:15","type":""}],"src":"28238:332:15"},{"body":{"nodeType":"YulBlock","src":"28608:28:15","statements":[{"nodeType":"YulAssignment","src":"28618:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"28625:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"28618:3:15"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28594:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"28604:3:15","type":""}],"src":"28576:60:15"},{"body":{"nodeType":"YulBlock","src":"28701:81:15","statements":[{"nodeType":"YulAssignment","src":"28711:65:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28768:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"28751:16:15"},"nodeType":"YulFunctionCall","src":"28751:23:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"28742:8:15"},"nodeType":"YulFunctionCall","src":"28742:33:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"28724:17:15"},"nodeType":"YulFunctionCall","src":"28724:52:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"28711:9:15"}]}]},"name":"convert_t_uint96_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28681:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"28691:9:15","type":""}],"src":"28642:140:15"},{"body":{"nodeType":"YulBlock","src":"28852:65:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28869:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28904:5:15"}],"functionName":{"name":"convert_t_uint96_to_t_uint256","nodeType":"YulIdentifier","src":"28874:29:15"},"nodeType":"YulFunctionCall","src":"28874:36:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28862:6:15"},"nodeType":"YulFunctionCall","src":"28862:49:15"},"nodeType":"YulExpressionStatement","src":"28862:49:15"}]},"name":"abi_encode_t_uint96_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28840:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"28847:3:15","type":""}],"src":"28788:129:15"},{"body":{"nodeType":"YulBlock","src":"28987:82:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"29010:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"29015:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"29020:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"28997:12:15"},"nodeType":"YulFunctionCall","src":"28997:30:15"},"nodeType":"YulExpressionStatement","src":"28997:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"29047:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"29052:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29043:3:15"},"nodeType":"YulFunctionCall","src":"29043:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"29061:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29036:6:15"},"nodeType":"YulFunctionCall","src":"29036:27:15"},"nodeType":"YulExpressionStatement","src":"29036:27:15"}]},"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"28969:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"28974:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"28979:6:15","type":""}],"src":"28923:146:15"},{"body":{"nodeType":"YulBlock","src":"29201:215:15","statements":[{"nodeType":"YulAssignment","src":"29211:78:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29277:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"29282:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"29218:58:15"},"nodeType":"YulFunctionCall","src":"29218:71:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"29211:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"29336:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"29343:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"29348:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"29299:36:15"},"nodeType":"YulFunctionCall","src":"29299:56:15"},"nodeType":"YulExpressionStatement","src":"29299:56:15"},{"nodeType":"YulAssignment","src":"29364:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29375:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"29402:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"29380:21:15"},"nodeType":"YulFunctionCall","src":"29380:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29371:3:15"},"nodeType":"YulFunctionCall","src":"29371:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"29364:3:15"}]}]},"name":"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"29174:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"29181:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"29189:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"29197:3:15","type":""}],"src":"29099:317:15"},{"body":{"nodeType":"YulBlock","src":"29633:451:15","statements":[{"nodeType":"YulAssignment","src":"29643:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29655:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29666:3:15","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29651:3:15"},"nodeType":"YulFunctionCall","src":"29651:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29643:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"29723:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29736:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29747:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29732:3:15"},"nodeType":"YulFunctionCall","src":"29732:17:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"29680:42:15"},"nodeType":"YulFunctionCall","src":"29680:70:15"},"nodeType":"YulExpressionStatement","src":"29680:70:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"29804:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29817:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29828:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29813:3:15"},"nodeType":"YulFunctionCall","src":"29813:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"29760:43:15"},"nodeType":"YulFunctionCall","src":"29760:72:15"},"nodeType":"YulExpressionStatement","src":"29760:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"29886:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29899:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29910:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29895:3:15"},"nodeType":"YulFunctionCall","src":"29895:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"29842:43:15"},"nodeType":"YulFunctionCall","src":"29842:72:15"},"nodeType":"YulExpressionStatement","src":"29842:72:15"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29935:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29946:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29931:3:15"},"nodeType":"YulFunctionCall","src":"29931:18:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"29955:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"29961:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29951:3:15"},"nodeType":"YulFunctionCall","src":"29951:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29924:6:15"},"nodeType":"YulFunctionCall","src":"29924:48:15"},"nodeType":"YulExpressionStatement","src":"29924:48:15"},{"nodeType":"YulAssignment","src":"29981:96:15","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"30055:6:15"},{"name":"value4","nodeType":"YulIdentifier","src":"30063:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"30072:4:15"}],"functionName":{"name":"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"29989:65:15"},"nodeType":"YulFunctionCall","src":"29989:88:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29981:4:15"}]}]},"name":"abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29573:9:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"29585:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"29593:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"29601:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"29609:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"29617:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"29628:4:15","type":""}],"src":"29422:662:15"},{"body":{"nodeType":"YulBlock","src":"30118:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30135:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30138:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30128:6:15"},"nodeType":"YulFunctionCall","src":"30128:88:15"},"nodeType":"YulExpressionStatement","src":"30128:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30232:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"30235:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30225:6:15"},"nodeType":"YulFunctionCall","src":"30225:15:15"},"nodeType":"YulExpressionStatement","src":"30225:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30256:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30259:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"30249:6:15"},"nodeType":"YulFunctionCall","src":"30249:15:15"},"nodeType":"YulExpressionStatement","src":"30249:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"30090:180:15"},{"body":{"nodeType":"YulBlock","src":"30327:269:15","statements":[{"nodeType":"YulAssignment","src":"30337:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"30351:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"30357:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"30347:3:15"},"nodeType":"YulFunctionCall","src":"30347:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"30337:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"30368:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"30398:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"30404:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"30394:3:15"},"nodeType":"YulFunctionCall","src":"30394:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"30372:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"30445:51:15","statements":[{"nodeType":"YulAssignment","src":"30459:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"30473:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"30481:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"30469:3:15"},"nodeType":"YulFunctionCall","src":"30469:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"30459:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"30425:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"30418:6:15"},"nodeType":"YulFunctionCall","src":"30418:26:15"},"nodeType":"YulIf","src":"30415:81:15"},{"body":{"nodeType":"YulBlock","src":"30548:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"30562:16:15"},"nodeType":"YulFunctionCall","src":"30562:18:15"},"nodeType":"YulExpressionStatement","src":"30562:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"30512:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"30535:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"30543:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"30532:2:15"},"nodeType":"YulFunctionCall","src":"30532:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"30509:2:15"},"nodeType":"YulFunctionCall","src":"30509:38:15"},"nodeType":"YulIf","src":"30506:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"30311:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"30320:6:15","type":""}],"src":"30276:320:15"},{"body":{"nodeType":"YulBlock","src":"30708:58:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"30730:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"30738:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30726:3:15"},"nodeType":"YulFunctionCall","src":"30726:14:15"},{"hexValue":"4f6e6c7941676772656761746f72","kind":"string","nodeType":"YulLiteral","src":"30742:16:15","type":"","value":"OnlyAggregator"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30719:6:15"},"nodeType":"YulFunctionCall","src":"30719:40:15"},"nodeType":"YulExpressionStatement","src":"30719:40:15"}]},"name":"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"30700:6:15","type":""}],"src":"30602:164:15"},{"body":{"nodeType":"YulBlock","src":"30918:220:15","statements":[{"nodeType":"YulAssignment","src":"30928:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30994:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"30999:2:15","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"30935:58:15"},"nodeType":"YulFunctionCall","src":"30935:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"30928:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31100:3:15"}],"functionName":{"name":"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","nodeType":"YulIdentifier","src":"31011:88:15"},"nodeType":"YulFunctionCall","src":"31011:93:15"},"nodeType":"YulExpressionStatement","src":"31011:93:15"},{"nodeType":"YulAssignment","src":"31113:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31124:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"31129:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31120:3:15"},"nodeType":"YulFunctionCall","src":"31120:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"31113:3:15"}]}]},"name":"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"30906:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"30914:3:15","type":""}],"src":"30772:366:15"},{"body":{"nodeType":"YulBlock","src":"31315:248:15","statements":[{"nodeType":"YulAssignment","src":"31325:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31337:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"31348:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31333:3:15"},"nodeType":"YulFunctionCall","src":"31333:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31325:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31372:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"31383:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31368:3:15"},"nodeType":"YulFunctionCall","src":"31368:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"31391:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"31397:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"31387:3:15"},"nodeType":"YulFunctionCall","src":"31387:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31361:6:15"},"nodeType":"YulFunctionCall","src":"31361:47:15"},"nodeType":"YulExpressionStatement","src":"31361:47:15"},{"nodeType":"YulAssignment","src":"31417:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"31551:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31425:124:15"},"nodeType":"YulFunctionCall","src":"31425:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31417:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31295:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"31310:4:15","type":""}],"src":"31144:419:15"},{"body":{"nodeType":"YulBlock","src":"31675:58:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"31697:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"31705:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31693:3:15"},"nodeType":"YulFunctionCall","src":"31693:14:15"},{"hexValue":"4f7264657246756c66696c6c6564","kind":"string","nodeType":"YulLiteral","src":"31709:16:15","type":"","value":"OrderFulfilled"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31686:6:15"},"nodeType":"YulFunctionCall","src":"31686:40:15"},"nodeType":"YulExpressionStatement","src":"31686:40:15"}]},"name":"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"31667:6:15","type":""}],"src":"31569:164:15"},{"body":{"nodeType":"YulBlock","src":"31885:220:15","statements":[{"nodeType":"YulAssignment","src":"31895:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31961:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"31966:2:15","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31902:58:15"},"nodeType":"YulFunctionCall","src":"31902:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"31895:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32067:3:15"}],"functionName":{"name":"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","nodeType":"YulIdentifier","src":"31978:88:15"},"nodeType":"YulFunctionCall","src":"31978:93:15"},"nodeType":"YulExpressionStatement","src":"31978:93:15"},{"nodeType":"YulAssignment","src":"32080:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32091:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"32096:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32087:3:15"},"nodeType":"YulFunctionCall","src":"32087:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"32080:3:15"}]}]},"name":"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"31873:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"31881:3:15","type":""}],"src":"31739:366:15"},{"body":{"nodeType":"YulBlock","src":"32282:248:15","statements":[{"nodeType":"YulAssignment","src":"32292:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32304:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32315:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32300:3:15"},"nodeType":"YulFunctionCall","src":"32300:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"32292:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32339:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32350:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32335:3:15"},"nodeType":"YulFunctionCall","src":"32335:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"32358:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"32364:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"32354:3:15"},"nodeType":"YulFunctionCall","src":"32354:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32328:6:15"},"nodeType":"YulFunctionCall","src":"32328:47:15"},"nodeType":"YulExpressionStatement","src":"32328:47:15"},{"nodeType":"YulAssignment","src":"32384:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"32518:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"32392:124:15"},"nodeType":"YulFunctionCall","src":"32392:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"32384:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"32262:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"32277:4:15","type":""}],"src":"32111:419:15"},{"body":{"nodeType":"YulBlock","src":"32580:172:15","statements":[{"nodeType":"YulAssignment","src":"32590:24:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32612:1:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"32595:16:15"},"nodeType":"YulFunctionCall","src":"32595:19:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"32590:1:15"}]},{"nodeType":"YulAssignment","src":"32623:24:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"32645:1:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"32628:16:15"},"nodeType":"YulFunctionCall","src":"32628:19:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"32623:1:15"}]},{"nodeType":"YulAssignment","src":"32656:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32668:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"32671:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"32664:3:15"},"nodeType":"YulFunctionCall","src":"32664:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"32656:4:15"}]},{"body":{"nodeType":"YulBlock","src":"32723:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"32725:16:15"},"nodeType":"YulFunctionCall","src":"32725:18:15"},"nodeType":"YulExpressionStatement","src":"32725:18:15"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"32689:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"32695:26:15","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"32686:2:15"},"nodeType":"YulFunctionCall","src":"32686:36:15"},"nodeType":"YulIf","src":"32683:62:15"}]},"name":"checked_sub_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"32566:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"32569:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"32575:4:15","type":""}],"src":"32536:216:15"},{"body":{"nodeType":"YulBlock","src":"32816:80:15","statements":[{"nodeType":"YulAssignment","src":"32826:64:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"32882:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"32865:16:15"},"nodeType":"YulFunctionCall","src":"32865:23:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"32856:8:15"},"nodeType":"YulFunctionCall","src":"32856:33:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"32839:16:15"},"nodeType":"YulFunctionCall","src":"32839:51:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"32826:9:15"}]}]},"name":"convert_t_uint64_to_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"32796:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"32806:9:15","type":""}],"src":"32758:138:15"},{"body":{"nodeType":"YulBlock","src":"32965:64:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32982:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"33016:5:15"}],"functionName":{"name":"convert_t_uint64_to_t_uint96","nodeType":"YulIdentifier","src":"32987:28:15"},"nodeType":"YulFunctionCall","src":"32987:35:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32975:6:15"},"nodeType":"YulFunctionCall","src":"32975:48:15"},"nodeType":"YulExpressionStatement","src":"32975:48:15"}]},"name":"abi_encode_t_uint64_to_t_uint96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"32953:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"32960:3:15","type":""}],"src":"32902:127:15"},{"body":{"nodeType":"YulBlock","src":"33187:286:15","statements":[{"nodeType":"YulAssignment","src":"33197:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33209:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"33220:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33205:3:15"},"nodeType":"YulFunctionCall","src":"33205:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"33197:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"33277:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33290:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"33301:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33286:3:15"},"nodeType":"YulFunctionCall","src":"33286:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"33233:43:15"},"nodeType":"YulFunctionCall","src":"33233:71:15"},"nodeType":"YulExpressionStatement","src":"33233:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"33358:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33371:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"33382:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33367:3:15"},"nodeType":"YulFunctionCall","src":"33367:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"33314:43:15"},"nodeType":"YulFunctionCall","src":"33314:72:15"},"nodeType":"YulExpressionStatement","src":"33314:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"33438:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33451:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"33462:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33447:3:15"},"nodeType":"YulFunctionCall","src":"33447:18:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"33396:41:15"},"nodeType":"YulFunctionCall","src":"33396:70:15"},"nodeType":"YulExpressionStatement","src":"33396:70:15"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"33143:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"33155:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"33163:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"33171:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"33182:4:15","type":""}],"src":"33035:438:15"},{"body":{"nodeType":"YulBlock","src":"33585:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"33607:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"33615:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33603:3:15"},"nodeType":"YulFunctionCall","src":"33603:14:15"},{"hexValue":"50617963726573743a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"33619:24:15","type":"","value":"Paycrest: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33596:6:15"},"nodeType":"YulFunctionCall","src":"33596:48:15"},"nodeType":"YulExpressionStatement","src":"33596:48:15"}]},"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"33577:6:15","type":""}],"src":"33479:172:15"},{"body":{"nodeType":"YulBlock","src":"33803:220:15","statements":[{"nodeType":"YulAssignment","src":"33813:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33879:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"33884:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"33820:58:15"},"nodeType":"YulFunctionCall","src":"33820:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"33813:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33985:3:15"}],"functionName":{"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulIdentifier","src":"33896:88:15"},"nodeType":"YulFunctionCall","src":"33896:93:15"},"nodeType":"YulExpressionStatement","src":"33896:93:15"},{"nodeType":"YulAssignment","src":"33998:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"34009:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"34014:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34005:3:15"},"nodeType":"YulFunctionCall","src":"34005:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"33998:3:15"}]}]},"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"33791:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"33799:3:15","type":""}],"src":"33657:366:15"},{"body":{"nodeType":"YulBlock","src":"34200:248:15","statements":[{"nodeType":"YulAssignment","src":"34210:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34222:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34233:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34218:3:15"},"nodeType":"YulFunctionCall","src":"34218:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34210:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34257:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34268:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34253:3:15"},"nodeType":"YulFunctionCall","src":"34253:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"34276:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"34282:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"34272:3:15"},"nodeType":"YulFunctionCall","src":"34272:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34246:6:15"},"nodeType":"YulFunctionCall","src":"34246:47:15"},"nodeType":"YulExpressionStatement","src":"34246:47:15"},{"nodeType":"YulAssignment","src":"34302:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"34436:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"34310:124:15"},"nodeType":"YulFunctionCall","src":"34310:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34302:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"34180:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"34195:4:15","type":""}],"src":"34029:419:15"},{"body":{"nodeType":"YulBlock","src":"34550:122:15","statements":[{"nodeType":"YulAssignment","src":"34560:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34572:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34583:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34568:3:15"},"nodeType":"YulFunctionCall","src":"34568:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34560:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"34638:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34651:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34662:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34647:3:15"},"nodeType":"YulFunctionCall","src":"34647:17:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulIdentifier","src":"34596:41:15"},"nodeType":"YulFunctionCall","src":"34596:69:15"},"nodeType":"YulExpressionStatement","src":"34596:69:15"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"34522:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"34534:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"34545:4:15","type":""}],"src":"34454:218:15"},{"body":{"nodeType":"YulBlock","src":"34826:282:15","statements":[{"nodeType":"YulAssignment","src":"34836:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34848:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34859:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34844:3:15"},"nodeType":"YulFunctionCall","src":"34844:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34836:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"34916:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34929:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34940:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34925:3:15"},"nodeType":"YulFunctionCall","src":"34925:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"34872:43:15"},"nodeType":"YulFunctionCall","src":"34872:71:15"},"nodeType":"YulExpressionStatement","src":"34872:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"34997:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35010:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35021:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35006:3:15"},"nodeType":"YulFunctionCall","src":"35006:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"34953:43:15"},"nodeType":"YulFunctionCall","src":"34953:72:15"},"nodeType":"YulExpressionStatement","src":"34953:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"35073:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35086:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35097:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35082:3:15"},"nodeType":"YulFunctionCall","src":"35082:18:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"35035:37:15"},"nodeType":"YulFunctionCall","src":"35035:66:15"},"nodeType":"YulExpressionStatement","src":"35035:66:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"34782:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"34794:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"34802:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"34810:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"34821:4:15","type":""}],"src":"34678:430:15"},{"body":{"nodeType":"YulBlock","src":"35220:127:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"35242:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"35250:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35238:3:15"},"nodeType":"YulFunctionCall","src":"35238:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"35254:34:15","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35231:6:15"},"nodeType":"YulFunctionCall","src":"35231:58:15"},"nodeType":"YulExpressionStatement","src":"35231:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"35310:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"35318:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35306:3:15"},"nodeType":"YulFunctionCall","src":"35306:15:15"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"35323:16:15","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35299:6:15"},"nodeType":"YulFunctionCall","src":"35299:41:15"},"nodeType":"YulExpressionStatement","src":"35299:41:15"}]},"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"35212:6:15","type":""}],"src":"35114:233:15"},{"body":{"nodeType":"YulBlock","src":"35499:220:15","statements":[{"nodeType":"YulAssignment","src":"35509:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35575:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"35580:2:15","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"35516:58:15"},"nodeType":"YulFunctionCall","src":"35516:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"35509:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35681:3:15"}],"functionName":{"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nodeType":"YulIdentifier","src":"35592:88:15"},"nodeType":"YulFunctionCall","src":"35592:93:15"},"nodeType":"YulExpressionStatement","src":"35592:93:15"},{"nodeType":"YulAssignment","src":"35694:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35705:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"35710:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35701:3:15"},"nodeType":"YulFunctionCall","src":"35701:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"35694:3:15"}]}]},"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"35487:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"35495:3:15","type":""}],"src":"35353:366:15"},{"body":{"nodeType":"YulBlock","src":"35896:248:15","statements":[{"nodeType":"YulAssignment","src":"35906:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35918:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35929:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35914:3:15"},"nodeType":"YulFunctionCall","src":"35914:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35906:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35953:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35964:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35949:3:15"},"nodeType":"YulFunctionCall","src":"35949:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"35972:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"35978:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"35968:3:15"},"nodeType":"YulFunctionCall","src":"35968:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35942:6:15"},"nodeType":"YulFunctionCall","src":"35942:47:15"},"nodeType":"YulExpressionStatement","src":"35942:47:15"},{"nodeType":"YulAssignment","src":"35998:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"36132:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"36006:124:15"},"nodeType":"YulFunctionCall","src":"36006:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35998:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"35876:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"35891:4:15","type":""}],"src":"35725:419:15"},{"body":{"nodeType":"YulBlock","src":"36203:32:15","statements":[{"nodeType":"YulAssignment","src":"36213:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"36224:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"36213:7:15"}]}]},"name":"cleanup_t_rational_1_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36185:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"36195:7:15","type":""}],"src":"36150:85:15"},{"body":{"nodeType":"YulBlock","src":"36284:43:15","statements":[{"nodeType":"YulAssignment","src":"36294:27:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36309:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"36316:4:15","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"36305:3:15"},"nodeType":"YulFunctionCall","src":"36305:16:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"36294:7:15"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36266:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"36276:7:15","type":""}],"src":"36241:86:15"},{"body":{"nodeType":"YulBlock","src":"36399:88:15","statements":[{"nodeType":"YulAssignment","src":"36409:72:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36473:5:15"}],"functionName":{"name":"cleanup_t_rational_1_by_1","nodeType":"YulIdentifier","src":"36447:25:15"},"nodeType":"YulFunctionCall","src":"36447:32:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"36438:8:15"},"nodeType":"YulFunctionCall","src":"36438:42:15"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"36422:15:15"},"nodeType":"YulFunctionCall","src":"36422:59:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"36409:9:15"}]}]},"name":"convert_t_rational_1_by_1_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36379:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"36389:9:15","type":""}],"src":"36333:154:15"},{"body":{"nodeType":"YulBlock","src":"36564:72:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36581:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36623:5:15"}],"functionName":{"name":"convert_t_rational_1_by_1_to_t_uint8","nodeType":"YulIdentifier","src":"36586:36:15"},"nodeType":"YulFunctionCall","src":"36586:43:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"36574:6:15"},"nodeType":"YulFunctionCall","src":"36574:56:15"},"nodeType":"YulExpressionStatement","src":"36574:56:15"}]},"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36552:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"36559:3:15","type":""}],"src":"36493:143:15"},{"body":{"nodeType":"YulBlock","src":"36746:130:15","statements":[{"nodeType":"YulAssignment","src":"36756:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36768:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36779:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36764:3:15"},"nodeType":"YulFunctionCall","src":"36764:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"36756:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"36842:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36855:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36866:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36851:3:15"},"nodeType":"YulFunctionCall","src":"36851:17:15"}],"functionName":{"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"36792:49:15"},"nodeType":"YulFunctionCall","src":"36792:77:15"},"nodeType":"YulExpressionStatement","src":"36792:77:15"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"36718:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"36730:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"36741:4:15","type":""}],"src":"36642:234:15"},{"body":{"nodeType":"YulBlock","src":"36947:31:15","statements":[{"nodeType":"YulAssignment","src":"36958:13:15","value":{"name":"len","nodeType":"YulIdentifier","src":"36968:3:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"36958:6:15"}]}]},"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36925:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"36932:3:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"36940:6:15","type":""}],"src":"36882:96:15"},{"body":{"nodeType":"YulBlock","src":"37037:87:15","statements":[{"nodeType":"YulAssignment","src":"37047:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"37055:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"37047:4:15"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"37075:1:15","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"37078:3:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"37068:6:15"},"nodeType":"YulFunctionCall","src":"37068:14:15"},"nodeType":"YulExpressionStatement","src":"37068:14:15"},{"nodeType":"YulAssignment","src":"37091:26:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"37109:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"37112:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"37099:9:15"},"nodeType":"YulFunctionCall","src":"37099:18:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"37091:4:15"}]}]},"name":"array_dataslot_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"37024:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"37032:4:15","type":""}],"src":"36984:140:15"},{"body":{"nodeType":"YulBlock","src":"37174:49:15","statements":[{"nodeType":"YulAssignment","src":"37184:33:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37202:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"37209:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37198:3:15"},"nodeType":"YulFunctionCall","src":"37198:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"37214:2:15","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"37194:3:15"},"nodeType":"YulFunctionCall","src":"37194:23:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"37184:6:15"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37157:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"37167:6:15","type":""}],"src":"37130:93:15"},{"body":{"nodeType":"YulBlock","src":"37282:54:15","statements":[{"nodeType":"YulAssignment","src":"37292:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"37317:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"37323:5:15"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"37313:3:15"},"nodeType":"YulFunctionCall","src":"37313:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"37292:8:15"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"37257:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"37263:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"37273:8:15","type":""}],"src":"37229:107:15"},{"body":{"nodeType":"YulBlock","src":"37418:317:15","statements":[{"nodeType":"YulVariableDeclaration","src":"37428:35:15","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"37449:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"37461:1:15","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"37445:3:15"},"nodeType":"YulFunctionCall","src":"37445:18:15"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"37432:9:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"37472:109:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"37503:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"37514:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"37484:18:15"},"nodeType":"YulFunctionCall","src":"37484:97:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"37476:4:15","type":""}]},{"nodeType":"YulAssignment","src":"37590:51:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"37621:9:15"},{"name":"toInsert","nodeType":"YulIdentifier","src":"37632:8:15"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"37602:18:15"},"nodeType":"YulFunctionCall","src":"37602:39:15"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"37590:8:15"}]},{"nodeType":"YulAssignment","src":"37650:30:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37663:5:15"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"37674:4:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"37670:3:15"},"nodeType":"YulFunctionCall","src":"37670:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"37659:3:15"},"nodeType":"YulFunctionCall","src":"37659:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"37650:5:15"}]},{"nodeType":"YulAssignment","src":"37689:40:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37702:5:15"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"37713:8:15"},{"name":"mask","nodeType":"YulIdentifier","src":"37723:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"37709:3:15"},"nodeType":"YulFunctionCall","src":"37709:19:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"37699:2:15"},"nodeType":"YulFunctionCall","src":"37699:30:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"37689:6:15"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37379:5:15","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"37386:10:15","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"37398:8:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"37411:6:15","type":""}],"src":"37342:393:15"},{"body":{"nodeType":"YulBlock","src":"37801:82:15","statements":[{"nodeType":"YulAssignment","src":"37811:66:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37869:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"37851:17:15"},"nodeType":"YulFunctionCall","src":"37851:24:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"37842:8:15"},"nodeType":"YulFunctionCall","src":"37842:34:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"37824:17:15"},"nodeType":"YulFunctionCall","src":"37824:53:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"37811:9:15"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37781:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"37791:9:15","type":""}],"src":"37741:142:15"},{"body":{"nodeType":"YulBlock","src":"37936:28:15","statements":[{"nodeType":"YulAssignment","src":"37946:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"37953:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"37946:3:15"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37922:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"37932:3:15","type":""}],"src":"37889:75:15"},{"body":{"nodeType":"YulBlock","src":"38046:193:15","statements":[{"nodeType":"YulVariableDeclaration","src":"38056:63:15","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"38111:7:15"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"38080:30:15"},"nodeType":"YulFunctionCall","src":"38080:39:15"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"38060:16:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"38135:4:15"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"38175:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"38169:5:15"},"nodeType":"YulFunctionCall","src":"38169:11:15"},{"name":"offset","nodeType":"YulIdentifier","src":"38182:6:15"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"38214:16:15"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"38190:23:15"},"nodeType":"YulFunctionCall","src":"38190:41:15"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"38141:27:15"},"nodeType":"YulFunctionCall","src":"38141:91:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"38128:6:15"},"nodeType":"YulFunctionCall","src":"38128:105:15"},"nodeType":"YulExpressionStatement","src":"38128:105:15"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"38023:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"38029:6:15","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"38037:7:15","type":""}],"src":"37970:269:15"},{"body":{"nodeType":"YulBlock","src":"38294:24:15","statements":[{"nodeType":"YulAssignment","src":"38304:8:15","value":{"kind":"number","nodeType":"YulLiteral","src":"38311:1:15","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"38304:3:15"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"38290:3:15","type":""}],"src":"38245:73:15"},{"body":{"nodeType":"YulBlock","src":"38377:136:15","statements":[{"nodeType":"YulVariableDeclaration","src":"38387:46:15","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"38401:30:15"},"nodeType":"YulFunctionCall","src":"38401:32:15"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"38391:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"38486:4:15"},{"name":"offset","nodeType":"YulIdentifier","src":"38492:6:15"},{"name":"zero_0","nodeType":"YulIdentifier","src":"38500:6:15"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"38442:43:15"},"nodeType":"YulFunctionCall","src":"38442:65:15"},"nodeType":"YulExpressionStatement","src":"38442:65:15"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"38363:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"38369:6:15","type":""}],"src":"38324:189:15"},{"body":{"nodeType":"YulBlock","src":"38569:136:15","statements":[{"body":{"nodeType":"YulBlock","src":"38636:63:15","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"38680:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"38687:1:15","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"38650:29:15"},"nodeType":"YulFunctionCall","src":"38650:39:15"},"nodeType":"YulExpressionStatement","src":"38650:39:15"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"38589:5:15"},{"name":"end","nodeType":"YulIdentifier","src":"38596:3:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"38586:2:15"},"nodeType":"YulFunctionCall","src":"38586:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"38601:26:15","statements":[{"nodeType":"YulAssignment","src":"38603:22:15","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"38616:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"38623:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38612:3:15"},"nodeType":"YulFunctionCall","src":"38612:13:15"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"38603:5:15"}]}]},"pre":{"nodeType":"YulBlock","src":"38583:2:15","statements":[]},"src":"38579:120:15"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"38557:5:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"38564:3:15","type":""}],"src":"38519:186:15"},{"body":{"nodeType":"YulBlock","src":"38789:463:15","statements":[{"body":{"nodeType":"YulBlock","src":"38815:430:15","statements":[{"nodeType":"YulVariableDeclaration","src":"38829:53:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"38876:5:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"38845:30:15"},"nodeType":"YulFunctionCall","src":"38845:37:15"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"38833:8:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"38895:63:15","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"38918:8:15"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"38946:10:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"38928:17:15"},"nodeType":"YulFunctionCall","src":"38928:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38914:3:15"},"nodeType":"YulFunctionCall","src":"38914:44:15"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"38899:11:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"39115:27:15","statements":[{"nodeType":"YulAssignment","src":"39117:23:15","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"39132:8:15"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"39117:11:15"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"39099:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"39111:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"39096:2:15"},"nodeType":"YulFunctionCall","src":"39096:18:15"},"nodeType":"YulIf","src":"39093:49:15"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"39184:11:15"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"39201:8:15"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"39229:3:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"39211:17:15"},"nodeType":"YulFunctionCall","src":"39211:22:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39197:3:15"},"nodeType":"YulFunctionCall","src":"39197:37:15"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"39155:28:15"},"nodeType":"YulFunctionCall","src":"39155:80:15"},"nodeType":"YulExpressionStatement","src":"39155:80:15"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"38806:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"38811:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"38803:2:15"},"nodeType":"YulFunctionCall","src":"38803:11:15"},"nodeType":"YulIf","src":"38800:445:15"}]},"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"38765:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"38772:3:15","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"38777:10:15","type":""}],"src":"38711:541:15"},{"body":{"nodeType":"YulBlock","src":"39321:54:15","statements":[{"nodeType":"YulAssignment","src":"39331:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"39356:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"39362:5:15"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"39352:3:15"},"nodeType":"YulFunctionCall","src":"39352:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"39331:8:15"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"39296:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"39302:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"39312:8:15","type":""}],"src":"39258:117:15"},{"body":{"nodeType":"YulBlock","src":"39432:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"39442:68:15","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"39491:1:15","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"39494:5:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"39487:3:15"},"nodeType":"YulFunctionCall","src":"39487:13:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"39506:1:15","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"39502:3:15"},"nodeType":"YulFunctionCall","src":"39502:6:15"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"39458:28:15"},"nodeType":"YulFunctionCall","src":"39458:51:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"39454:3:15"},"nodeType":"YulFunctionCall","src":"39454:56:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"39446:4:15","type":""}]},{"nodeType":"YulAssignment","src":"39519:25:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"39533:4:15"},{"name":"mask","nodeType":"YulIdentifier","src":"39539:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"39529:3:15"},"nodeType":"YulFunctionCall","src":"39529:15:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"39519:6:15"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"39409:4:15","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"39415:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"39425:6:15","type":""}],"src":"39381:169:15"},{"body":{"nodeType":"YulBlock","src":"39636:214:15","statements":[{"nodeType":"YulAssignment","src":"39769:37:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"39796:4:15"},{"name":"len","nodeType":"YulIdentifier","src":"39802:3:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"39777:18:15"},"nodeType":"YulFunctionCall","src":"39777:29:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"39769:4:15"}]},{"nodeType":"YulAssignment","src":"39815:29:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"39826:4:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"39836:1:15","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"39839:3:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"39832:3:15"},"nodeType":"YulFunctionCall","src":"39832:11:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"39823:2:15"},"nodeType":"YulFunctionCall","src":"39823:21:15"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"39815:4:15"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"39617:4:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"39623:3:15","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"39631:4:15","type":""}],"src":"39555:295:15"},{"body":{"nodeType":"YulBlock","src":"39952:1301:15","statements":[{"nodeType":"YulVariableDeclaration","src":"39963:57:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"40011:3:15"},{"name":"len","nodeType":"YulIdentifier","src":"40016:3:15"}],"functionName":{"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"39977:33:15"},"nodeType":"YulFunctionCall","src":"39977:43:15"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"39967:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"40105:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"40107:16:15"},"nodeType":"YulFunctionCall","src":"40107:18:15"},"nodeType":"YulExpressionStatement","src":"40107:18:15"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"40077:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"40085:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"40074:2:15"},"nodeType":"YulFunctionCall","src":"40074:30:15"},"nodeType":"YulIf","src":"40071:56:15"},{"nodeType":"YulVariableDeclaration","src":"40137:52:15","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"40183:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"40177:5:15"},"nodeType":"YulFunctionCall","src":"40177:11:15"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"40151:25:15"},"nodeType":"YulFunctionCall","src":"40151:38:15"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"40141:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"40281:4:15"},{"name":"oldLen","nodeType":"YulIdentifier","src":"40287:6:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"40295:6:15"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulIdentifier","src":"40236:44:15"},"nodeType":"YulFunctionCall","src":"40236:66:15"},"nodeType":"YulExpressionStatement","src":"40236:66:15"},{"nodeType":"YulVariableDeclaration","src":"40312:18:15","value":{"kind":"number","nodeType":"YulLiteral","src":"40329:1:15","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"40316:9:15","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"40377:624:15","statements":[{"nodeType":"YulVariableDeclaration","src":"40391:37:15","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"40410:6:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40422:4:15","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"40418:3:15"},"nodeType":"YulFunctionCall","src":"40418:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"40406:3:15"},"nodeType":"YulFunctionCall","src":"40406:22:15"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"40395:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"40442:50:15","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"40487:4:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"40456:30:15"},"nodeType":"YulFunctionCall","src":"40456:36:15"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"40446:6:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"40505:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"40514:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"40509:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"40573:170:15","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"40598:6:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"40623:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"40628:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40619:3:15"},"nodeType":"YulFunctionCall","src":"40619:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"40606:12:15"},"nodeType":"YulFunctionCall","src":"40606:33:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"40591:6:15"},"nodeType":"YulFunctionCall","src":"40591:49:15"},"nodeType":"YulExpressionStatement","src":"40591:49:15"},{"nodeType":"YulAssignment","src":"40657:24:15","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"40671:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"40679:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40667:3:15"},"nodeType":"YulFunctionCall","src":"40667:14:15"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"40657:6:15"}]},{"nodeType":"YulAssignment","src":"40698:31:15","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"40715:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"40726:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40711:3:15"},"nodeType":"YulFunctionCall","src":"40711:18:15"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"40698:9:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"40539:1:15"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"40542:7:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"40536:2:15"},"nodeType":"YulFunctionCall","src":"40536:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"40551:21:15","statements":[{"nodeType":"YulAssignment","src":"40553:17:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"40562:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"40565:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40558:3:15"},"nodeType":"YulFunctionCall","src":"40558:12:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"40553:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"40532:3:15","statements":[]},"src":"40528:215:15"},{"body":{"nodeType":"YulBlock","src":"40779:163:15","statements":[{"nodeType":"YulVariableDeclaration","src":"40797:50:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"40831:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"40836:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40827:3:15"},"nodeType":"YulFunctionCall","src":"40827:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"40814:12:15"},"nodeType":"YulFunctionCall","src":"40814:33:15"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"40801:9:15","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"40871:6:15"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"40898:9:15"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"40913:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"40921:4:15","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"40909:3:15"},"nodeType":"YulFunctionCall","src":"40909:17:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"40879:18:15"},"nodeType":"YulFunctionCall","src":"40879:48:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"40864:6:15"},"nodeType":"YulFunctionCall","src":"40864:64:15"},"nodeType":"YulExpressionStatement","src":"40864:64:15"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"40762:7:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"40771:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"40759:2:15"},"nodeType":"YulFunctionCall","src":"40759:19:15"},"nodeType":"YulIf","src":"40756:186:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"40962:4:15"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"40976:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"40984:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"40972:3:15"},"nodeType":"YulFunctionCall","src":"40972:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"40988:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40968:3:15"},"nodeType":"YulFunctionCall","src":"40968:22:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"40955:6:15"},"nodeType":"YulFunctionCall","src":"40955:36:15"},"nodeType":"YulExpressionStatement","src":"40955:36:15"}]},"nodeType":"YulCase","src":"40370:631:15","value":{"kind":"number","nodeType":"YulLiteral","src":"40375:1:15","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"41018:229:15","statements":[{"nodeType":"YulVariableDeclaration","src":"41032:14:15","value":{"kind":"number","nodeType":"YulLiteral","src":"41045:1:15","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"41036:5:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"41069:74:15","statements":[{"nodeType":"YulAssignment","src":"41087:42:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"41113:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"41118:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41109:3:15"},"nodeType":"YulFunctionCall","src":"41109:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"41096:12:15"},"nodeType":"YulFunctionCall","src":"41096:33:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"41087:5:15"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"41062:6:15"},"nodeType":"YulIf","src":"41059:84:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"41163:4:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"41222:5:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"41229:6:15"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"41169:52:15"},"nodeType":"YulFunctionCall","src":"41169:67:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"41156:6:15"},"nodeType":"YulFunctionCall","src":"41156:81:15"},"nodeType":"YulExpressionStatement","src":"41156:81:15"}]},"nodeType":"YulCase","src":"41010:237:15","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"40350:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"40358:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"40347:2:15"},"nodeType":"YulFunctionCall","src":"40347:14:15"},"nodeType":"YulSwitch","src":"40340:907:15"}]},"name":"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"39936:4:15","type":""},{"name":"src","nodeType":"YulTypedName","src":"39942:3:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"39947:3:15","type":""}],"src":"39855:1398:15"},{"body":{"nodeType":"YulBlock","src":"41381:214:15","statements":[{"nodeType":"YulAssignment","src":"41391:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"41456:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"41461:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"41398:57:15"},"nodeType":"YulFunctionCall","src":"41398:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"41391:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"41515:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"41522:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"41527:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"41478:36:15"},"nodeType":"YulFunctionCall","src":"41478:56:15"},"nodeType":"YulExpressionStatement","src":"41478:56:15"},{"nodeType":"YulAssignment","src":"41543:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"41554:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"41581:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"41559:21:15"},"nodeType":"YulFunctionCall","src":"41559:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41550:3:15"},"nodeType":"YulFunctionCall","src":"41550:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"41543:3:15"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"41354:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"41361:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"41369:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"41377:3:15","type":""}],"src":"41281:314:15"},{"body":{"nodeType":"YulBlock","src":"41727:203:15","statements":[{"nodeType":"YulAssignment","src":"41737:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"41749:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"41760:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41745:3:15"},"nodeType":"YulFunctionCall","src":"41745:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"41737:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"41784:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"41795:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41780:3:15"},"nodeType":"YulFunctionCall","src":"41780:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"41803:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"41809:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"41799:3:15"},"nodeType":"YulFunctionCall","src":"41799:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"41773:6:15"},"nodeType":"YulFunctionCall","src":"41773:47:15"},"nodeType":"YulExpressionStatement","src":"41773:47:15"},{"nodeType":"YulAssignment","src":"41829:94:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"41901:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"41909:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"41918:4:15"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"41837:63:15"},"nodeType":"YulFunctionCall","src":"41837:86:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"41829:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"41691:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"41703:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"41711:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"41722:4:15","type":""}],"src":"41601:329:15"},{"body":{"nodeType":"YulBlock","src":"42042:119:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"42064:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"42072:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42060:3:15"},"nodeType":"YulFunctionCall","src":"42060:14:15"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"42076:34:15","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"42053:6:15"},"nodeType":"YulFunctionCall","src":"42053:58:15"},"nodeType":"YulExpressionStatement","src":"42053:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"42132:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"42140:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42128:3:15"},"nodeType":"YulFunctionCall","src":"42128:15:15"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"42145:8:15","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"42121:6:15"},"nodeType":"YulFunctionCall","src":"42121:33:15"},"nodeType":"YulExpressionStatement","src":"42121:33:15"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"42034:6:15","type":""}],"src":"41936:225:15"},{"body":{"nodeType":"YulBlock","src":"42313:220:15","statements":[{"nodeType":"YulAssignment","src":"42323:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42389:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"42394:2:15","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"42330:58:15"},"nodeType":"YulFunctionCall","src":"42330:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"42323:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42495:3:15"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"42406:88:15"},"nodeType":"YulFunctionCall","src":"42406:93:15"},"nodeType":"YulExpressionStatement","src":"42406:93:15"},{"nodeType":"YulAssignment","src":"42508:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42519:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"42524:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42515:3:15"},"nodeType":"YulFunctionCall","src":"42515:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"42508:3:15"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"42301:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"42309:3:15","type":""}],"src":"42167:366:15"},{"body":{"nodeType":"YulBlock","src":"42710:248:15","statements":[{"nodeType":"YulAssignment","src":"42720:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42732:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42743:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42728:3:15"},"nodeType":"YulFunctionCall","src":"42728:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"42720:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42767:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42778:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42763:3:15"},"nodeType":"YulFunctionCall","src":"42763:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"42786:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"42792:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"42782:3:15"},"nodeType":"YulFunctionCall","src":"42782:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"42756:6:15"},"nodeType":"YulFunctionCall","src":"42756:47:15"},"nodeType":"YulExpressionStatement","src":"42756:47:15"},{"nodeType":"YulAssignment","src":"42812:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"42946:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"42820:124:15"},"nodeType":"YulFunctionCall","src":"42820:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"42812:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"42690:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"42705:4:15","type":""}],"src":"42539:419:15"},{"body":{"nodeType":"YulBlock","src":"43070:61:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"43092:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"43100:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43088:3:15"},"nodeType":"YulFunctionCall","src":"43088:14:15"},{"hexValue":"546f6b656e4e6f74537570706f72746564","kind":"string","nodeType":"YulLiteral","src":"43104:19:15","type":"","value":"TokenNotSupported"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43081:6:15"},"nodeType":"YulFunctionCall","src":"43081:43:15"},"nodeType":"YulExpressionStatement","src":"43081:43:15"}]},"name":"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"43062:6:15","type":""}],"src":"42964:167:15"},{"body":{"nodeType":"YulBlock","src":"43283:220:15","statements":[{"nodeType":"YulAssignment","src":"43293:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43359:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"43364:2:15","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"43300:58:15"},"nodeType":"YulFunctionCall","src":"43300:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"43293:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43465:3:15"}],"functionName":{"name":"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","nodeType":"YulIdentifier","src":"43376:88:15"},"nodeType":"YulFunctionCall","src":"43376:93:15"},"nodeType":"YulExpressionStatement","src":"43376:93:15"},{"nodeType":"YulAssignment","src":"43478:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43489:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"43494:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43485:3:15"},"nodeType":"YulFunctionCall","src":"43485:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"43478:3:15"}]}]},"name":"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"43271:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"43279:3:15","type":""}],"src":"43137:366:15"},{"body":{"nodeType":"YulBlock","src":"43680:248:15","statements":[{"nodeType":"YulAssignment","src":"43690:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"43702:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"43713:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43698:3:15"},"nodeType":"YulFunctionCall","src":"43698:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"43690:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"43737:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"43748:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43733:3:15"},"nodeType":"YulFunctionCall","src":"43733:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"43756:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"43762:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"43752:3:15"},"nodeType":"YulFunctionCall","src":"43752:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43726:6:15"},"nodeType":"YulFunctionCall","src":"43726:47:15"},"nodeType":"YulExpressionStatement","src":"43726:47:15"},{"nodeType":"YulAssignment","src":"43782:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"43916:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"43790:124:15"},"nodeType":"YulFunctionCall","src":"43790:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"43782:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"43660:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"43675:4:15","type":""}],"src":"43509:419:15"},{"body":{"nodeType":"YulBlock","src":"44040:56:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"44062:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"44070:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44058:3:15"},"nodeType":"YulFunctionCall","src":"44058:14:15"},{"hexValue":"416d6f756e7449735a65726f","kind":"string","nodeType":"YulLiteral","src":"44074:14:15","type":"","value":"AmountIsZero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"44051:6:15"},"nodeType":"YulFunctionCall","src":"44051:38:15"},"nodeType":"YulExpressionStatement","src":"44051:38:15"}]},"name":"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"44032:6:15","type":""}],"src":"43934:162:15"},{"body":{"nodeType":"YulBlock","src":"44248:220:15","statements":[{"nodeType":"YulAssignment","src":"44258:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44324:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"44329:2:15","type":"","value":"12"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"44265:58:15"},"nodeType":"YulFunctionCall","src":"44265:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"44258:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44430:3:15"}],"functionName":{"name":"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","nodeType":"YulIdentifier","src":"44341:88:15"},"nodeType":"YulFunctionCall","src":"44341:93:15"},"nodeType":"YulExpressionStatement","src":"44341:93:15"},{"nodeType":"YulAssignment","src":"44443:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44454:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"44459:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44450:3:15"},"nodeType":"YulFunctionCall","src":"44450:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"44443:3:15"}]}]},"name":"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"44236:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"44244:3:15","type":""}],"src":"44102:366:15"},{"body":{"nodeType":"YulBlock","src":"44645:248:15","statements":[{"nodeType":"YulAssignment","src":"44655:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"44667:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"44678:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44663:3:15"},"nodeType":"YulFunctionCall","src":"44663:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"44655:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"44702:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"44713:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44698:3:15"},"nodeType":"YulFunctionCall","src":"44698:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"44721:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"44727:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"44717:3:15"},"nodeType":"YulFunctionCall","src":"44717:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"44691:6:15"},"nodeType":"YulFunctionCall","src":"44691:47:15"},"nodeType":"YulExpressionStatement","src":"44691:47:15"},{"nodeType":"YulAssignment","src":"44747:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"44881:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"44755:124:15"},"nodeType":"YulFunctionCall","src":"44755:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"44747:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"44625:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"44640:4:15","type":""}],"src":"44474:419:15"},{"body":{"nodeType":"YulBlock","src":"45005:60:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"45027:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"45035:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45023:3:15"},"nodeType":"YulFunctionCall","src":"45023:14:15"},{"hexValue":"5468726f775a65726f41646472657373","kind":"string","nodeType":"YulLiteral","src":"45039:18:15","type":"","value":"ThrowZeroAddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45016:6:15"},"nodeType":"YulFunctionCall","src":"45016:42:15"},"nodeType":"YulExpressionStatement","src":"45016:42:15"}]},"name":"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"44997:6:15","type":""}],"src":"44899:166:15"},{"body":{"nodeType":"YulBlock","src":"45217:220:15","statements":[{"nodeType":"YulAssignment","src":"45227:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45293:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"45298:2:15","type":"","value":"16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"45234:58:15"},"nodeType":"YulFunctionCall","src":"45234:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"45227:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45399:3:15"}],"functionName":{"name":"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","nodeType":"YulIdentifier","src":"45310:88:15"},"nodeType":"YulFunctionCall","src":"45310:93:15"},"nodeType":"YulExpressionStatement","src":"45310:93:15"},{"nodeType":"YulAssignment","src":"45412:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45423:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"45428:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45419:3:15"},"nodeType":"YulFunctionCall","src":"45419:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"45412:3:15"}]}]},"name":"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"45205:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"45213:3:15","type":""}],"src":"45071:366:15"},{"body":{"nodeType":"YulBlock","src":"45614:248:15","statements":[{"nodeType":"YulAssignment","src":"45624:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45636:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"45647:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45632:3:15"},"nodeType":"YulFunctionCall","src":"45632:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45624:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45671:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"45682:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45667:3:15"},"nodeType":"YulFunctionCall","src":"45667:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"45690:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"45696:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"45686:3:15"},"nodeType":"YulFunctionCall","src":"45686:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45660:6:15"},"nodeType":"YulFunctionCall","src":"45660:47:15"},"nodeType":"YulExpressionStatement","src":"45660:47:15"},{"nodeType":"YulAssignment","src":"45716:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"45850:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"45724:124:15"},"nodeType":"YulFunctionCall","src":"45724:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45716:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"45594:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"45609:4:15","type":""}],"src":"45443:419:15"},{"body":{"nodeType":"YulBlock","src":"45974:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"45996:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"46004:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45992:3:15"},"nodeType":"YulFunctionCall","src":"45992:14:15"},{"hexValue":"496e76616c6964496e737469747574696f6e436f6465","kind":"string","nodeType":"YulLiteral","src":"46008:24:15","type":"","value":"InvalidInstitutionCode"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45985:6:15"},"nodeType":"YulFunctionCall","src":"45985:48:15"},"nodeType":"YulExpressionStatement","src":"45985:48:15"}]},"name":"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"45966:6:15","type":""}],"src":"45868:172:15"},{"body":{"nodeType":"YulBlock","src":"46192:220:15","statements":[{"nodeType":"YulAssignment","src":"46202:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46268:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"46273:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"46209:58:15"},"nodeType":"YulFunctionCall","src":"46209:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"46202:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46374:3:15"}],"functionName":{"name":"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","nodeType":"YulIdentifier","src":"46285:88:15"},"nodeType":"YulFunctionCall","src":"46285:93:15"},"nodeType":"YulExpressionStatement","src":"46285:93:15"},{"nodeType":"YulAssignment","src":"46387:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46398:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"46403:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46394:3:15"},"nodeType":"YulFunctionCall","src":"46394:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"46387:3:15"}]}]},"name":"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"46180:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"46188:3:15","type":""}],"src":"46046:366:15"},{"body":{"nodeType":"YulBlock","src":"46589:248:15","statements":[{"nodeType":"YulAssignment","src":"46599:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"46611:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"46622:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46607:3:15"},"nodeType":"YulFunctionCall","src":"46607:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"46599:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"46646:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"46657:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46642:3:15"},"nodeType":"YulFunctionCall","src":"46642:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"46665:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"46671:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"46661:3:15"},"nodeType":"YulFunctionCall","src":"46661:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"46635:6:15"},"nodeType":"YulFunctionCall","src":"46635:47:15"},"nodeType":"YulExpressionStatement","src":"46635:47:15"},{"nodeType":"YulAssignment","src":"46691:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"46825:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"46699:124:15"},"nodeType":"YulFunctionCall","src":"46699:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"46691:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"46569:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"46584:4:15","type":""}],"src":"46418:419:15"},{"body":{"nodeType":"YulBlock","src":"46949:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"46971:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"46979:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46967:3:15"},"nodeType":"YulFunctionCall","src":"46967:14:15"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"46983:34:15","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"46960:6:15"},"nodeType":"YulFunctionCall","src":"46960:58:15"},"nodeType":"YulExpressionStatement","src":"46960:58:15"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"46941:6:15","type":""}],"src":"46843:182:15"},{"body":{"nodeType":"YulBlock","src":"47177:220:15","statements":[{"nodeType":"YulAssignment","src":"47187:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47253:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"47258:2:15","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"47194:58:15"},"nodeType":"YulFunctionCall","src":"47194:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"47187:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47359:3:15"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"47270:88:15"},"nodeType":"YulFunctionCall","src":"47270:93:15"},"nodeType":"YulExpressionStatement","src":"47270:93:15"},{"nodeType":"YulAssignment","src":"47372:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47383:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"47388:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47379:3:15"},"nodeType":"YulFunctionCall","src":"47379:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"47372:3:15"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"47165:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"47173:3:15","type":""}],"src":"47031:366:15"},{"body":{"nodeType":"YulBlock","src":"47574:248:15","statements":[{"nodeType":"YulAssignment","src":"47584:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47596:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"47607:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47592:3:15"},"nodeType":"YulFunctionCall","src":"47592:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"47584:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47631:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"47642:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47627:3:15"},"nodeType":"YulFunctionCall","src":"47627:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47650:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"47656:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"47646:3:15"},"nodeType":"YulFunctionCall","src":"47646:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47620:6:15"},"nodeType":"YulFunctionCall","src":"47620:47:15"},"nodeType":"YulExpressionStatement","src":"47620:47:15"},{"nodeType":"YulAssignment","src":"47676:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47810:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"47684:124:15"},"nodeType":"YulFunctionCall","src":"47684:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"47676:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"47554:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"47569:4:15","type":""}],"src":"47403:419:15"},{"body":{"nodeType":"YulBlock","src":"47873:149:15","statements":[{"nodeType":"YulAssignment","src":"47883:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"47906:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"47888:17:15"},"nodeType":"YulFunctionCall","src":"47888:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"47883:1:15"}]},{"nodeType":"YulAssignment","src":"47917:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"47940:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"47922:17:15"},"nodeType":"YulFunctionCall","src":"47922:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"47917:1:15"}]},{"nodeType":"YulAssignment","src":"47951:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"47963:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"47966:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"47959:3:15"},"nodeType":"YulFunctionCall","src":"47959:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"47951:4:15"}]},{"body":{"nodeType":"YulBlock","src":"47993:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"47995:16:15"},"nodeType":"YulFunctionCall","src":"47995:18:15"},"nodeType":"YulExpressionStatement","src":"47995:18:15"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"47984:4:15"},{"name":"x","nodeType":"YulIdentifier","src":"47990:1:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"47981:2:15"},"nodeType":"YulFunctionCall","src":"47981:11:15"},"nodeType":"YulIf","src":"47978:37:15"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"47859:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"47862:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"47868:4:15","type":""}],"src":"47828:194:15"},{"body":{"nodeType":"YulBlock","src":"48072:147:15","statements":[{"nodeType":"YulAssignment","src":"48082:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"48105:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"48087:17:15"},"nodeType":"YulFunctionCall","src":"48087:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"48082:1:15"}]},{"nodeType":"YulAssignment","src":"48116:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"48139:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"48121:17:15"},"nodeType":"YulFunctionCall","src":"48121:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"48116:1:15"}]},{"nodeType":"YulAssignment","src":"48150:16:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"48161:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"48164:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48157:3:15"},"nodeType":"YulFunctionCall","src":"48157:9:15"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"48150:3:15"}]},{"body":{"nodeType":"YulBlock","src":"48190:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"48192:16:15"},"nodeType":"YulFunctionCall","src":"48192:18:15"},"nodeType":"YulExpressionStatement","src":"48192:18:15"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"48182:1:15"},{"name":"sum","nodeType":"YulIdentifier","src":"48185:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"48179:2:15"},"nodeType":"YulFunctionCall","src":"48179:10:15"},"nodeType":"YulIf","src":"48176:36:15"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"48059:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"48062:1:15","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"48068:3:15","type":""}],"src":"48028:191:15"},{"body":{"nodeType":"YulBlock","src":"48331:124:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"48353:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"48361:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48349:3:15"},"nodeType":"YulFunctionCall","src":"48349:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"48365:34:15","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48342:6:15"},"nodeType":"YulFunctionCall","src":"48342:58:15"},"nodeType":"YulExpressionStatement","src":"48342:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"48421:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"48429:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48417:3:15"},"nodeType":"YulFunctionCall","src":"48417:15:15"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"48434:13:15","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48410:6:15"},"nodeType":"YulFunctionCall","src":"48410:38:15"},"nodeType":"YulExpressionStatement","src":"48410:38:15"}]},"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"48323:6:15","type":""}],"src":"48225:230:15"},{"body":{"nodeType":"YulBlock","src":"48607:220:15","statements":[{"nodeType":"YulAssignment","src":"48617:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48683:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"48688:2:15","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"48624:58:15"},"nodeType":"YulFunctionCall","src":"48624:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"48617:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48789:3:15"}],"functionName":{"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nodeType":"YulIdentifier","src":"48700:88:15"},"nodeType":"YulFunctionCall","src":"48700:93:15"},"nodeType":"YulExpressionStatement","src":"48700:93:15"},{"nodeType":"YulAssignment","src":"48802:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48813:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"48818:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48809:3:15"},"nodeType":"YulFunctionCall","src":"48809:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"48802:3:15"}]}]},"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"48595:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"48603:3:15","type":""}],"src":"48461:366:15"},{"body":{"nodeType":"YulBlock","src":"49004:248:15","statements":[{"nodeType":"YulAssignment","src":"49014:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49026:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"49037:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49022:3:15"},"nodeType":"YulFunctionCall","src":"49022:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49014:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49061:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"49072:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49057:3:15"},"nodeType":"YulFunctionCall","src":"49057:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"49080:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"49086:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"49076:3:15"},"nodeType":"YulFunctionCall","src":"49076:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"49050:6:15"},"nodeType":"YulFunctionCall","src":"49050:47:15"},"nodeType":"YulExpressionStatement","src":"49050:47:15"},{"nodeType":"YulAssignment","src":"49106:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"49240:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"49114:124:15"},"nodeType":"YulFunctionCall","src":"49114:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49106:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"48984:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"48999:4:15","type":""}],"src":"48833:419:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n // struct PaycrestSettingManager.Institution -> struct PaycrestSettingManager.Institution\n function abi_encode_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // code\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x00))\n }\n\n {\n // name\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encodeUpdatedPos_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr(value0, pos) -> updatedPos {\n abi_encode_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr(value0, pos)\n updatedPos := add(pos, 0x40)\n }\n\n function array_nextElement_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct PaycrestSettingManager.Institution[] -> struct PaycrestSettingManager.Institution[]\n function abi_encode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_struct$_Institution_$3526_memory_ptr_to_t_struct$_Institution_$3526_memory_ptr(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint96(value) {\n if iszero(eq(value, cleanup_t_uint96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint96(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // string\n function abi_decode_t_string_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint96(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 256))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value8, value9 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n // struct PaycrestSettingManager.Institution\n function abi_decode_t_struct$_Institution_$3526_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x40) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x40)\n\n {\n // code\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n {\n // name\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x40))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x40) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_struct$_Institution_$3526_memory_ptr(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_addresst_uint64t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 192) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_uint96_to_t_uint96(value, pos) {\n mstore(pos, cleanup_t_uint96(value))\n }\n\n function abi_encode_t_bool_to_t_bool(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n // struct IPaycrest.Order -> struct IPaycrest.Order\n function abi_encode_t_struct$_Order_$3841_memory_ptr_to_t_struct$_Order_$3841_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x0120)\n\n {\n // seller\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // token\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // senderFeeRecipient\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x40))\n }\n\n {\n // senderFee\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x60))\n }\n\n {\n // rate\n\n let memberValue0 := mload(add(value, 0x80))\n abi_encode_t_uint96_to_t_uint96(memberValue0, add(pos, 0x80))\n }\n\n {\n // isFulfilled\n\n let memberValue0 := mload(add(value, 0xa0))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0xa0))\n }\n\n {\n // refundAddress\n\n let memberValue0 := mload(add(value, 0xc0))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0xc0))\n }\n\n {\n // currentBPS\n\n let memberValue0 := mload(add(value, 0xe0))\n abi_encode_t_uint96_to_t_uint96(memberValue0, add(pos, 0xe0))\n }\n\n {\n // amount\n\n let memberValue0 := mload(add(value, 0x0100))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x0100))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_Order_$3841_memory_ptr__to_t_struct$_Order_$3841_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 288)\n\n abi_encode_t_struct$_Order_$3841_memory_ptr_to_t_struct$_Order_$3841_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n }\n\n // struct PaycrestSettingManager.InstitutionByCode -> struct PaycrestSettingManager.InstitutionByCode\n function abi_encode_t_struct$_InstitutionByCode_$3531_memory_ptr_to_t_struct$_InstitutionByCode_$3531_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // name\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x00))\n }\n\n {\n // currency\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_InstitutionByCode_$3531_memory_ptr__to_t_struct$_InstitutionByCode_$3531_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_InstitutionByCode_$3531_memory_ptr_to_t_struct$_InstitutionByCode_$3531_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_addresst_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint64_t_uint256__to_t_uint64_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4(memPtr) {\n\n mstore(add(memPtr, 0), \"SenderFeeTooHigh\")\n\n }\n\n function abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d3cba414c71660096f2f33e0114a439f35ba3656daa2c1cdeeda4e31a4145c4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint96_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint96(value)))\n }\n\n function abi_encode_t_uint96_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint96_to_t_uint256(value))\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // string -> string\n function abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint96_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(value3, value4, tail)\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243(memPtr) {\n\n mstore(add(memPtr, 0), \"OnlyAggregator\")\n\n }\n\n function abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5(memPtr) {\n\n mstore(add(memPtr, 0), \"OrderFulfilled\")\n\n }\n\n function abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint96(x, y) -> diff {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n diff := sub(x, y)\n\n if gt(diff, 0xffffffffffffffffffffffff) { panic_error_0x11() }\n\n }\n\n function convert_t_uint64_to_t_uint96(value) -> converted {\n converted := cleanup_t_uint96(identity(cleanup_t_uint64(value)))\n }\n\n function abi_encode_t_uint64_to_t_uint96_fromStack(value, pos) {\n mstore(pos, convert_t_uint64_to_t_uint96(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint64_to_t_uint96_fromStack(value2, add(headStart, 64))\n\n }\n\n function store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(memPtr) {\n\n mstore(add(memPtr, 0), \"Paycrest: zero address\")\n\n }\n\n function abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is alrea\")\n\n mstore(add(memPtr, 32), \"dy initialized\")\n\n }\n\n function abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function convert_t_rational_1_by_1_to_t_uint8(value) -> converted {\n converted := cleanup_t_uint8(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint8(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_bytes_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len) {\n\n let newLen := array_length_t_bytes_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1(memPtr) {\n\n mstore(add(memPtr, 0), \"TokenNotSupported\")\n\n }\n\n function abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2(memPtr) {\n\n mstore(add(memPtr, 0), \"AmountIsZero\")\n\n }\n\n function abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 12)\n store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7(memPtr) {\n\n mstore(add(memPtr, 0), \"ThrowZeroAddress\")\n\n }\n\n function abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5(memPtr) {\n\n mstore(add(memPtr, 0), \"InvalidInstitutionCode\")\n\n }\n\n function abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is not i\")\n\n mstore(add(memPtr, 32), \"nitializing\")\n\n }\n\n function abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101375760003560e01c806387490d86116100b8578063cb79455b1161007c578063cb79455b1461034e578063d8e8de341461036a578063d9caed121461039a578063e4683a79146103b6578063e8d6e0de146103e6578063f2fde38b1461040457610137565b806387490d86146102a95780638da5cb5b146102d957806399e3c0b4146102f7578063b810c63614610313578063c4d66de81461033257610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb14610271578063846307361461028d57610137565b8063026213381461013c5780632654ec7e1461016c578063322008821461019c5780633ad59dbc146101b85780635fe44cac146101d6575b600080fd5b610156600480360381019061015191906124bf565b610420565b60405161016391906125d9565b60405180910390f35b61018660048036038101906101819190612738565b61055e565b6040516101939190612832565b60405180910390f35b6101b660048036038101906101b191906129f1565b610a26565b005b6101c0610b3a565b6040516101cd9190612acc565b60405180910390f35b6101f060048036038101906101eb9190612b66565b610bcc565b6040516101fe929190612c02565b60405180910390f35b61020f610fc5565b005b61022b60048036038101906102269190612c2b565b610fd9565b6040516102389190612c67565b60405180910390f35b61025b600480360381019061025691906124bf565b61102f565b6040516102689190612d75565b60405180910390f35b61028b60048036038101906102869190612d91565b611260565b005b6102a760048036038101906102a29190612dd1565b6113ad565b005b6102c360048036038101906102be91906124bf565b611418565b6040516102d09190612e2d565b60405180910390f35b6102e1611459565b6040516102ee9190612e48565b60405180910390f35b610311600480360381019061030c9190612e63565b611483565b005b61031b611638565b604051610329929190612ed4565b60405180910390f35b61034c60048036038101906103479190612c2b565b61165d565b005b61036860048036038101906103639190612f53565b611829565b005b610384600480360381019061037f9190612c2b565b611880565b6040516103919190612c67565b60405180910390f35b6103b460048036038101906103af9190612fa0565b6118d6565b005b6103d060048036038101906103cb9190612ff3565b611962565b6040516103dd9190612c67565b60405180910390f35b6103ee611c0f565b6040516103fb9190612e48565b60405180910390f35b61041e60048036038101906104199190612c2b565b611c39565b005b60606000609d6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049d57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610457565b50505050905060008151905060008167ffffffffffffffff8111156104c5576104c461285e565b5b6040519080825280602002602001820160405280156104fe57816020015b6104eb612359565b8152602001906001900390816104e35790505b50905060005b828110156105525783818151811061051f5761051e613033565b5b602002602001015182828151811061053a57610539613033565b5b60200260200101819052508080600101915050610504565b50809350505050919050565b600061056d8b8b86898d611cbc565b606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168b61059c9190613091565b6105a69190613102565b8511156105e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105df90613190565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610625939291906131b0565b6020604051808303816000875af1158015610644573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066891906131fc565b5060a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906106b990613229565b91905055503360a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610710929190613271565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b815250609f600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610a10959493929190613311565b60405180910390a49a9950505050505050505050565b610a2e611ecb565b60008151905060005b81811015610b3457609d6000858152602001908152602001600020838281518110610a6557610a64613033565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610aca57610ac9613033565b5b602002602001015160200151815260200185815250609e6000858481518110610af657610af5613033565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610a37565b50505050565b606060688054610b499061338e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b759061338e565b8015610bc25780601f10610b9757610100808354040283529160200191610bc2565b820191906000526020600020905b815481529060010190602001808311610ba557829003601f168201915b5050505050905090565b600080606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c569061340b565b60405180910390fd5b609f6000888152602001908152602001600020600401600c9054906101000a900460ff1615610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90613477565b60405180910390fd5b6000609f600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff16609f60008a815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff16610d459190613497565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506000610d8a898767ffffffffffffffff1687611f49565b90506000609f60008b815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1603610e29576001609f60008b8152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f60008b8152602001908152602001600020600301541115610e2857610e278961205a565b5b5b600081600001511115610edc578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606660089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b8152600401610e97929190613271565b6020604051808303816000875af1158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda91906131fc565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b8152600401610f1b929190613271565b6020604051808303816000875af1158015610f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5e91906131fc565b508673ffffffffffffffffffffffffffffffffffffffff16897ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268c8b8a604051610faa93929190613508565b60405180910390a38882935093505050965096945050505050565b610fcd611ecb565b610fd760006121ae565b565b6000609b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611037612379565b609f6000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b611268611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce9061358b565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113405780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113a95780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113b5611ecb565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a98160405161140d91906135ab565b60405180910390a150565b61142061243b565b609e6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61148b611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f19061358b565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036115795780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115f85780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161162b939291906135c6565b60405180910390a1505050565b600080606660009054906101000a900467ffffffffffffffff16606554915091509091565b60008060019054906101000a900460ff1615905080801561168e5750600160008054906101000a900460ff1660ff16105b806116bb575061169d30612274565b1580156116ba5750600160008054906101000a900460ff1660ff16145b5b6116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f19061366f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611737576001600060016101000a81548160ff0219169083151502179055505b6001609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506117cc612297565b80156118255760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161181c91906136d7565b60405180910390a15b5050565b611831611ecb565b81816068918261184292919061389f565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef828260405161187492919061399c565b60405180910390a15050565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118de611ecb565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611919929190613271565b6020604051808303816000875af1158015611938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195c91906131fc565b50505050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb9061340b565b60405180910390fd5b609f6000848152602001908152602001600020600401600c9054906101000a900460ff1615611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90613477565b60405180910390fd5b6001609f6000858152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb609f600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609f6000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611b8a929190613271565b6020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd91906131fc565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611bfd9190612832565b60405180910390a26001905092915050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c41611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca790613a32565b60405180910390fd5b611cb9816121ae565b50565b609b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90613a9e565b60405180910390fd5b60008411611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613b0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190613b76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6090613b76565b60405180910390fd5b6000801b609e60008381526020019081526020016000206000015403611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb90613be2565b60405180910390fd5b5050505050565b611ed36122f0565b73ffffffffffffffffffffffffffffffffffffffff16611ef1611459565b73ffffffffffffffffffffffffffffffffffffffff1614611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613c4e565b60405180910390fd5b565b611f5161245b565b6000609f6000868152602001908152602001600020600601549050609f60008681526020019081526020016000206003015481611f8e9190613c6e565b9050606554846bffffffffffffffffffffffff1682611fad9190613091565b611fb79190613102565b826020018181525050606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168360200151611ff39190613091565b611ffd9190613102565b8260000181815250508160000151826020015161201a9190613c6e565b82602001818152505082156120525781600001518260200181815161203f9190613ca2565b9150818152505060008260000181815250505b509392505050565b6000609f600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000609f6000848152602001908152602001600020600301549050609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612121929190613271565b6020604051808303816000875af1158015612140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216491906131fc565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd90613d48565b60405180910390fd5b6122ee6122f8565b565b600033905090565b600060019054906101000a900460ff16612347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233e90613d48565b60405180910390fd5b6123576123526122f0565b6121ae565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61249c81612489565b81146124a757600080fd5b50565b6000813590506124b981612493565b92915050565b6000602082840312156124d5576124d461247f565b5b60006124e3848285016124aa565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61252181612489565b82525050565b60408201600082015161253d6000850182612518565b5060208201516125506020850182612518565b50505050565b60006125628383612527565b60408301905092915050565b6000602082019050919050565b6000612586826124ec565b61259081856124f7565b935061259b83612508565b8060005b838110156125cc5781516125b38882612556565b97506125be8361256e565b92505060018101905061259f565b5085935050505092915050565b600060208201905081810360008301526125f3818461257b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612626826125fb565b9050919050565b6126368161261b565b811461264157600080fd5b50565b6000813590506126538161262d565b92915050565b6000819050919050565b61266c81612659565b811461267757600080fd5b50565b60008135905061268981612663565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6126b08161268f565b81146126bb57600080fd5b50565b6000813590506126cd816126a7565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126f8576126f76126d3565b5b8235905067ffffffffffffffff811115612715576127146126d8565b5b602083019150836001820283011115612731576127306126dd565b5b9250929050565b6000806000806000806000806000806101208b8d03121561275c5761275b61247f565b5b600061276a8d828e01612644565b9a5050602061277b8d828e0161267a565b995050604061278c8d828e016124aa565b985050606061279d8d828e016124aa565b97505060806127ae8d828e016126be565b96505060a06127bf8d828e01612644565b95505060c06127d08d828e0161267a565b94505060e06127e18d828e01612644565b9350506101008b013567ffffffffffffffff81111561280357612802612484565b5b61280f8d828e016126e2565b92509250509295989b9194979a5092959850565b61282c81612489565b82525050565b60006020820190506128476000830184612823565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128968261284d565b810181811067ffffffffffffffff821117156128b5576128b461285e565b5b80604052505050565b60006128c8612475565b90506128d4828261288d565b919050565b600067ffffffffffffffff8211156128f4576128f361285e565b5b602082029050602081019050919050565b600080fd5b6000604082840312156129205761291f612905565b5b61292a60406128be565b9050600061293a848285016124aa565b600083015250602061294e848285016124aa565b60208301525092915050565b600061296d612968846128d9565b6128be565b905080838252602082019050604084028301858111156129905761298f6126dd565b5b835b818110156129b957806129a5888261290a565b845260208401935050604081019050612992565b5050509392505050565b600082601f8301126129d8576129d76126d3565b5b81356129e884826020860161295a565b91505092915050565b60008060408385031215612a0857612a0761247f565b5b6000612a16858286016124aa565b925050602083013567ffffffffffffffff811115612a3757612a36612484565b5b612a43858286016129c3565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a87578082015181840152602081019050612a6c565b60008484015250505050565b6000612a9e82612a4d565b612aa88185612a58565b9350612ab8818560208601612a69565b612ac18161284d565b840191505092915050565b60006020820190508181036000830152612ae68184612a93565b905092915050565b600067ffffffffffffffff82169050919050565b612b0b81612aee565b8114612b1657600080fd5b50565b600081359050612b2881612b02565b92915050565b60008115159050919050565b612b4381612b2e565b8114612b4e57600080fd5b50565b600081359050612b6081612b3a565b92915050565b60008060008060008060c08789031215612b8357612b8261247f565b5b6000612b9189828a016124aa565b9650506020612ba289828a016124aa565b9550506040612bb389828a016124aa565b9450506060612bc489828a01612644565b9350506080612bd589828a01612b19565b92505060a0612be689828a01612b51565b9150509295509295509295565b612bfc8161261b565b82525050565b6000604082019050612c176000830185612823565b612c246020830184612bf3565b9392505050565b600060208284031215612c4157612c4061247f565b5b6000612c4f84828501612644565b91505092915050565b612c6181612b2e565b82525050565b6000602082019050612c7c6000830184612c58565b92915050565b612c8b8161261b565b82525050565b612c9a81612659565b82525050565b612ca98161268f565b82525050565b612cb881612b2e565b82525050565b61012082016000820151612cd56000850182612c82565b506020820151612ce86020850182612c82565b506040820151612cfb6040850182612c82565b506060820151612d0e6060850182612c91565b506080820151612d216080850182612ca0565b5060a0820151612d3460a0850182612caf565b5060c0820151612d4760c0850182612c82565b5060e0820151612d5a60e0850182612ca0565b50610100820151612d6f610100850182612c91565b50505050565b600061012082019050612d8b6000830184612cbe565b92915050565b60008060408385031215612da857612da761247f565b5b6000612db6858286016124aa565b9250506020612dc785828601612644565b9150509250929050565b600060208284031215612de757612de661247f565b5b6000612df584828501612b19565b91505092915050565b604082016000820151612e146000850182612518565b506020820151612e276020850182612518565b50505050565b6000604082019050612e426000830184612dfe565b92915050565b6000602082019050612e5d6000830184612bf3565b92915050565b600080600060608486031215612e7c57612e7b61247f565b5b6000612e8a868287016124aa565b9350506020612e9b86828701612644565b9250506040612eac86828701612b51565b9150509250925092565b612ebf81612aee565b82525050565b612ece81612659565b82525050565b6000604082019050612ee96000830185612eb6565b612ef66020830184612ec5565b9392505050565b60008083601f840112612f1357612f126126d3565b5b8235905067ffffffffffffffff811115612f3057612f2f6126d8565b5b602083019150836001820283011115612f4c57612f4b6126dd565b5b9250929050565b60008060208385031215612f6a57612f6961247f565b5b600083013567ffffffffffffffff811115612f8857612f87612484565b5b612f9485828601612efd565b92509250509250929050565b600080600060608486031215612fb957612fb861247f565b5b6000612fc786828701612644565b9350506020612fd886828701612644565b9250506040612fe98682870161267a565b9150509250925092565b6000806040838503121561300a5761300961247f565b5b6000613018858286016124aa565b9250506020613029858286016124aa565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309c82612659565b91506130a783612659565b92508282026130b581612659565b915082820484148315176130cc576130cb613062565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061310d82612659565b915061311883612659565b925082613128576131276130d3565b5b828204905092915050565b600082825260208201905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b600061317a601083613133565b915061318582613144565b602082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b60006060820190506131c56000830186612bf3565b6131d26020830185612bf3565b6131df6040830184612ec5565b949350505050565b6000815190506131f681612b3a565b92915050565b6000602082840312156132125761321161247f565b5b6000613220848285016131e7565b91505092915050565b600061323482612659565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361326657613265613062565b5b600182019050919050565b60006040820190506132866000830185612bf3565b6132936020830184612ec5565b9392505050565b6000819050919050565b60006132bf6132ba6132b58461268f565b61329a565b612659565b9050919050565b6132cf816132a4565b82525050565b82818337600083830152505050565b60006132f08385613133565b93506132fd8385846132d5565b6133068361284d565b840190509392505050565b600060808201905061332660008301886132c6565b6133336020830187612823565b6133406040830186612823565b81810360608301526133538184866132e4565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133a657607f821691505b6020821081036133b9576133b861335f565b5b50919050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b60006133f5600e83613133565b9150613400826133bf565b602082019050919050565b60006020820190508181036000830152613424816133e8565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b6000613461600e83613133565b915061346c8261342b565b602082019050919050565b6000602082019050818103600083015261349081613454565b9050919050565b60006134a28261268f565b91506134ad8361268f565b925082820390506bffffffffffffffffffffffff8111156134d1576134d0613062565b5b92915050565b60006134f26134ed6134e884612aee565b61329a565b61268f565b9050919050565b613502816134d7565b82525050565b600060608201905061351d6000830186612823565b61352a6020830185612823565b61353760408301846134f9565b949350505050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000613575601683613133565b91506135808261353f565b602082019050919050565b600060208201905081810360008301526135a481613568565b9050919050565b60006020820190506135c06000830184612eb6565b92915050565b60006060820190506135db6000830186612823565b6135e86020830185612bf3565b6135f56040830184612c58565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613659602e83613133565b9150613664826135fd565b604082019050919050565b600060208201905081810360008301526136888161364c565b9050919050565b6000819050919050565b600060ff82169050919050565b60006136c16136bc6136b78461368f565b61329a565b613699565b9050919050565b6136d1816136a6565b82525050565b60006020820190506136ec60008301846136c8565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261375f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613722565b6137698683613722565b95508019841693508086168417925050509392505050565b600061379c61379761379284612659565b61329a565b612659565b9050919050565b6000819050919050565b6137b683613781565b6137ca6137c2826137a3565b84845461372f565b825550505050565b600090565b6137df6137d2565b6137ea8184846137ad565b505050565b5b8181101561380e576138036000826137d7565b6001810190506137f0565b5050565b601f82111561385357613824816136fd565b61382d84613712565b8101602085101561383c578190505b61385061384885613712565b8301826137ef565b50505b505050565b600082821c905092915050565b600061387660001984600802613858565b1980831691505092915050565b600061388f8383613865565b9150826002028217905092915050565b6138a983836136f2565b67ffffffffffffffff8111156138c2576138c161285e565b5b6138cc825461338e565b6138d7828285613812565b6000601f83116001811461390657600084156138f4578287013590505b6138fe8582613883565b865550613966565b601f198416613914866136fd565b60005b8281101561393c57848901358255600182019150602085019450602081019050613917565b868310156139595784890135613955601f891682613865565b8355505b6001600288020188555050505b50505050505050565b600061397b8385612a58565b93506139888385846132d5565b6139918361284d565b840190509392505050565b600060208201905081810360008301526139b781848661396f565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a1c602683613133565b9150613a27826139c0565b604082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613a88601183613133565b9150613a9382613a52565b602082019050919050565b60006020820190508181036000830152613ab781613a7b565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613af4600c83613133565b9150613aff82613abe565b602082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613b60601083613133565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613bcc601683613133565b9150613bd782613b96565b602082019050919050565b60006020820190508181036000830152613bfb81613bbf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c38602083613133565b9150613c4382613c02565b602082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b6000613c7982612659565b9150613c8483612659565b9250828203905081811115613c9c57613c9b613062565b5b92915050565b6000613cad82612659565b9150613cb883612659565b9250828201905080821115613cd057613ccf613062565b5b92915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613d32602b83613133565b9150613d3d82613cd6565b604082019050919050565b60006020820190508181036000830152613d6181613d25565b905091905056fea2646970667358221220f803c3247b0b726c64865b7a580dd6d825218d8aa6f111de58c8caa232a024ab64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x87490D86 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xCB79455B GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xD8E8DE34 EQ PUSH2 0x36A JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0xE4683A79 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xE8D6E0DE EQ PUSH2 0x3E6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x404 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x87490D86 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xB810C636 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x332 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x75151B63 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x768C6EC0 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x84630736 EQ PUSH2 0x28D JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x2621338 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x2654EC7E EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x32200882 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x3AD59DBC EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x5FE44CAC EQ PUSH2 0x1D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x24BF JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x25D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x2738 JUMP JUMPDEST PUSH2 0x55E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x2832 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x29F1 JUMP JUMPDEST PUSH2 0xA26 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C0 PUSH2 0xB3A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CD SWAP2 SWAP1 PUSH2 0x2ACC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP3 SWAP2 SWAP1 PUSH2 0x2C02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH2 0xFC5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH2 0xFD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x24BF JUMP JUMPDEST PUSH2 0x102F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x2D75 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x28B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x2D91 JUMP JUMPDEST PUSH2 0x1260 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x2DD1 JUMP JUMPDEST PUSH2 0x13AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0x24BF JUMP JUMPDEST PUSH2 0x1418 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x2E2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E1 PUSH2 0x1459 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2EE SWAP2 SWAP1 PUSH2 0x2E48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x311 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30C SWAP2 SWAP1 PUSH2 0x2E63 JUMP JUMPDEST PUSH2 0x1483 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x31B PUSH2 0x1638 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x329 SWAP3 SWAP2 SWAP1 PUSH2 0x2ED4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH2 0x165D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x368 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x363 SWAP2 SWAP1 PUSH2 0x2F53 JUMP JUMPDEST PUSH2 0x1829 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x384 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37F SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH2 0x1880 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x391 SWAP2 SWAP1 PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3AF SWAP2 SWAP1 PUSH2 0x2FA0 JUMP JUMPDEST PUSH2 0x18D6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2FF3 JUMP JUMPDEST PUSH2 0x1962 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DD SWAP2 SWAP1 PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EE PUSH2 0x1C0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP2 SWAP1 PUSH2 0x2E48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x2C2B JUMP JUMPDEST PUSH2 0x1C39 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x9D PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x49D JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x457 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C5 JUMPI PUSH2 0x4C4 PUSH2 0x285E JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x4EB PUSH2 0x2359 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x4E3 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x552 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x51F JUMPI PUSH2 0x51E PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53A JUMPI PUSH2 0x539 PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x504 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56D DUP12 DUP12 DUP7 DUP10 DUP14 PUSH2 0x1CBC JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP12 PUSH2 0x59C SWAP2 SWAP1 PUSH2 0x3091 JUMP JUMPDEST PUSH2 0x5A6 SWAP2 SWAP1 PUSH2 0x3102 JUMP JUMPDEST DUP6 GT ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5DF SWAP1 PUSH2 0x3190 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP14 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x625 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31B0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x644 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x668 SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP PUSH1 0xA0 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x6B9 SWAP1 PUSH2 0x3229 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP CALLER PUSH1 0xA0 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x710 SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x65 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP1 DUP11 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C205F90C01160D42994A0EB521810056D94BB82A1FCB038D7179C4158A1F15B DUP11 DUP14 DUP14 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xA10 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3311 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA2E PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB34 JUMPI PUSH1 0x9D PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA65 JUMPI PUSH2 0xA64 PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xACA JUMPI PUSH2 0xAC9 PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9E PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xAF6 JUMPI PUSH2 0xAF5 PUSH2 0x3033 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xA37 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x68 DUP1 SLOAD PUSH2 0xB49 SWAP1 PUSH2 0x338E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xB75 SWAP1 PUSH2 0x338E JUMP JUMPDEST DUP1 ISZERO PUSH2 0xBC2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB97 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xBC2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xBA5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC56 SWAP1 PUSH2 0x340B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCBA SWAP1 PUSH2 0x3477 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x9F PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD45 SWAP2 SWAP1 PUSH2 0x3497 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0xD8A DUP10 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x1F49 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE29 JUMPI PUSH1 0x1 PUSH1 0x9F PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD GT ISZERO PUSH2 0xE28 JUMPI PUSH2 0xE27 DUP10 PUSH2 0x205A JUMP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD GT ISZERO PUSH2 0xEDC JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x66 PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE97 SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEDA SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF1B SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF5E SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH32 0xF26DE978CBAEA68EA699627155A10AD53DF3321B0F95A08264C0CFD6D4C05326 DUP13 DUP12 DUP11 PUSH1 0x40 MLOAD PUSH2 0xFAA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3508 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP9 DUP3 SWAP4 POP SWAP4 POP POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFCD PUSH2 0x1ECB JUMP JUMPDEST PUSH2 0xFD7 PUSH1 0x0 PUSH2 0x21AE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9B PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1037 PUSH2 0x2379 JUMP JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1268 PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12CE SWAP1 PUSH2 0x358B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x1340 JUMPI DUP1 PUSH1 0x66 PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x13A9 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x13B5 PUSH2 0x1ECB JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC8CA786C100BC62A0DFFBE768B5F0B770D84E8604C5DE54B54197B9066BB42A9 DUP2 PUSH1 0x40 MLOAD PUSH2 0x140D SWAP2 SWAP1 PUSH2 0x35AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1420 PUSH2 0x243B JUMP JUMPDEST PUSH1 0x9E PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x148B PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x14FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14F1 SWAP1 PUSH2 0x358B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x1579 JUMPI DUP1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x15F8 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x162B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x35C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x65 SLOAD SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x168E JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND LT JUMPDEST DUP1 PUSH2 0x16BB JUMPI POP PUSH2 0x169D ADDRESS PUSH2 0x2274 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x16BA JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ JUMPDEST JUMPDEST PUSH2 0x16FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16F1 SWAP1 PUSH2 0x366F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1737 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x186A0 PUSH1 0x65 DUP2 SWAP1 SSTORE POP PUSH2 0x1388 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x17CC PUSH2 0x2297 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1825 JUMPI PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x181C SWAP2 SWAP1 PUSH2 0x36D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1831 PUSH2 0x1ECB JUMP JUMPDEST DUP2 DUP2 PUSH1 0x68 SWAP2 DUP3 PUSH2 0x1842 SWAP3 SWAP2 SWAP1 PUSH2 0x389F JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1874 SWAP3 SWAP2 SWAP1 PUSH2 0x399C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9C PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18DE PUSH2 0x1ECB JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1919 SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1938 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x195C SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x19F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19EB SWAP1 PUSH2 0x340B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1A58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A4F SWAP1 PUSH2 0x3477 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x9F PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x9F PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B8A SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BA9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCD SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP DUP3 PUSH31 0x7C875846B687732A7579C19BB1DADE66CD14E9F4F809565E2B2B5E76C72B4F DUP4 PUSH1 0x40 MLOAD PUSH2 0x1BFD SWAP2 SWAP1 PUSH2 0x2832 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1C41 PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1CB0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CA7 SWAP1 PUSH2 0x3A32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1CB9 DUP2 PUSH2 0x21AE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x9B PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1D48 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D3F SWAP1 PUSH2 0x3A9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x1D8B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D82 SWAP1 PUSH2 0x3B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1DFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DF1 SWAP1 PUSH2 0x3B76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1E69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E60 SWAP1 PUSH2 0x3B76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SHL PUSH1 0x9E PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SUB PUSH2 0x1EC4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EBB SWAP1 PUSH2 0x3BE2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1ED3 PUSH2 0x22F0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1EF1 PUSH2 0x1459 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F47 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F3E SWAP1 PUSH2 0x3C4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x1F51 PUSH2 0x245B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP PUSH1 0x9F PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH2 0x1F8E SWAP2 SWAP1 PUSH2 0x3C6E JUMP JUMPDEST SWAP1 POP PUSH1 0x65 SLOAD DUP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1FAD SWAP2 SWAP1 PUSH2 0x3091 JUMP JUMPDEST PUSH2 0x1FB7 SWAP2 SWAP1 PUSH2 0x3102 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1FF3 SWAP2 SWAP1 PUSH2 0x3091 JUMP JUMPDEST PUSH2 0x1FFD SWAP2 SWAP1 PUSH2 0x3102 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x201A SWAP2 SWAP1 PUSH2 0x3C6E JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP DUP3 ISZERO PUSH2 0x2052 JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x203F SWAP2 SWAP1 PUSH2 0x3CA2 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0x9F PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2121 SWAP3 SWAP2 SWAP1 PUSH2 0x3271 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2140 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2164 SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x96C76D5AEC8A8C11A9C8E02768E3FA309347330D08961E0CF9FD43B349B684C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x22E6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22DD SWAP1 PUSH2 0x3D48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22EE PUSH2 0x22F8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2347 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x233E SWAP1 PUSH2 0x3D48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2357 PUSH2 0x2352 PUSH2 0x22F0 JUMP JUMPDEST PUSH2 0x21AE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x249C DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP2 EQ PUSH2 0x24A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x24B9 DUP2 PUSH2 0x2493 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24D5 JUMPI PUSH2 0x24D4 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x24E3 DUP5 DUP3 DUP6 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2521 DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x253D PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2518 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2550 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2518 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2562 DUP4 DUP4 PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2586 DUP3 PUSH2 0x24EC JUMP JUMPDEST PUSH2 0x2590 DUP2 DUP6 PUSH2 0x24F7 JUMP JUMPDEST SWAP4 POP PUSH2 0x259B DUP4 PUSH2 0x2508 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25CC JUMPI DUP2 MLOAD PUSH2 0x25B3 DUP9 DUP3 PUSH2 0x2556 JUMP JUMPDEST SWAP8 POP PUSH2 0x25BE DUP4 PUSH2 0x256E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x259F JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x25F3 DUP2 DUP5 PUSH2 0x257B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2626 DUP3 PUSH2 0x25FB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2636 DUP2 PUSH2 0x261B JUMP JUMPDEST DUP2 EQ PUSH2 0x2641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2653 DUP2 PUSH2 0x262D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x266C DUP2 PUSH2 0x2659 JUMP JUMPDEST DUP2 EQ PUSH2 0x2677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2689 DUP2 PUSH2 0x2663 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26B0 DUP2 PUSH2 0x268F JUMP JUMPDEST DUP2 EQ PUSH2 0x26BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26CD DUP2 PUSH2 0x26A7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x26F8 JUMPI PUSH2 0x26F7 PUSH2 0x26D3 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2715 JUMPI PUSH2 0x2714 PUSH2 0x26D8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2731 JUMPI PUSH2 0x2730 PUSH2 0x26DD JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x275C JUMPI PUSH2 0x275B PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x276A DUP14 DUP3 DUP15 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x277B DUP14 DUP3 DUP15 ADD PUSH2 0x267A JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x278C DUP14 DUP3 DUP15 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x279D DUP14 DUP3 DUP15 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x27AE DUP14 DUP3 DUP15 ADD PUSH2 0x26BE JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x27BF DUP14 DUP3 DUP15 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x27D0 DUP14 DUP3 DUP15 ADD PUSH2 0x267A JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x27E1 DUP14 DUP3 DUP15 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2803 JUMPI PUSH2 0x2802 PUSH2 0x2484 JUMP JUMPDEST JUMPDEST PUSH2 0x280F DUP14 DUP3 DUP15 ADD PUSH2 0x26E2 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH2 0x282C DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2847 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2823 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2896 DUP3 PUSH2 0x284D JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x28B5 JUMPI PUSH2 0x28B4 PUSH2 0x285E JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28C8 PUSH2 0x2475 JUMP JUMPDEST SWAP1 POP PUSH2 0x28D4 DUP3 DUP3 PUSH2 0x288D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x28F4 JUMPI PUSH2 0x28F3 PUSH2 0x285E JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2920 JUMPI PUSH2 0x291F PUSH2 0x2905 JUMP JUMPDEST JUMPDEST PUSH2 0x292A PUSH1 0x40 PUSH2 0x28BE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x293A DUP5 DUP3 DUP6 ADD PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x294E DUP5 DUP3 DUP6 ADD PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x296D PUSH2 0x2968 DUP5 PUSH2 0x28D9 JUMP JUMPDEST PUSH2 0x28BE JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2990 JUMPI PUSH2 0x298F PUSH2 0x26DD JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29B9 JUMPI DUP1 PUSH2 0x29A5 DUP9 DUP3 PUSH2 0x290A JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x2992 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29D8 JUMPI PUSH2 0x29D7 PUSH2 0x26D3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29E8 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x295A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A08 JUMPI PUSH2 0x2A07 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2A16 DUP6 DUP3 DUP7 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A37 JUMPI PUSH2 0x2A36 PUSH2 0x2484 JUMP JUMPDEST JUMPDEST PUSH2 0x2A43 DUP6 DUP3 DUP7 ADD PUSH2 0x29C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A87 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2A6C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9E DUP3 PUSH2 0x2A4D JUMP JUMPDEST PUSH2 0x2AA8 DUP2 DUP6 PUSH2 0x2A58 JUMP JUMPDEST SWAP4 POP PUSH2 0x2AB8 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2A69 JUMP JUMPDEST PUSH2 0x2AC1 DUP2 PUSH2 0x284D JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2AE6 DUP2 DUP5 PUSH2 0x2A93 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B0B DUP2 PUSH2 0x2AEE JUMP JUMPDEST DUP2 EQ PUSH2 0x2B16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2B28 DUP2 PUSH2 0x2B02 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B43 DUP2 PUSH2 0x2B2E JUMP JUMPDEST DUP2 EQ PUSH2 0x2B4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2B60 DUP2 PUSH2 0x2B3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2B83 JUMPI PUSH2 0x2B82 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2B91 DUP10 DUP3 DUP11 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x2BA2 DUP10 DUP3 DUP11 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x2BB3 DUP10 DUP3 DUP11 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x2BC4 DUP10 DUP3 DUP11 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0x2BD5 DUP10 DUP3 DUP11 ADD PUSH2 0x2B19 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH2 0x2BE6 DUP10 DUP3 DUP11 ADD PUSH2 0x2B51 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x2BFC DUP2 PUSH2 0x261B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2C17 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x2C24 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2BF3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C41 JUMPI PUSH2 0x2C40 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2C4F DUP5 DUP3 DUP6 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2C61 DUP2 PUSH2 0x2B2E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2C7C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2C58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2C8B DUP2 PUSH2 0x261B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2C9A DUP2 PUSH2 0x2659 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2CA9 DUP2 PUSH2 0x268F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2CB8 DUP2 PUSH2 0x2B2E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x120 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2CD5 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2C82 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2CE8 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2C82 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2CFB PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2C82 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2D0E PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2C91 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2D21 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2CA0 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2D34 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2CAF JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x2D47 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2C82 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x2D5A PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2CA0 JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x2D6F PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2C91 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 ADD SWAP1 POP PUSH2 0x2D8B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2CBE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DA8 JUMPI PUSH2 0x2DA7 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DB6 DUP6 DUP3 DUP7 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2DC7 DUP6 DUP3 DUP7 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DE7 JUMPI PUSH2 0x2DE6 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DF5 DUP5 DUP3 DUP6 ADD PUSH2 0x2B19 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2E14 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2518 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2E27 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2518 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2E42 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2DFE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2E5D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2BF3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2E7C JUMPI PUSH2 0x2E7B PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E8A DUP7 DUP3 DUP8 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2E9B DUP7 DUP3 DUP8 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2EAC DUP7 DUP3 DUP8 ADD PUSH2 0x2B51 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x2EBF DUP2 PUSH2 0x2AEE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2ECE DUP2 PUSH2 0x2659 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2EE9 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2EB6 JUMP JUMPDEST PUSH2 0x2EF6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2EC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2F13 JUMPI PUSH2 0x2F12 PUSH2 0x26D3 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F30 JUMPI PUSH2 0x2F2F PUSH2 0x26D8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2F4C JUMPI PUSH2 0x2F4B PUSH2 0x26DD JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F6A JUMPI PUSH2 0x2F69 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F88 JUMPI PUSH2 0x2F87 PUSH2 0x2484 JUMP JUMPDEST JUMPDEST PUSH2 0x2F94 DUP6 DUP3 DUP7 ADD PUSH2 0x2EFD JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2FB9 JUMPI PUSH2 0x2FB8 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2FC7 DUP7 DUP3 DUP8 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2FD8 DUP7 DUP3 DUP8 ADD PUSH2 0x2644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2FE9 DUP7 DUP3 DUP8 ADD PUSH2 0x267A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x300A JUMPI PUSH2 0x3009 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3018 DUP6 DUP3 DUP7 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3029 DUP6 DUP3 DUP7 ADD PUSH2 0x24AA JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x309C DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH2 0x30A7 DUP4 PUSH2 0x2659 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x30B5 DUP2 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x30CC JUMPI PUSH2 0x30CB PUSH2 0x3062 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x310D DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH2 0x3118 DUP4 PUSH2 0x2659 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x3128 JUMPI PUSH2 0x3127 PUSH2 0x30D3 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x53656E646572466565546F6F4869676800000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x317A PUSH1 0x10 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3185 DUP3 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x31A9 DUP2 PUSH2 0x316D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x31C5 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2BF3 JUMP JUMPDEST PUSH2 0x31D2 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2BF3 JUMP JUMPDEST PUSH2 0x31DF PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EC5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x31F6 DUP2 PUSH2 0x2B3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3212 JUMPI PUSH2 0x3211 PUSH2 0x247F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3220 DUP5 DUP3 DUP6 ADD PUSH2 0x31E7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3234 DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x3266 JUMPI PUSH2 0x3265 PUSH2 0x3062 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3286 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2BF3 JUMP JUMPDEST PUSH2 0x3293 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2EC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32BF PUSH2 0x32BA PUSH2 0x32B5 DUP5 PUSH2 0x268F JUMP JUMPDEST PUSH2 0x329A JUMP JUMPDEST PUSH2 0x2659 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x32CF DUP2 PUSH2 0x32A4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32F0 DUP4 DUP6 PUSH2 0x3133 JUMP JUMPDEST SWAP4 POP PUSH2 0x32FD DUP4 DUP6 DUP5 PUSH2 0x32D5 JUMP JUMPDEST PUSH2 0x3306 DUP4 PUSH2 0x284D JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x3326 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x32C6 JUMP JUMPDEST PUSH2 0x3333 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x3340 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2823 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3353 DUP2 DUP5 DUP7 PUSH2 0x32E4 JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x33A6 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x33B9 JUMPI PUSH2 0x33B8 PUSH2 0x335F JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F6E6C7941676772656761746F72000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33F5 PUSH1 0xE DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3400 DUP3 PUSH2 0x33BF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3424 DUP2 PUSH2 0x33E8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F7264657246756C66696C6C6564000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3461 PUSH1 0xE DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x346C DUP3 PUSH2 0x342B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3490 DUP2 PUSH2 0x3454 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34A2 DUP3 PUSH2 0x268F JUMP JUMPDEST SWAP2 POP PUSH2 0x34AD DUP4 PUSH2 0x268F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x34D1 JUMPI PUSH2 0x34D0 PUSH2 0x3062 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34F2 PUSH2 0x34ED PUSH2 0x34E8 DUP5 PUSH2 0x2AEE JUMP JUMPDEST PUSH2 0x329A JUMP JUMPDEST PUSH2 0x268F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3502 DUP2 PUSH2 0x34D7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x351D PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x352A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x3537 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x34F9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3575 PUSH1 0x16 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3580 DUP3 PUSH2 0x353F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x35A4 DUP2 PUSH2 0x3568 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x35C0 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2EB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x35DB PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2823 JUMP JUMPDEST PUSH2 0x35E8 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2BF3 JUMP JUMPDEST PUSH2 0x35F5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2C58 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3659 PUSH1 0x2E DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3664 DUP3 PUSH2 0x35FD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3688 DUP2 PUSH2 0x364C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36C1 PUSH2 0x36BC PUSH2 0x36B7 DUP5 PUSH2 0x368F JUMP JUMPDEST PUSH2 0x329A JUMP JUMPDEST PUSH2 0x3699 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x36D1 DUP2 PUSH2 0x36A6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x36EC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x36C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x375F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x3722 JUMP JUMPDEST PUSH2 0x3769 DUP7 DUP4 PUSH2 0x3722 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379C PUSH2 0x3797 PUSH2 0x3792 DUP5 PUSH2 0x2659 JUMP JUMPDEST PUSH2 0x329A JUMP JUMPDEST PUSH2 0x2659 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x37B6 DUP4 PUSH2 0x3781 JUMP JUMPDEST PUSH2 0x37CA PUSH2 0x37C2 DUP3 PUSH2 0x37A3 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x372F JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x37DF PUSH2 0x37D2 JUMP JUMPDEST PUSH2 0x37EA DUP2 DUP5 DUP5 PUSH2 0x37AD JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x380E JUMPI PUSH2 0x3803 PUSH1 0x0 DUP3 PUSH2 0x37D7 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x37F0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x3853 JUMPI PUSH2 0x3824 DUP2 PUSH2 0x36FD JUMP JUMPDEST PUSH2 0x382D DUP5 PUSH2 0x3712 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x383C JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x3850 PUSH2 0x3848 DUP6 PUSH2 0x3712 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x37EF JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3876 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x3858 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x388F DUP4 DUP4 PUSH2 0x3865 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x38A9 DUP4 DUP4 PUSH2 0x36F2 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38C2 JUMPI PUSH2 0x38C1 PUSH2 0x285E JUMP JUMPDEST JUMPDEST PUSH2 0x38CC DUP3 SLOAD PUSH2 0x338E JUMP JUMPDEST PUSH2 0x38D7 DUP3 DUP3 DUP6 PUSH2 0x3812 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3906 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x38F4 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x38FE DUP6 DUP3 PUSH2 0x3883 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x3966 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x3914 DUP7 PUSH2 0x36FD JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x393C JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3917 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x3959 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x3955 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x3865 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x397B DUP4 DUP6 PUSH2 0x2A58 JUMP JUMPDEST SWAP4 POP PUSH2 0x3988 DUP4 DUP6 DUP5 PUSH2 0x32D5 JUMP JUMPDEST PUSH2 0x3991 DUP4 PUSH2 0x284D JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x39B7 DUP2 DUP5 DUP7 PUSH2 0x396F JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A1C PUSH1 0x26 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A27 DUP3 PUSH2 0x39C0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3A4B DUP2 PUSH2 0x3A0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x546F6B656E4E6F74537570706F72746564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A88 PUSH1 0x11 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A93 DUP3 PUSH2 0x3A52 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3AB7 DUP2 PUSH2 0x3A7B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E7449735A65726F0000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AF4 PUSH1 0xC DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3AFF DUP3 PUSH2 0x3ABE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3B23 DUP2 PUSH2 0x3AE7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5468726F775A65726F4164647265737300000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B60 PUSH1 0x10 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3B6B DUP3 PUSH2 0x3B2A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3B8F DUP2 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C6964496E737469747574696F6E436F646500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BCC PUSH1 0x16 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3BD7 DUP3 PUSH2 0x3B96 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3BFB DUP2 PUSH2 0x3BBF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C38 PUSH1 0x20 DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3C43 DUP3 PUSH2 0x3C02 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C67 DUP2 PUSH2 0x3C2B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C79 DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH2 0x3C84 DUP4 PUSH2 0x2659 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3C9C JUMPI PUSH2 0x3C9B PUSH2 0x3062 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CAD DUP3 PUSH2 0x2659 JUMP JUMPDEST SWAP2 POP PUSH2 0x3CB8 DUP4 PUSH2 0x2659 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CD0 JUMPI PUSH2 0x3CCF PUSH2 0x3062 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D32 PUSH1 0x2B DUP4 PUSH2 0x3133 JUMP JUMPDEST SWAP2 POP PUSH2 0x3D3D DUP3 PUSH2 0x3CD6 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D61 DUP2 PUSH2 0x3D25 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 SUB 0xC3 0x24 PUSH28 0xB726C64865B7A580DD6D825218D8AA6F111DE58C8CAA232A024AB64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"367:9282:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8225:487;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1410:1608;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1751:500:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9302:96:12;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3830:1572;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2064:101:0;;;:::i;:::-;;7876:119:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7705:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2443:263:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2257:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8062:157:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1441:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1401:344:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8765:139:12;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;841:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2712:161:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9129:120:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9495:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5797:546;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8964:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2314:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8225:487:12;8300:20;8332:33;8368:21;:31;8390:8;8368:31;;;;;;;;;;;8332:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8409:14;8426:12;:19;8409:36;;8455:27;8503:6;8485:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8455:55;;8534:9;8529:145;8553:6;8549:1;:10;8529:145;;;8589:12;8602:1;8589:15;;;;;;;;:::i;:::-;;;;;;;;8577:6;8584:1;8577:9;;;;;;;;:::i;:::-;;;;;;;:27;;;;8646:3;;;;;;;8529:145;;;;8699:6;8692:13;;;;;8225:487;;;:::o;1410:1608::-;1722:15;1785:80;1794:6;1802:7;1811:14;1827:19;1848:16;1785:8;:80::i;:::-;1991:7;;1969:18;;;;;;;;;;;1959:28;;:7;:28;;;;:::i;:::-;1958:40;;;;:::i;:::-;1944:10;:54;;1936:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;2084:6;2077:27;;;2105:10;2125:4;2132:7;2077:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2206:6;:18;2213:10;2206:18;;;;;;;;;;;;;;;;:21;;;;;;;;;:::i;:::-;;;;;;2464:10;2476:6;:18;2483:10;2476:18;;;;;;;;;;;;;;;;2453:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2443:53;;;;;;2433:63;;2553:334;;;;;;;;2581:10;2553:334;;;;;;2612:6;2553:334;;;;;;2652:19;2553:334;;;;;;2696:10;2553:334;;;;2726:5;2553:334;;;;;;2758:5;2553:334;;;;;;2792:14;2553:334;;;;;;2839:7;;2553:334;;;;;;;;2869:7;2553:334;;;2536:5;:14;2542:7;2536:14;;;;;;;;;;;:351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2957:7;2948;2940:6;2932:79;;;2966:5;2973:16;2991:6;2999:11;;2932:79;;;;;;;;;;:::i;:::-;;;;;;;;1410:1608;;;;;;;;;;;;:::o;1751:500:13:-;1334:13:0;:11;:13::i;:::-;1868:14:13::1;1885:12;:19;1868:36;;1919:6;1914:331;1935:6;1931:1;:10;1914:331;;;1959:21;:31;1981:8;1959:31;;;;;;;;;;;1996:12;2009:1;1996:15;;;;;;;;:::i;:::-;;;;;;;;1959:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2078:97;;;;;;;;2120:12;2133:1;2120:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2078:97;;;;2152:8;2078:97;;::::0;2026:27:::1;:49;2054:12;2067:1;2054:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2026:49;;;;;;;;;;;:149;;;;;;;;;;;;;;;;;;;2217:3;;;;;;;1914:331;;;;1857:394;1751:500:::0;;:::o;9302:96:12:-;9349:12;9380:11;9373:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9302:96;:::o;3830:1572::-;4066:7;4075;1109:18;;;;;;;;;;;1095:32;;:10;:32;;;1087:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4160:5:::1;:15;4166:8;4160:15;;;;;;;;;;;:27;;;;;;;;;;;;4159:28;4151:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4254:13;4270:5;:15;4276:8;4270:15;;;;;;;;;;;:21;;;;;;;;;;;;4254:37;;4400:14;4370:44;;:5;:15;4376:8;4370:15;;;;;;;;;;;:26;;;:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4556:21;4583:52;4598:8;4608:14;4583:52;;4624:10;4583:14;:52::i;:::-;4554:81;;4678:1;4648:5;:15;4654:8;4648:15;;;;;;;;;;;:26;;;;;;;;;;;;:31;;::::0;4645:296:::1;;4779:4;4749:5;:15;4755:8;4749:15;;;;;;;;;;;:27;;;:34;;;;;;;;;;;;;;;;;;4829:1;4801:5;:15;4807:8;4801:15;;;;;;;;;;;:25;;;:29;4797:134;;;4889:27;4907:8;4889:17;:27::i;:::-;4797:134;4645:296;4988:1;4963:10;:22;;;:26;4959:154;;;5049:5;5042:22;;;5065:12;;;;;;;;;;;5079:10;:22;;;5042:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4959:154;5175:5;5168:22;;;5191:18;5211:10;:34;;;5168:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5326:18;5284:77;;5307:8;5284:77;5292:13;5317:6;5346:14;5284:77;;;;;;;;:::i;:::-;;;;;;;;5379:8;5389:5;5371:24;;;;;;3830:1572:::0;;;;;;;;;:::o;2064:101:0:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;7876:119:12:-;7940:4;7963:17;:25;7981:6;7963:25;;;;;;;;;;;;;;;;;;;;;;;;;7956:32;;7876:119;;;:::o;7705:115::-;7767:12;;:::i;:::-;7798:5;:15;7804:8;7798:15;;;;;;;;;;;7791:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7705:115;;;:::o;2443:263:13:-;1334:13:0;:11;:13::i;:::-;2559:1:13::1;2542:19;;:5;:19;;::::0;2534:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2602:13;:4;:13:::0;2598:39:::1;;2632:5;2617:12;;:20;;;;;;;;;;;;;;;;;;2598:39;2651:20;:4;:20:::0;2647:52:::1;;2694:5;2673:18;;:26;;;;;;;;;;;;;;;;;;2647:52;2443:263:::0;;:::o;2257:180::-;1334:13:0;:11;:13::i;:::-;2363:19:13::1;2342:18;;:40;;;;;;;;;;;;;;;;;;2397:33;2410:19;2397:33;;;;;;:::i;:::-;;;;;;;;2257:180:::0;:::o;8062:157:12:-;8136:24;;:::i;:::-;8179:27;:33;8207:4;8179:33;;;;;;;;;;;8172:40;;;;;;;;;;;;;;;;;;;;;;;;;;;8062:157;;;:::o;1441:85:0:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;1401:344:13:-;1334:13:0;:11;:13::i;:::-;1525:1:13::1;1508:19;;:5;:19;;::::0;1500:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1568:15;:4;:15:::0;1564:54:::1;;1612:6;1585:17;:24;1603:5;1585:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1564:54;1632:19;:4;:19:::0;1628:55:::1;;1677:6;1653:14;:21;1668:5;1653:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1628:55;1699:39;1718:4;1724:5;1731:6;1699:39;;;;;;;;:::i;:::-;;;;;;;;1401:344:::0;;;:::o;8765:139:12:-;8821:6;8838:7;8869:18;;;;;;;;;;;8889:7;;8862:35;;;;8765:139;;:::o;841:206::-;3279:19:1;3302:13;;;;;;;;;;;3301:14;3279:36;;3347:14;:34;;;;;3380:1;3365:12;;;;;;;;;;:16;;;3347:34;3346:108;;;;3388:44;3426:4;3388:29;:44::i;:::-;3387:45;:66;;;;;3452:1;3436:12;;;;;;;;;;:17;;;3387:66;3346:108;3325:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;3551:1;3536:12;;:16;;;;;;;;;;;;;;;;;;3566:14;3562:65;;;3612:4;3596:13;;:20;;;;;;;;;;;;;;;;;;3562:65;938:4:12::1;911:17;:24;929:5;911:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;965:7;955;:17;;;;1004:4;983:18;;:25;;;;;;;;;;;;;;;;;;1024:16;:14;:16::i;:::-;3651:14:1::0;3647:99;;;3697:5;3681:13;;:21;;;;;;;;;;;;;;;;;;3721:14;3733:1;3721:14;;;;;;:::i;:::-;;;;;;;;3647:99;3269:483;841:206:12;:::o;2712:161:13:-;1334:13:0;:11;:13::i;:::-;2816:10:13::1;;2802:11;:24;;;;;;;:::i;:::-;;2841:25;2855:10;;2841:25;;;;;;;:::i;:::-;;;;;;;;2712:161:::0;;:::o;9129:120:12:-;9197:4;9220:14;:22;9235:6;9220:22;;;;;;;;;;;;;;;;;;;;;;;;;9213:29;;9129:120;;;:::o;9495:151::-;1334:13:0;:11;:13::i;:::-;9602:6:12::1;9595:23;;;9619:10;9631:7;9595:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9495:151:::0;;;:::o;5797:546::-;5882:4;1109:18;;;;;;;;;;;1095:32;;:10;:32;;;1087:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;5964:5:::1;:15;5970:8;5964:15;;;;;;;;;;;:27;;;;;;;;;;;;5963:28;5955:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6080:4;6050:5;:15;6056:8;6050:15;;;;;;;;;;;:27;;;:34;;;;;;;;;;;;;;;;;;6123:1;6094:5;:15;6100:8;6094:15;;;;;;;;;;;:26;;;:30;;;;;;;;;;;;;;;;;;6172:5;:15;6178:8;6172:15;;;;;;;;;;;:21;;;;;;;;;;;;6165:38;;;6204:5;:15;6210:8;6204:15;;;;;;;;;;;:29;;;;;;;;;;;;6235:5;:15;6241:8;6235:15;;;;;;;;;;;:22;;;6165:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6298:8;6289:26;6308:6;6289:26;;;;;;:::i;:::-;;;;;;;;6332:4;6325:11;;5797:546:::0;;;;:::o;8964:105::-;9018:7;9044:18;;;;;;;;;;;9037:25;;8964:105;:::o;2314:198:0:-;1334:13;:11;:13::i;:::-;2422:1:::1;2402:22;;:8;:22;;::::0;2394:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:28;2496:8;2477:18;:28::i;:::-;2314:198:::0;:::o;3024:559:12:-;3235:17;:25;3253:6;3235:25;;;;;;;;;;;;;;;;;;;;;;;;;3227:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;3310:1;3300:7;:11;3292:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;3372:1;3346:28;;:14;:28;;;3338:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3444:1;3413:33;;:19;:33;;;3405:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;3547:1;3539:10;;3485:27;:45;3513:16;3485:45;;;;;;;;;;;:50;;;:64;3477:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;3024:559;;;;;:::o;1599:130:0:-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;6349:1109:12:-;6452:21;;:::i;:::-;6546:14;6563:5;:15;6569:8;6563:15;;;;;;;;;;;:22;;;6546:39;;6651:5;:15;6657:8;6651:15;;;;;;;;;;;:25;;;6642:6;:34;;;;:::i;:::-;6633:43;;6820:7;;6802:14;6793:23;;:6;:23;;;;:::i;:::-;6792:35;;;;:::i;:::-;6755:10;:34;;:72;;;;;6980:7;;6958:18;;;;;;;;;;;6921:55;;:10;:34;;;:55;;;;:::i;:::-;6920:67;;;;:::i;:::-;6895:10;:22;;:92;;;;;7160:10;:22;;;7123:10;:34;;;:59;;;;:::i;:::-;7085:10;:34;;:98;;;;;7315:10;7311:141;;;7379:10;:22;;;7341:10;:34;;:60;;;;;;;:::i;:::-;;;;;;;;7440:1;7415:10;:22;;:26;;;;;7311:141;6476:982;6349:1109;;;;;:::o;5408:343::-;5472:17;5492:5;:15;5498:8;5492:15;;;;;;;;;;;:34;;;;;;;;;;;;5472:54;;5536:12;5551:5;:15;5557:8;5551:15;;;;;;;;;;;:25;;;5536:40;;5624:5;:15;5630:8;5624:15;;;;;;;;;;;:21;;;;;;;;;;;;5617:38;;;5656:9;5667:4;5617:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5739:4;5728:9;5710:34;;;;;;;;;;;;5462:289;;5408:343;:::o;2666:187:0:-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;1423:320:5:-;1483:4;1735:1;1713:7;:19;;;:23;1706:30;;1423:320;;;:::o;1003:95:0:-;5374:13:1;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1065:26:0::1;:24;:26::i;:::-;1003:95::o:0;850:96:6:-;903:7;929:10;922:17;;850:96;:::o;1104:111:0:-;5374:13:1;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:32:0::1;1195:12;:10;:12::i;:::-;1176:18;:32::i;:::-;1104:111::o:0;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:143::-;1121:6;1155:5;1149:12;1139:22;;1025:143;;;:::o;1174:213::-;1302:11;1336:6;1331:3;1324:19;1376:4;1371:3;1367:14;1352:29;;1174:213;;;;:::o;1393:161::-;1489:4;1512:3;1504:11;;1542:4;1537:3;1533:14;1525:22;;1393:161;;;:::o;1560:108::-;1637:24;1655:5;1637:24;:::i;:::-;1632:3;1625:37;1560:108;;:::o;1768:505::-;1913:4;1908:3;1904:14;2000:4;1993:5;1989:16;1983:23;2019:63;2076:4;2071:3;2067:14;2053:12;2019:63;:::i;:::-;1928:164;2174:4;2167:5;2163:16;2157:23;2193:63;2250:4;2245:3;2241:14;2227:12;2193:63;:::i;:::-;2102:164;1882:391;1768:505;;:::o;2279:295::-;2406:10;2427:104;2527:3;2519:6;2427:104;:::i;:::-;2563:4;2558:3;2554:14;2540:28;;2279:295;;;;:::o;2580:142::-;2679:4;2711;2706:3;2702:14;2694:22;;2580:142;;;:::o;2826:964::-;3003:3;3032:83;3109:5;3032:83;:::i;:::-;3131:115;3239:6;3234:3;3131:115;:::i;:::-;3124:122;;3270:85;3349:5;3270:85;:::i;:::-;3378:7;3409:1;3394:371;3419:6;3416:1;3413:13;3394:371;;;3495:6;3489:13;3522:121;3639:3;3624:13;3522:121;:::i;:::-;3515:128;;3666:89;3748:6;3666:89;:::i;:::-;3656:99;;3454:311;3441:1;3438;3434:9;3429:14;;3394:371;;;3398:14;3781:3;3774:10;;3008:782;;;2826:964;;;;:::o;3796:489::-;3997:4;4035:2;4024:9;4020:18;4012:26;;4084:9;4078:4;4074:20;4070:1;4059:9;4055:17;4048:47;4112:166;4273:4;4264:6;4112:166;:::i;:::-;4104:174;;3796:489;;;;:::o;4291:126::-;4328:7;4368:42;4361:5;4357:54;4346:65;;4291:126;;;:::o;4423:96::-;4460:7;4489:24;4507:5;4489:24;:::i;:::-;4478:35;;4423:96;;;:::o;4525:122::-;4598:24;4616:5;4598:24;:::i;:::-;4591:5;4588:35;4578:63;;4637:1;4634;4627:12;4578:63;4525:122;:::o;4653:139::-;4699:5;4737:6;4724:20;4715:29;;4753:33;4780:5;4753:33;:::i;:::-;4653:139;;;;:::o;4798:77::-;4835:7;4864:5;4853:16;;4798:77;;;:::o;4881:122::-;4954:24;4972:5;4954:24;:::i;:::-;4947:5;4944:35;4934:63;;4993:1;4990;4983:12;4934:63;4881:122;:::o;5009:139::-;5055:5;5093:6;5080:20;5071:29;;5109:33;5136:5;5109:33;:::i;:::-;5009:139;;;;:::o;5154:109::-;5190:7;5230:26;5223:5;5219:38;5208:49;;5154:109;;;:::o;5269:120::-;5341:23;5358:5;5341:23;:::i;:::-;5334:5;5331:34;5321:62;;5379:1;5376;5369:12;5321:62;5269:120;:::o;5395:137::-;5440:5;5478:6;5465:20;5456:29;;5494:32;5520:5;5494:32;:::i;:::-;5395:137;;;;:::o;5538:117::-;5647:1;5644;5637:12;5661:117;5770:1;5767;5760:12;5784:117;5893:1;5890;5883:12;5921:553;5979:8;5989:6;6039:3;6032:4;6024:6;6020:17;6016:27;6006:122;;6047:79;;:::i;:::-;6006:122;6160:6;6147:20;6137:30;;6190:18;6182:6;6179:30;6176:117;;;6212:79;;:::i;:::-;6176:117;6326:4;6318:6;6314:17;6302:29;;6380:3;6372:4;6364:6;6360:17;6350:8;6346:32;6343:41;6340:128;;;6387:79;;:::i;:::-;6340:128;5921:553;;;;;:::o;6480:1693::-;6622:6;6630;6638;6646;6654;6662;6670;6678;6686;6694;6743:3;6731:9;6722:7;6718:23;6714:33;6711:120;;;6750:79;;:::i;:::-;6711:120;6870:1;6895:53;6940:7;6931:6;6920:9;6916:22;6895:53;:::i;:::-;6885:63;;6841:117;6997:2;7023:53;7068:7;7059:6;7048:9;7044:22;7023:53;:::i;:::-;7013:63;;6968:118;7125:2;7151:53;7196:7;7187:6;7176:9;7172:22;7151:53;:::i;:::-;7141:63;;7096:118;7253:2;7279:53;7324:7;7315:6;7304:9;7300:22;7279:53;:::i;:::-;7269:63;;7224:118;7381:3;7408:52;7452:7;7443:6;7432:9;7428:22;7408:52;:::i;:::-;7398:62;;7352:118;7509:3;7536:53;7581:7;7572:6;7561:9;7557:22;7536:53;:::i;:::-;7526:63;;7480:119;7638:3;7665:53;7710:7;7701:6;7690:9;7686:22;7665:53;:::i;:::-;7655:63;;7609:119;7767:3;7794:53;7839:7;7830:6;7819:9;7815:22;7794:53;:::i;:::-;7784:63;;7738:119;7924:3;7913:9;7909:19;7896:33;7956:18;7948:6;7945:30;7942:117;;;7978:79;;:::i;:::-;7942:117;8091:65;8148:7;8139:6;8128:9;8124:22;8091:65;:::i;:::-;8073:83;;;;7867:299;6480:1693;;;;;;;;;;;;;:::o;8179:118::-;8266:24;8284:5;8266:24;:::i;:::-;8261:3;8254:37;8179:118;;:::o;8303:222::-;8396:4;8434:2;8423:9;8419:18;8411:26;;8447:71;8515:1;8504:9;8500:17;8491:6;8447:71;:::i;:::-;8303:222;;;;:::o;8531:102::-;8572:6;8623:2;8619:7;8614:2;8607:5;8603:14;8599:28;8589:38;;8531:102;;;:::o;8639:180::-;8687:77;8684:1;8677:88;8784:4;8781:1;8774:15;8808:4;8805:1;8798:15;8825:281;8908:27;8930:4;8908:27;:::i;:::-;8900:6;8896:40;9038:6;9026:10;9023:22;9002:18;8990:10;8987:34;8984:62;8981:88;;;9049:18;;:::i;:::-;8981:88;9089:10;9085:2;9078:22;8868:238;8825:281;;:::o;9112:129::-;9146:6;9173:20;;:::i;:::-;9163:30;;9202:33;9230:4;9222:6;9202:33;:::i;:::-;9112:129;;;:::o;9247:340::-;9353:4;9443:18;9435:6;9432:30;9429:56;;;9465:18;;:::i;:::-;9429:56;9515:4;9507:6;9503:17;9495:25;;9575:4;9569;9565:15;9557:23;;9247:340;;;:::o;9593:117::-;9702:1;9699;9692:12;9888:578;9966:5;10010:4;9998:9;9993:3;9989:19;9985:30;9982:117;;;10018:79;;:::i;:::-;9982:117;10117:21;10133:4;10117:21;:::i;:::-;10108:30;;10197:1;10237:49;10282:3;10273:6;10262:9;10258:22;10237:49;:::i;:::-;10230:4;10223:5;10219:16;10212:75;10148:150;10357:2;10398:49;10443:3;10434:6;10423:9;10419:22;10398:49;:::i;:::-;10391:4;10384:5;10380:16;10373:75;10308:151;9888:578;;;;:::o;10523:797::-;10648:5;10673:110;10689:93;10775:6;10689:93;:::i;:::-;10673:110;:::i;:::-;10664:119;;10803:5;10832:6;10825:5;10818:21;10866:4;10859:5;10855:16;10848:23;;10919:4;10911:6;10907:17;10899:6;10895:30;10948:3;10940:6;10937:15;10934:122;;;10967:79;;:::i;:::-;10934:122;11082:6;11065:249;11099:6;11094:3;11091:15;11065:249;;;11174:3;11203:66;11265:3;11253:10;11203:66;:::i;:::-;11198:3;11191:79;11299:4;11294:3;11290:14;11283:21;;11141:173;11125:4;11120:3;11116:14;11109:21;;11065:249;;;11069:21;10654:666;;10523:797;;;;;:::o;11377:428::-;11477:5;11526:3;11519:4;11511:6;11507:17;11503:27;11493:122;;11534:79;;:::i;:::-;11493:122;11651:6;11638:20;11676:123;11795:3;11787:6;11780:4;11772:6;11768:17;11676:123;:::i;:::-;11667:132;;11483:322;11377:428;;;;:::o;11811:742::-;11933:6;11941;11990:2;11978:9;11969:7;11965:23;11961:32;11958:119;;;11996:79;;:::i;:::-;11958:119;12116:1;12141:53;12186:7;12177:6;12166:9;12162:22;12141:53;:::i;:::-;12131:63;;12087:117;12271:2;12260:9;12256:18;12243:32;12302:18;12294:6;12291:30;12288:117;;;12324:79;;:::i;:::-;12288:117;12429:107;12528:7;12519:6;12508:9;12504:22;12429:107;:::i;:::-;12419:117;;12214:332;11811:742;;;;;:::o;12559:98::-;12610:6;12644:5;12638:12;12628:22;;12559:98;;;:::o;12663:168::-;12746:11;12780:6;12775:3;12768:19;12820:4;12815:3;12811:14;12796:29;;12663:168;;;;:::o;12837:246::-;12918:1;12928:113;12942:6;12939:1;12936:13;12928:113;;;13027:1;13022:3;13018:11;13012:18;13008:1;13003:3;12999:11;12992:39;12964:2;12961:1;12957:10;12952:15;;12928:113;;;13075:1;13066:6;13061:3;13057:16;13050:27;12899:184;12837:246;;;:::o;13089:373::-;13175:3;13203:38;13235:5;13203:38;:::i;:::-;13257:70;13320:6;13315:3;13257:70;:::i;:::-;13250:77;;13336:65;13394:6;13389:3;13382:4;13375:5;13371:16;13336:65;:::i;:::-;13426:29;13448:6;13426:29;:::i;:::-;13421:3;13417:39;13410:46;;13179:283;13089:373;;;;:::o;13468:309::-;13579:4;13617:2;13606:9;13602:18;13594:26;;13666:9;13660:4;13656:20;13652:1;13641:9;13637:17;13630:47;13694:76;13765:4;13756:6;13694:76;:::i;:::-;13686:84;;13468:309;;;;:::o;13783:101::-;13819:7;13859:18;13852:5;13848:30;13837:41;;13783:101;;;:::o;13890:120::-;13962:23;13979:5;13962:23;:::i;:::-;13955:5;13952:34;13942:62;;14000:1;13997;13990:12;13942:62;13890:120;:::o;14016:137::-;14061:5;14099:6;14086:20;14077:29;;14115:32;14141:5;14115:32;:::i;:::-;14016:137;;;;:::o;14159:90::-;14193:7;14236:5;14229:13;14222:21;14211:32;;14159:90;;;:::o;14255:116::-;14325:21;14340:5;14325:21;:::i;:::-;14318:5;14315:32;14305:60;;14361:1;14358;14351:12;14305:60;14255:116;:::o;14377:133::-;14420:5;14458:6;14445:20;14436:29;;14474:30;14498:5;14474:30;:::i;:::-;14377:133;;;;:::o;14516:1049::-;14616:6;14624;14632;14640;14648;14656;14705:3;14693:9;14684:7;14680:23;14676:33;14673:120;;;14712:79;;:::i;:::-;14673:120;14832:1;14857:53;14902:7;14893:6;14882:9;14878:22;14857:53;:::i;:::-;14847:63;;14803:117;14959:2;14985:53;15030:7;15021:6;15010:9;15006:22;14985:53;:::i;:::-;14975:63;;14930:118;15087:2;15113:53;15158:7;15149:6;15138:9;15134:22;15113:53;:::i;:::-;15103:63;;15058:118;15215:2;15241:53;15286:7;15277:6;15266:9;15262:22;15241:53;:::i;:::-;15231:63;;15186:118;15343:3;15370:52;15414:7;15405:6;15394:9;15390:22;15370:52;:::i;:::-;15360:62;;15314:118;15471:3;15498:50;15540:7;15531:6;15520:9;15516:22;15498:50;:::i;:::-;15488:60;;15442:116;14516:1049;;;;;;;;:::o;15571:118::-;15658:24;15676:5;15658:24;:::i;:::-;15653:3;15646:37;15571:118;;:::o;15695:332::-;15816:4;15854:2;15843:9;15839:18;15831:26;;15867:71;15935:1;15924:9;15920:17;15911:6;15867:71;:::i;:::-;15948:72;16016:2;16005:9;16001:18;15992:6;15948:72;:::i;:::-;15695:332;;;;;:::o;16033:329::-;16092:6;16141:2;16129:9;16120:7;16116:23;16112:32;16109:119;;;16147:79;;:::i;:::-;16109:119;16267:1;16292:53;16337:7;16328:6;16317:9;16313:22;16292:53;:::i;:::-;16282:63;;16238:117;16033:329;;;;:::o;16368:109::-;16449:21;16464:5;16449:21;:::i;:::-;16444:3;16437:34;16368:109;;:::o;16483:210::-;16570:4;16608:2;16597:9;16593:18;16585:26;;16621:65;16683:1;16672:9;16668:17;16659:6;16621:65;:::i;:::-;16483:210;;;;:::o;16699:108::-;16776:24;16794:5;16776:24;:::i;:::-;16771:3;16764:37;16699:108;;:::o;16813:::-;16890:24;16908:5;16890:24;:::i;:::-;16885:3;16878:37;16813:108;;:::o;16927:105::-;17002:23;17019:5;17002:23;:::i;:::-;16997:3;16990:36;16927:105;;:::o;17038:99::-;17109:21;17124:5;17109:21;:::i;:::-;17104:3;17097:34;17038:99;;:::o;17199:1763::-;17342:6;17337:3;17333:16;17433:4;17426:5;17422:16;17416:23;17452:63;17509:4;17504:3;17500:14;17486:12;17452:63;:::i;:::-;17359:166;17608:4;17601:5;17597:16;17591:23;17627:63;17684:4;17679:3;17675:14;17661:12;17627:63;:::i;:::-;17535:165;17796:4;17789:5;17785:16;17779:23;17815:63;17872:4;17867:3;17863:14;17849:12;17815:63;:::i;:::-;17710:178;17975:4;17968:5;17964:16;17958:23;17994:63;18051:4;18046:3;18042:14;18028:12;17994:63;:::i;:::-;17898:169;18149:4;18142:5;18138:16;18132:23;18168:61;18223:4;18218:3;18214:14;18200:12;18168:61;:::i;:::-;18077:162;18328:4;18321:5;18317:16;18311:23;18347:57;18398:4;18393:3;18389:14;18375:12;18347:57;:::i;:::-;18249:165;18505:4;18498:5;18494:16;18488:23;18524:63;18581:4;18576:3;18572:14;18558:12;18524:63;:::i;:::-;18424:173;18685:4;18678:5;18674:16;18668:23;18704:61;18759:4;18754:3;18750:14;18736:12;18704:61;:::i;:::-;18607:168;18859:6;18852:5;18848:18;18842:25;18880:65;18937:6;18932:3;18928:16;18914:12;18880:65;:::i;:::-;18785:170;17311:1651;17199:1763;;:::o;18968:315::-;19107:4;19145:3;19134:9;19130:19;19122:27;;19159:117;19273:1;19262:9;19258:17;19249:6;19159:117;:::i;:::-;18968:315;;;;:::o;19289:474::-;19357:6;19365;19414:2;19402:9;19393:7;19389:23;19385:32;19382:119;;;19420:79;;:::i;:::-;19382:119;19540:1;19565:53;19610:7;19601:6;19590:9;19586:22;19565:53;:::i;:::-;19555:63;;19511:117;19667:2;19693:53;19738:7;19729:6;19718:9;19714:22;19693:53;:::i;:::-;19683:63;;19638:118;19289:474;;;;;:::o;19769:327::-;19827:6;19876:2;19864:9;19855:7;19851:23;19847:32;19844:119;;;19882:79;;:::i;:::-;19844:119;20002:1;20027:52;20071:7;20062:6;20051:9;20047:22;20027:52;:::i;:::-;20017:62;;19973:116;19769:327;;;;:::o;20208:531::-;20375:4;20370:3;20366:14;20462:4;20455:5;20451:16;20445:23;20481:63;20538:4;20533:3;20529:14;20515:12;20481:63;:::i;:::-;20390:164;20640:4;20633:5;20629:16;20623:23;20659:63;20716:4;20711:3;20707:14;20693:12;20659:63;:::i;:::-;20564:168;20344:395;20208:531;;:::o;20745:362::-;20908:4;20946:2;20935:9;20931:18;20923:26;;20959:141;21097:1;21086:9;21082:17;21073:6;20959:141;:::i;:::-;20745:362;;;;:::o;21113:222::-;21206:4;21244:2;21233:9;21229:18;21221:26;;21257:71;21325:1;21314:9;21310:17;21301:6;21257:71;:::i;:::-;21113:222;;;;:::o;21341:613::-;21415:6;21423;21431;21480:2;21468:9;21459:7;21455:23;21451:32;21448:119;;;21486:79;;:::i;:::-;21448:119;21606:1;21631:53;21676:7;21667:6;21656:9;21652:22;21631:53;:::i;:::-;21621:63;;21577:117;21733:2;21759:53;21804:7;21795:6;21784:9;21780:22;21759:53;:::i;:::-;21749:63;;21704:118;21861:2;21887:50;21929:7;21920:6;21909:9;21905:22;21887:50;:::i;:::-;21877:60;;21832:115;21341:613;;;;;:::o;21960:115::-;22045:23;22062:5;22045:23;:::i;:::-;22040:3;22033:36;21960:115;;:::o;22081:118::-;22168:24;22186:5;22168:24;:::i;:::-;22163:3;22156:37;22081:118;;:::o;22205:328::-;22324:4;22362:2;22351:9;22347:18;22339:26;;22375:69;22441:1;22430:9;22426:17;22417:6;22375:69;:::i;:::-;22454:72;22522:2;22511:9;22507:18;22498:6;22454:72;:::i;:::-;22205:328;;;;;:::o;22552:552::-;22609:8;22619:6;22669:3;22662:4;22654:6;22650:17;22646:27;22636:122;;22677:79;;:::i;:::-;22636:122;22790:6;22777:20;22767:30;;22820:18;22812:6;22809:30;22806:117;;;22842:79;;:::i;:::-;22806:117;22956:4;22948:6;22944:17;22932:29;;23010:3;23002:4;22994:6;22990:17;22980:8;22976:32;22973:41;22970:128;;;23017:79;;:::i;:::-;22970:128;22552:552;;;;;:::o;23110:527::-;23180:6;23188;23237:2;23225:9;23216:7;23212:23;23208:32;23205:119;;;23243:79;;:::i;:::-;23205:119;23391:1;23380:9;23376:17;23363:31;23421:18;23413:6;23410:30;23407:117;;;23443:79;;:::i;:::-;23407:117;23556:64;23612:7;23603:6;23592:9;23588:22;23556:64;:::i;:::-;23538:82;;;;23334:296;23110:527;;;;;:::o;23643:619::-;23720:6;23728;23736;23785:2;23773:9;23764:7;23760:23;23756:32;23753:119;;;23791:79;;:::i;:::-;23753:119;23911:1;23936:53;23981:7;23972:6;23961:9;23957:22;23936:53;:::i;:::-;23926:63;;23882:117;24038:2;24064:53;24109:7;24100:6;24089:9;24085:22;24064:53;:::i;:::-;24054:63;;24009:118;24166:2;24192:53;24237:7;24228:6;24217:9;24213:22;24192:53;:::i;:::-;24182:63;;24137:118;23643:619;;;;;:::o;24268:474::-;24336:6;24344;24393:2;24381:9;24372:7;24368:23;24364:32;24361:119;;;24399:79;;:::i;:::-;24361:119;24519:1;24544:53;24589:7;24580:6;24569:9;24565:22;24544:53;:::i;:::-;24534:63;;24490:117;24646:2;24672:53;24717:7;24708:6;24697:9;24693:22;24672:53;:::i;:::-;24662:63;;24617:118;24268:474;;;;;:::o;24748:180::-;24796:77;24793:1;24786:88;24893:4;24890:1;24883:15;24917:4;24914:1;24907:15;24934:180;24982:77;24979:1;24972:88;25079:4;25076:1;25069:15;25103:4;25100:1;25093:15;25120:410;25160:7;25183:20;25201:1;25183:20;:::i;:::-;25178:25;;25217:20;25235:1;25217:20;:::i;:::-;25212:25;;25272:1;25269;25265:9;25294:30;25312:11;25294:30;:::i;:::-;25283:41;;25473:1;25464:7;25460:15;25457:1;25454:22;25434:1;25427:9;25407:83;25384:139;;25503:18;;:::i;:::-;25384:139;25168:362;25120:410;;;;:::o;25536:180::-;25584:77;25581:1;25574:88;25681:4;25678:1;25671:15;25705:4;25702:1;25695:15;25722:185;25762:1;25779:20;25797:1;25779:20;:::i;:::-;25774:25;;25813:20;25831:1;25813:20;:::i;:::-;25808:25;;25852:1;25842:35;;25857:18;;:::i;:::-;25842:35;25899:1;25896;25892:9;25887:14;;25722:185;;;;:::o;25913:169::-;25997:11;26031:6;26026:3;26019:19;26071:4;26066:3;26062:14;26047:29;;25913:169;;;;:::o;26088:166::-;26228:18;26224:1;26216:6;26212:14;26205:42;26088:166;:::o;26260:366::-;26402:3;26423:67;26487:2;26482:3;26423:67;:::i;:::-;26416:74;;26499:93;26588:3;26499:93;:::i;:::-;26617:2;26612:3;26608:12;26601:19;;26260:366;;;:::o;26632:419::-;26798:4;26836:2;26825:9;26821:18;26813:26;;26885:9;26879:4;26875:20;26871:1;26860:9;26856:17;26849:47;26913:131;27039:4;26913:131;:::i;:::-;26905:139;;26632:419;;;:::o;27057:442::-;27206:4;27244:2;27233:9;27229:18;27221:26;;27257:71;27325:1;27314:9;27310:17;27301:6;27257:71;:::i;:::-;27338:72;27406:2;27395:9;27391:18;27382:6;27338:72;:::i;:::-;27420;27488:2;27477:9;27473:18;27464:6;27420:72;:::i;:::-;27057:442;;;;;;:::o;27505:137::-;27559:5;27590:6;27584:13;27575:22;;27606:30;27630:5;27606:30;:::i;:::-;27505:137;;;;:::o;27648:345::-;27715:6;27764:2;27752:9;27743:7;27739:23;27735:32;27732:119;;;27770:79;;:::i;:::-;27732:119;27890:1;27915:61;27968:7;27959:6;27948:9;27944:22;27915:61;:::i;:::-;27905:71;;27861:125;27648:345;;;;:::o;27999:233::-;28038:3;28061:24;28079:5;28061:24;:::i;:::-;28052:33;;28107:66;28100:5;28097:77;28094:103;;28177:18;;:::i;:::-;28094:103;28224:1;28217:5;28213:13;28206:20;;27999:233;;;:::o;28238:332::-;28359:4;28397:2;28386:9;28382:18;28374:26;;28410:71;28478:1;28467:9;28463:17;28454:6;28410:71;:::i;:::-;28491:72;28559:2;28548:9;28544:18;28535:6;28491:72;:::i;:::-;28238:332;;;;;:::o;28576:60::-;28604:3;28625:5;28618:12;;28576:60;;;:::o;28642:140::-;28691:9;28724:52;28742:33;28751:23;28768:5;28751:23;:::i;:::-;28742:33;:::i;:::-;28724:52;:::i;:::-;28711:65;;28642:140;;;:::o;28788:129::-;28874:36;28904:5;28874:36;:::i;:::-;28869:3;28862:49;28788:129;;:::o;28923:146::-;29020:6;29015:3;29010;28997:30;29061:1;29052:6;29047:3;29043:16;29036:27;28923:146;;;:::o;29099:317::-;29197:3;29218:71;29282:6;29277:3;29218:71;:::i;:::-;29211:78;;29299:56;29348:6;29343:3;29336:5;29299:56;:::i;:::-;29380:29;29402:6;29380:29;:::i;:::-;29375:3;29371:39;29364:46;;29099:317;;;;;:::o;29422:662::-;29628:4;29666:3;29655:9;29651:19;29643:27;;29680:70;29747:1;29736:9;29732:17;29723:6;29680:70;:::i;:::-;29760:72;29828:2;29817:9;29813:18;29804:6;29760:72;:::i;:::-;29842;29910:2;29899:9;29895:18;29886:6;29842:72;:::i;:::-;29961:9;29955:4;29951:20;29946:2;29935:9;29931:18;29924:48;29989:88;30072:4;30063:6;30055;29989:88;:::i;:::-;29981:96;;29422:662;;;;;;;;:::o;30090:180::-;30138:77;30135:1;30128:88;30235:4;30232:1;30225:15;30259:4;30256:1;30249:15;30276:320;30320:6;30357:1;30351:4;30347:12;30337:22;;30404:1;30398:4;30394:12;30425:18;30415:81;;30481:4;30473:6;30469:17;30459:27;;30415:81;30543:2;30535:6;30532:14;30512:18;30509:38;30506:84;;30562:18;;:::i;:::-;30506:84;30327:269;30276:320;;;:::o;30602:164::-;30742:16;30738:1;30730:6;30726:14;30719:40;30602:164;:::o;30772:366::-;30914:3;30935:67;30999:2;30994:3;30935:67;:::i;:::-;30928:74;;31011:93;31100:3;31011:93;:::i;:::-;31129:2;31124:3;31120:12;31113:19;;30772:366;;;:::o;31144:419::-;31310:4;31348:2;31337:9;31333:18;31325:26;;31397:9;31391:4;31387:20;31383:1;31372:9;31368:17;31361:47;31425:131;31551:4;31425:131;:::i;:::-;31417:139;;31144:419;;;:::o;31569:164::-;31709:16;31705:1;31697:6;31693:14;31686:40;31569:164;:::o;31739:366::-;31881:3;31902:67;31966:2;31961:3;31902:67;:::i;:::-;31895:74;;31978:93;32067:3;31978:93;:::i;:::-;32096:2;32091:3;32087:12;32080:19;;31739:366;;;:::o;32111:419::-;32277:4;32315:2;32304:9;32300:18;32292:26;;32364:9;32358:4;32354:20;32350:1;32339:9;32335:17;32328:47;32392:131;32518:4;32392:131;:::i;:::-;32384:139;;32111:419;;;:::o;32536:216::-;32575:4;32595:19;32612:1;32595:19;:::i;:::-;32590:24;;32628:19;32645:1;32628:19;:::i;:::-;32623:24;;32671:1;32668;32664:9;32656:17;;32695:26;32689:4;32686:36;32683:62;;;32725:18;;:::i;:::-;32683:62;32536:216;;;;:::o;32758:138::-;32806:9;32839:51;32856:33;32865:23;32882:5;32865:23;:::i;:::-;32856:33;:::i;:::-;32839:51;:::i;:::-;32826:64;;32758:138;;;:::o;32902:127::-;32987:35;33016:5;32987:35;:::i;:::-;32982:3;32975:48;32902:127;;:::o;33035:438::-;33182:4;33220:2;33209:9;33205:18;33197:26;;33233:71;33301:1;33290:9;33286:17;33277:6;33233:71;:::i;:::-;33314:72;33382:2;33371:9;33367:18;33358:6;33314:72;:::i;:::-;33396:70;33462:2;33451:9;33447:18;33438:6;33396:70;:::i;:::-;33035:438;;;;;;:::o;33479:172::-;33619:24;33615:1;33607:6;33603:14;33596:48;33479:172;:::o;33657:366::-;33799:3;33820:67;33884:2;33879:3;33820:67;:::i;:::-;33813:74;;33896:93;33985:3;33896:93;:::i;:::-;34014:2;34009:3;34005:12;33998:19;;33657:366;;;:::o;34029:419::-;34195:4;34233:2;34222:9;34218:18;34210:26;;34282:9;34276:4;34272:20;34268:1;34257:9;34253:17;34246:47;34310:131;34436:4;34310:131;:::i;:::-;34302:139;;34029:419;;;:::o;34454:218::-;34545:4;34583:2;34572:9;34568:18;34560:26;;34596:69;34662:1;34651:9;34647:17;34638:6;34596:69;:::i;:::-;34454:218;;;;:::o;34678:430::-;34821:4;34859:2;34848:9;34844:18;34836:26;;34872:71;34940:1;34929:9;34925:17;34916:6;34872:71;:::i;:::-;34953:72;35021:2;35010:9;35006:18;34997:6;34953:72;:::i;:::-;35035:66;35097:2;35086:9;35082:18;35073:6;35035:66;:::i;:::-;34678:430;;;;;;:::o;35114:233::-;35254:34;35250:1;35242:6;35238:14;35231:58;35323:16;35318:2;35310:6;35306:15;35299:41;35114:233;:::o;35353:366::-;35495:3;35516:67;35580:2;35575:3;35516:67;:::i;:::-;35509:74;;35592:93;35681:3;35592:93;:::i;:::-;35710:2;35705:3;35701:12;35694:19;;35353:366;;;:::o;35725:419::-;35891:4;35929:2;35918:9;35914:18;35906:26;;35978:9;35972:4;35968:20;35964:1;35953:9;35949:17;35942:47;36006:131;36132:4;36006:131;:::i;:::-;35998:139;;35725:419;;;:::o;36150:85::-;36195:7;36224:5;36213:16;;36150:85;;;:::o;36241:86::-;36276:7;36316:4;36309:5;36305:16;36294:27;;36241:86;;;:::o;36333:154::-;36389:9;36422:59;36438:42;36447:32;36473:5;36447:32;:::i;:::-;36438:42;:::i;:::-;36422:59;:::i;:::-;36409:72;;36333:154;;;:::o;36493:143::-;36586:43;36623:5;36586:43;:::i;:::-;36581:3;36574:56;36493:143;;:::o;36642:234::-;36741:4;36779:2;36768:9;36764:18;36756:26;;36792:77;36866:1;36855:9;36851:17;36842:6;36792:77;:::i;:::-;36642:234;;;;:::o;36882:96::-;36940:6;36968:3;36958:13;;36882:96;;;;:::o;36984:140::-;37032:4;37055:3;37047:11;;37078:3;37075:1;37068:14;37112:4;37109:1;37099:18;37091:26;;36984:140;;;:::o;37130:93::-;37167:6;37214:2;37209;37202:5;37198:14;37194:23;37184:33;;37130:93;;;:::o;37229:107::-;37273:8;37323:5;37317:4;37313:16;37292:37;;37229:107;;;;:::o;37342:393::-;37411:6;37461:1;37449:10;37445:18;37484:97;37514:66;37503:9;37484:97;:::i;:::-;37602:39;37632:8;37621:9;37602:39;:::i;:::-;37590:51;;37674:4;37670:9;37663:5;37659:21;37650:30;;37723:4;37713:8;37709:19;37702:5;37699:30;37689:40;;37418:317;;37342:393;;;;;:::o;37741:142::-;37791:9;37824:53;37842:34;37851:24;37869:5;37851:24;:::i;:::-;37842:34;:::i;:::-;37824:53;:::i;:::-;37811:66;;37741:142;;;:::o;37889:75::-;37932:3;37953:5;37946:12;;37889:75;;;:::o;37970:269::-;38080:39;38111:7;38080:39;:::i;:::-;38141:91;38190:41;38214:16;38190:41;:::i;:::-;38182:6;38175:4;38169:11;38141:91;:::i;:::-;38135:4;38128:105;38046:193;37970:269;;;:::o;38245:73::-;38290:3;38245:73;:::o;38324:189::-;38401:32;;:::i;:::-;38442:65;38500:6;38492;38486:4;38442:65;:::i;:::-;38377:136;38324:189;;:::o;38519:186::-;38579:120;38596:3;38589:5;38586:14;38579:120;;;38650:39;38687:1;38680:5;38650:39;:::i;:::-;38623:1;38616:5;38612:13;38603:22;;38579:120;;;38519:186;;:::o;38711:541::-;38811:2;38806:3;38803:11;38800:445;;;38845:37;38876:5;38845:37;:::i;:::-;38928:29;38946:10;38928:29;:::i;:::-;38918:8;38914:44;39111:2;39099:10;39096:18;39093:49;;;39132:8;39117:23;;39093:49;39155:80;39211:22;39229:3;39211:22;:::i;:::-;39201:8;39197:37;39184:11;39155:80;:::i;:::-;38815:430;;38800:445;38711:541;;;:::o;39258:117::-;39312:8;39362:5;39356:4;39352:16;39331:37;;39258:117;;;;:::o;39381:169::-;39425:6;39458:51;39506:1;39502:6;39494:5;39491:1;39487:13;39458:51;:::i;:::-;39454:56;39539:4;39533;39529:15;39519:25;;39432:118;39381:169;;;;:::o;39555:295::-;39631:4;39777:29;39802:3;39796:4;39777:29;:::i;:::-;39769:37;;39839:3;39836:1;39832:11;39826:4;39823:21;39815:29;;39555:295;;;;:::o;39855:1398::-;39977:43;40016:3;40011;39977:43;:::i;:::-;40085:18;40077:6;40074:30;40071:56;;;40107:18;;:::i;:::-;40071:56;40151:38;40183:4;40177:11;40151:38;:::i;:::-;40236:66;40295:6;40287;40281:4;40236:66;:::i;:::-;40329:1;40358:2;40350:6;40347:14;40375:1;40370:631;;;;41045:1;41062:6;41059:84;;;41118:9;41113:3;41109:19;41096:33;41087:42;;41059:84;41169:67;41229:6;41222:5;41169:67;:::i;:::-;41163:4;41156:81;41018:229;40340:907;;40370:631;40422:4;40418:9;40410:6;40406:22;40456:36;40487:4;40456:36;:::i;:::-;40514:1;40528:215;40542:7;40539:1;40536:14;40528:215;;;40628:9;40623:3;40619:19;40606:33;40598:6;40591:49;40679:1;40671:6;40667:14;40657:24;;40726:2;40715:9;40711:18;40698:31;;40565:4;40562:1;40558:12;40553:17;;40528:215;;;40771:6;40762:7;40759:19;40756:186;;;40836:9;40831:3;40827:19;40814:33;40879:48;40921:4;40913:6;40909:17;40898:9;40879:48;:::i;:::-;40871:6;40864:64;40779:163;40756:186;40988:1;40984;40976:6;40972:14;40968:22;40962:4;40955:36;40377:624;;;40340:907;;39952:1301;;;39855:1398;;;:::o;41281:314::-;41377:3;41398:70;41461:6;41456:3;41398:70;:::i;:::-;41391:77;;41478:56;41527:6;41522:3;41515:5;41478:56;:::i;:::-;41559:29;41581:6;41559:29;:::i;:::-;41554:3;41550:39;41543:46;;41281:314;;;;;:::o;41601:329::-;41722:4;41760:2;41749:9;41745:18;41737:26;;41809:9;41803:4;41799:20;41795:1;41784:9;41780:17;41773:47;41837:86;41918:4;41909:6;41901;41837:86;:::i;:::-;41829:94;;41601:329;;;;;:::o;41936:225::-;42076:34;42072:1;42064:6;42060:14;42053:58;42145:8;42140:2;42132:6;42128:15;42121:33;41936:225;:::o;42167:366::-;42309:3;42330:67;42394:2;42389:3;42330:67;:::i;:::-;42323:74;;42406:93;42495:3;42406:93;:::i;:::-;42524:2;42519:3;42515:12;42508:19;;42167:366;;;:::o;42539:419::-;42705:4;42743:2;42732:9;42728:18;42720:26;;42792:9;42786:4;42782:20;42778:1;42767:9;42763:17;42756:47;42820:131;42946:4;42820:131;:::i;:::-;42812:139;;42539:419;;;:::o;42964:167::-;43104:19;43100:1;43092:6;43088:14;43081:43;42964:167;:::o;43137:366::-;43279:3;43300:67;43364:2;43359:3;43300:67;:::i;:::-;43293:74;;43376:93;43465:3;43376:93;:::i;:::-;43494:2;43489:3;43485:12;43478:19;;43137:366;;;:::o;43509:419::-;43675:4;43713:2;43702:9;43698:18;43690:26;;43762:9;43756:4;43752:20;43748:1;43737:9;43733:17;43726:47;43790:131;43916:4;43790:131;:::i;:::-;43782:139;;43509:419;;;:::o;43934:162::-;44074:14;44070:1;44062:6;44058:14;44051:38;43934:162;:::o;44102:366::-;44244:3;44265:67;44329:2;44324:3;44265:67;:::i;:::-;44258:74;;44341:93;44430:3;44341:93;:::i;:::-;44459:2;44454:3;44450:12;44443:19;;44102:366;;;:::o;44474:419::-;44640:4;44678:2;44667:9;44663:18;44655:26;;44727:9;44721:4;44717:20;44713:1;44702:9;44698:17;44691:47;44755:131;44881:4;44755:131;:::i;:::-;44747:139;;44474:419;;;:::o;44899:166::-;45039:18;45035:1;45027:6;45023:14;45016:42;44899:166;:::o;45071:366::-;45213:3;45234:67;45298:2;45293:3;45234:67;:::i;:::-;45227:74;;45310:93;45399:3;45310:93;:::i;:::-;45428:2;45423:3;45419:12;45412:19;;45071:366;;;:::o;45443:419::-;45609:4;45647:2;45636:9;45632:18;45624:26;;45696:9;45690:4;45686:20;45682:1;45671:9;45667:17;45660:47;45724:131;45850:4;45724:131;:::i;:::-;45716:139;;45443:419;;;:::o;45868:172::-;46008:24;46004:1;45996:6;45992:14;45985:48;45868:172;:::o;46046:366::-;46188:3;46209:67;46273:2;46268:3;46209:67;:::i;:::-;46202:74;;46285:93;46374:3;46285:93;:::i;:::-;46403:2;46398:3;46394:12;46387:19;;46046:366;;;:::o;46418:419::-;46584:4;46622:2;46611:9;46607:18;46599:26;;46671:9;46665:4;46661:20;46657:1;46646:9;46642:17;46635:47;46699:131;46825:4;46699:131;:::i;:::-;46691:139;;46418:419;;;:::o;46843:182::-;46983:34;46979:1;46971:6;46967:14;46960:58;46843:182;:::o;47031:366::-;47173:3;47194:67;47258:2;47253:3;47194:67;:::i;:::-;47187:74;;47270:93;47359:3;47270:93;:::i;:::-;47388:2;47383:3;47379:12;47372:19;;47031:366;;;:::o;47403:419::-;47569:4;47607:2;47596:9;47592:18;47584:26;;47656:9;47650:4;47646:20;47642:1;47631:9;47627:17;47620:47;47684:131;47810:4;47684:131;:::i;:::-;47676:139;;47403:419;;;:::o;47828:194::-;47868:4;47888:20;47906:1;47888:20;:::i;:::-;47883:25;;47922:20;47940:1;47922:20;:::i;:::-;47917:25;;47966:1;47963;47959:9;47951:17;;47990:1;47984:4;47981:11;47978:37;;;47995:18;;:::i;:::-;47978:37;47828:194;;;;:::o;48028:191::-;48068:3;48087:20;48105:1;48087:20;:::i;:::-;48082:25;;48121:20;48139:1;48121:20;:::i;:::-;48116:25;;48164:1;48161;48157:9;48150:16;;48185:3;48182:1;48179:10;48176:36;;;48192:18;;:::i;:::-;48176:36;48028:191;;;;:::o;48225:230::-;48365:34;48361:1;48353:6;48349:14;48342:58;48434:13;48429:2;48421:6;48417:15;48410:38;48225:230;:::o;48461:366::-;48603:3;48624:67;48688:2;48683:3;48624:67;:::i;:::-;48617:74;;48700:93;48789:3;48700:93;:::i;:::-;48818:2;48813:3;48809:12;48802:19;;48461:366;;;:::o;48833:419::-;48999:4;49037:2;49026:9;49022:18;49014:26;;49086:9;49080:4;49076:20;49072:1;49061:9;49057:17;49050:47;49114:131;49240:4;49114:131;:::i;:::-;49106:139;;48833:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"3154800","executionCost":"infinite","totalCost":"infinite"},"external":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"infinite","getAggregator()":"infinite","getAggregatorAddress()":"2632","getFeeDetails()":"4782","getOrderInfo(bytes32)":"infinite","getSupportedInstitutionName(bytes32)":"infinite","getSupportedInstitutions(bytes32)":"infinite","getWhitelistedStatus(address)":"2927","initialize(address)":"187287","isTokenSupported(address)":"2928","owner()":"2567","refund(bytes32,bytes32)":"infinite","renounceOwnership()":"30421","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"infinite","settingManagerBool(bytes32,address,bool)":"infinite","settle(bytes32,bytes32,bytes32,address,uint64,bool)":"infinite","transferOwnership(address)":"30876","updateProtocolAddresses(bytes32,address)":"51646","updateProtocolAggregator(bytes)":"infinite","updateProtocolFees(uint64)":"infinite","withdraw(address,address,uint256)":"infinite"},"internal":{"_calculateFees(bytes32,uint96,bool)":"infinite","_handler(address,uint256,address,address,bytes32)":"infinite","transferSenderFee(bytes32)":"infinite"}},"methodIdentifiers":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"2654ec7e","getAggregator()":"3ad59dbc","getAggregatorAddress()":"e8d6e0de","getFeeDetails()":"b810c636","getOrderInfo(bytes32)":"768c6ec0","getSupportedInstitutionName(bytes32)":"87490d86","getSupportedInstitutions(bytes32)":"02621338","getWhitelistedStatus(address)":"d8e8de34","initialize(address)":"c4d66de8","isTokenSupported(address)":"75151b63","owner()":"8da5cb5b","refund(bytes32,bytes32)":"e4683a79","renounceOwnership()":"715018a6","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"32200882","settingManagerBool(bytes32,address,bool)":"99e3c0b4","settle(bytes32,bytes32,bytes32,address,uint64,bool)":"5fe44cac","transferOwnership(address)":"f2fde38b","updateProtocolAddresses(bytes32,address)":"79a0effb","updateProtocolAggregator(bytes)":"cb79455b","updateProtocolFees(uint64)":"84630736","withdraw(address,address,uint256)":"d9caed12"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"institutionCode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"protocolFee\",\"type\":\"uint64\"}],\"name\":\"PaycrestFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"Refunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"SetAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"SetFeeRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SettingManagerBool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"settlePercent\",\"type\":\"uint96\"}],\"name\":\"Settled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSenderFee\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_institutionCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"_rate\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"_senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_senderFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"createOrder\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"name\":\"getOrderInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"rate\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"isFulfilled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"currentBPS\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaycrest.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"getSupportedInstitutionName\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.InstitutionByCode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"}],\"name\":\"getSupportedInstitutions\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getWhitelistedStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_usdc\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"}],\"name\":\"refund\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"institutions\",\"type\":\"tuple[]\"}],\"name\":\"setSupportedInstitutions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"settingManagerBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_liquidityProvider\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_settlePercent\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isPartner\",\"type\":\"bool\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"updateProtocolAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"updateProtocolAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_protocolFeePercent\",\"type\":\"uint64\"}],\"name\":\"updateProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)\":{\"details\":\"Emitted when deposit is made.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Refunded(bytes32,bytes32)\":{\"details\":\"Emitted when aggregator refund transaction.\"},\"RewardValidator(address,uint256)\":{\"details\":\"Emitted when primary validator get therir rewards.\"},\"Settled(bytes32,bytes32,bytes32,address,uint96)\":{\"details\":\"Emitted when aggregator settle transaction.\"},\"TransferSenderFee(address,uint256)\":{\"details\":\"Emitted when sender get therir rewards.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"details\":\"See {createOrder-IPaycrest}. \"},\"getAggregator()\":{\"details\":\"See {getAggregator-IPaycrest}. \"},\"getAggregatorAddress()\":{\"details\":\"See {getAggregatorAddress-IPaycrest}. \"},\"getFeeDetails()\":{\"details\":\"See {getFeeDetails-IPaycrest}. \"},\"getOrderInfo(bytes32)\":{\"details\":\"See {getOrderInfo-IPaycrest}. \"},\"getSupportedInstitutionName(bytes32)\":{\"details\":\"See {getSupportedInstitutionName-IPaycrest}. \"},\"getWhitelistedStatus(address)\":{\"details\":\"See {getWhitelistedStatus-IPaycrest}. \"},\"isTokenSupported(address)\":{\"details\":\"See {isTokenSupported-IPaycrest}. \"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"refund(bytes32,bytes32)\":{\"details\":\"See {refund-IPaycrest}. \"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"settle(bytes32,bytes32,bytes32,address,uint64,bool)\":{\"details\":\"See {settle-IPaycrest}. \"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Paycrest.sol\":\"Paycrest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n /**\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n /**\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n */\\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n /**\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n }\\n\\n /**\\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n }\\n }\\n\\n /**\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\n */\\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n _callOptionalReturn(token, approvalCall);\\n }\\n }\\n\\n /**\\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n * Revert on invalid signature.\\n */\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n *\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n */\\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n // and not revert is the subcall reverts.\\n\\n (bool success, bytes memory returndata) = address(token).call(data);\\n return\\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n mstore(0x1c, hash)\\n message := keccak256(0x00, 0x3c)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n mstore(add(ptr, 0x02), domainSeparator)\\n mstore(add(ptr, 0x22), structHash)\\n data := keccak256(ptr, 0x42)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n * `validator` and `data` according to the version 0 of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n }\\n}\\n\",\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/Paycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport {PaycrestSettingManager} from \\\"./PaycrestSettingManager.sol\\\";\\nimport {IPaycrest, IERC20} from \\\"./interface/IPaycrest.sol\\\";\\ncontract Paycrest is IPaycrest, PaycrestSettingManager { \\n using SafeERC20Upgradeable for IERC20;\\n using ECDSAUpgradeable for bytes32;\\n struct fee {\\n uint256 protocolFee;\\n uint256 liquidityProviderAmount;\\n }\\n mapping(bytes32 => Order) private order;\\n mapping(address => uint256) private _nonce;\\n uint256[50] private __gap;\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n function initialize(address _usdc) external initializer { \\n _isTokenSupported[_usdc] = true; \\n MAX_BPS = 100_000; \\n protocolFeePercent = 5000; // 5%\\n __Ownable_init();\\n }\\n\\n modifier onlyAggregator {\\n require(msg.sender == _aggregatorAddress, \\\"OnlyAggregator\\\");\\n _;\\n }\\n \\n /* ##################################################################\\n USER CALLS\\n ################################################################## */\\n /** @dev See {createOrder-IPaycrest}. */\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash\\n ) external returns(bytes32 orderId) {\\n // checks that are required\\n _handler(_token, _amount, _refundAddress, _senderFeeRecipient, _institutionCode);\\n // require that sender fee is less than protocol fee\\n require(_senderFee <= (_amount * protocolFeePercent) / MAX_BPS, \\\"SenderFeeTooHigh\\\");\\n // first transfer token from msg.sender\\n IERC20(_token).transferFrom(msg.sender, address(this), _amount);\\n // increase users nonce to avoid replay attacks\\n _nonce[msg.sender] ++;\\n // @chibie @5ran6\\n // @todo sender fee should have limit, let say the maximum amount of sender fee should be 1% of the amount\\n // generate transaction id for the transaction\\n orderId = keccak256(abi.encode(msg.sender, _nonce[msg.sender]));\\n // update transaction\\n order[orderId] = Order({\\n seller: msg.sender,\\n token: _token,\\n senderFeeRecipient: _senderFeeRecipient,\\n senderFee: _senderFee,\\n rate: _rate,\\n isFulfilled: false,\\n refundAddress: _refundAddress,\\n currentBPS: uint64(MAX_BPS),\\n amount: _amount\\n });\\n // emit deposit event\\n emit Deposit(_token, _amount, orderId, _rate, _institutionCode, _label, messageHash);\\n }\\n\\n function _handler(address _token, uint256 _amount, address _refundAddress, address _senderFeeRecipient, bytes32 _institutionCode) internal view {\\n // use require for all the custom errors\\n require(_isTokenSupported[_token], \\\"TokenNotSupported\\\");\\n require(_amount > 0, \\\"AmountIsZero\\\");\\n require(_refundAddress != address(0), \\\"ThrowZeroAddress\\\");\\n require(_senderFeeRecipient != address(0), \\\"ThrowZeroAddress\\\");\\n require(supportedInstitutionsByCode[_institutionCode].name != bytes32(0), \\\"InvalidInstitutionCode\\\");\\n }\\n\\n /* ##################################################################\\n AGGREGATOR FUNCTIONS\\n ################################################################## */\\n /** @dev See {settle-IPaycrest}. */\\n function settle(\\n bytes32 _splitOrderId,\\n bytes32 _orderId, \\n bytes32 _label,\\n address _liquidityProvider, \\n uint64 _settlePercent,\\n bool _isPartner\\n ) external onlyAggregator() returns(bytes32, address) {\\n // ensure the transaction has not been fulfilled\\n require(!order[_orderId].isFulfilled, \\\"OrderFulfilled\\\");\\n // load the token into memory\\n address token = order[_orderId].token;\\n // substract sum of amount based on the input _settlePercent\\n order[_orderId].currentBPS -= _settlePercent;\\n // if transaction amount is zero\\n // load the fees and transfer associated protocol fees to protocol fee recipient\\n ( fee memory _feeParams ) = _calculateFees(_orderId, _settlePercent, _isPartner);\\n if(order[_orderId].currentBPS == 0) {\\n // update the transaction to be fulfilled\\n order[_orderId].isFulfilled = true;\\n if (order[_orderId].senderFee > 0) {\\n // transfer sender fee\\n transferSenderFee(_orderId);\\n }\\n }\\n \\n if (_feeParams.protocolFee > 0) {\\n // transfer protocol fee\\n IERC20(token).transfer(feeRecipient, _feeParams.protocolFee);\\n }\\n // // transfer to liquidity provider \\n IERC20(token).transfer(_liquidityProvider, _feeParams.liquidityProviderAmount);\\n\\n // emit event\\n emit Settled(_splitOrderId, _orderId, _label, _liquidityProvider, _settlePercent);\\n return (_orderId, token);\\n }\\n\\n function transferSenderFee(bytes32 _orderId) internal {\\n address recipient = order[_orderId].senderFeeRecipient;\\n uint256 _fee = order[_orderId].senderFee;\\n // transfer sender fee\\n IERC20(order[_orderId].token).transfer(recipient, _fee);\\n // emmit event\\n emit TransferSenderFee(recipient, _fee);\\n }\\n\\n /** @dev See {refund-IPaycrest}. */\\n function refund(bytes32 _orderId, bytes32 _label) external onlyAggregator() returns(bool) {\\n // ensure the transaction has not been fulfilled\\n require(!order[_orderId].isFulfilled, \\\"OrderFulfilled\\\");\\n // reser state values\\n order[_orderId].isFulfilled = true;\\n order[_orderId].currentBPS = 0;\\n // transfer to seller \\n IERC20(order[_orderId].token).transfer(order[_orderId].refundAddress, order[_orderId].amount);\\n // emit\\n emit Refunded(_orderId, _label);\\n return true;\\n }\\n\\n function _calculateFees(bytes32 _orderId, uint96 _settlePercent, bool _isPartner) private view returns(fee memory _feeParams ) {\\n // get the total amount associated with the orderId\\n uint256 amount = order[_orderId].amount;\\n // get sender fee from amount\\n amount = amount - order[_orderId].senderFee;\\n // get the settled percent that is scheduled for this amount\\n _feeParams.liquidityProviderAmount = (amount * _settlePercent) / MAX_BPS;\\n // deduct protocol fees from the new total amount\\n _feeParams.protocolFee = (_feeParams.liquidityProviderAmount * protocolFeePercent) / MAX_BPS; \\n // substract total fees from the new amount after getting the scheduled amount\\n _feeParams.liquidityProviderAmount = (_feeParams.liquidityProviderAmount - _feeParams.protocolFee);\\n // if (_isPartner) protocol fee should be 0, and the whole protocol fee should be added to liquidity provider\\n if (_isPartner) {\\n _feeParams.liquidityProviderAmount += _feeParams.protocolFee;\\n _feeParams.protocolFee = 0;\\n }\\n }\\n \\n /* ##################################################################\\n VIEW CALLS\\n ################################################################## */\\n /** @dev See {getOrderInfo-IPaycrest}. */\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory) {\\n return order[_orderId];\\n }\\n\\n /** @dev See {isTokenSupported-IPaycrest}. */\\n function isTokenSupported(address _token) external view returns(bool) {\\n return _isTokenSupported[_token];\\n }\\n\\n /** @dev See {getSupportedInstitutionName-IPaycrest}. */\\n function getSupportedInstitutionName(bytes32 code) external view returns (InstitutionByCode memory) {\\n return supportedInstitutionsByCode[code];\\n }\\n\\n function getSupportedInstitutions(bytes32 currency) external view returns (Institution[] memory) {\\n Institution[] memory institutions = supportedInstitutions[currency];\\n uint256 length = institutions.length;\\n Institution[] memory result = new Institution[](length);\\n \\n for (uint256 i = 0; i < length; ) {\\n result[i] = institutions[i];\\n unchecked {\\n i++;\\n }\\n }\\n \\n return result;\\n }\\n\\n /** @dev See {getFeeDetails-IPaycrest}. */\\n function getFeeDetails() external view returns(\\n uint64, \\n uint256\\n ) {\\n return(protocolFeePercent, MAX_BPS);\\n }\\n\\n /** @dev See {getAggregatorAddress-IPaycrest}. */\\n function getAggregatorAddress() external view returns(address) {\\n return _aggregatorAddress;\\n }\\n\\n /** @dev See {getWhitelistedStatus-IPaycrest}. */\\n function getWhitelistedStatus(address sender) external view returns(bool) {\\n return _isWhitelisted[sender];\\n }\\n\\n /** @dev See {getAggregator-IPaycrest}. */\\n function getAggregator() external view returns(bytes memory) {\\n return _aggregator;\\n }\\n\\n\\n // DECLARE A FUNCTION TO WITHDRAW ANY TOKEN FROM CONTRACT CAN ONLY NE CALLED BY OWNER\\n function withdraw(address _token, address _recipient, uint256 _amount) external onlyOwner {\\n IERC20(_token).transfer(_recipient, _amount);\\n }\\n\\n}\\n\",\"keccak256\":\"0xb0f04d07b7ad95f39c6fad6855c419895a10a7d8abf4556e46464c04153dcab0\",\"license\":\"UNLICENSED\"},\"contracts/PaycrestSettingManager.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\n\\ncontract PaycrestSettingManager is OwnableUpgradeable { \\n struct Institution {\\n bytes32 code; // usually not more than 8 letters\\n bytes32 name; // \\n }\\n struct InstitutionByCode {\\n bytes32 name;\\n bytes32 currency;\\n }\\n uint256 internal MAX_BPS;\\n uint64 internal protocolFeePercent; // 5%\\n address internal feeRecipient;\\n address internal _aggregatorAddress;\\n bytes internal _aggregator;\\n \\n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\\n uint256[50] private __gap;\\n\\n mapping(address => bool) internal _isTokenSupported;\\n mapping(address => bool) internal _isWhitelisted;\\n\\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\\n\\n event SettingManagerBool(bytes32 what, address value, bool status);\\n event PaycrestFees(uint64 protocolFee);\\n event SetAggregator(bytes aggregator);\\n event SetFeeRecipient(address feeRecipient);\\n \\n /* ##################################################################\\n OWNER FUNCTIONS\\n ################################################################## */\\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"token\\\") _isTokenSupported[value] = status;\\n if (what == \\\"whitelist\\\") _isWhitelisted[value] = status;\\n\\n emit SettingManagerBool(what, value, status);\\n }\\n\\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \\n uint256 length = institutions.length;\\n for (uint i = 0; i < length; ) {\\n supportedInstitutions[currency].push(institutions[i]);\\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\\n name: institutions[i].name, currency: currency\\n });\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function updateProtocolFees(uint64 _protocolFeePercent) external onlyOwner {\\n protocolFeePercent = _protocolFeePercent;\\n emit PaycrestFees(_protocolFeePercent);\\n }\\n\\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"fee\\\") feeRecipient = value;\\n if (what == \\\"aggregator\\\") _aggregatorAddress = value;\\n }\\n\\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\\n _aggregator = aggregator;\\n emit SetAggregator(aggregator);\\n }\\n\\n}\\n\",\"keccak256\":\"0xa7a73992f19899060ce30182c809c3bd02ce01e4675de7e0ddd1701deccb25f9\",\"license\":\"UNLICENSED\"},\"contracts/interface/IPaycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n/**\\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\\n * Factory and global config params\\n */\\ninterface IPaycrest {\\n \\n /* ##################################################################\\n EVENTS\\n ################################################################## */\\n /// @dev Emitted when deposit is made.\\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\\n /// @dev Emitted when aggregator settle transaction.\\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\\n /// @dev Emitted when aggregator refund transaction.\\n event Refunded(bytes32 indexed orderId, bytes32 label);\\n /// @dev Emitted when sender get therir rewards.\\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\\n /// @dev Emitted when primary validator get therir rewards.\\n event RewardValidator(address indexed validator, uint256 indexed amount);\\n\\n /* ##################################################################\\n STRUCTS\\n ################################################################## */\\n struct TransactionMetadata {\\n bytes8 identifier; // slot 0\\n bytes8 institution; // slot 0\\n bytes8 name; // slot 0\\n bytes8 currency; // slot 0\\n uint256 liquidityProviderID; // slot 1\\n }\\n\\n struct Order {\\n address seller; // slot 0\\n address token; // slot 1\\n address senderFeeRecipient;\\n uint256 senderFee;\\n uint96 rate; // slot 1\\n bool isFulfilled; // slot 2 {11 bytes available}\\n address refundAddress; // slot 2 {12 bytes available}\\n uint96 currentBPS; // slot 2 {}\\n uint256 amount; // slot 3\\n }\\n\\n\\n /* ##################################################################\\n EXTERNAL CALLS\\n ################################################################## */\\n /// @notice lock sender `_amount` of `token` into Paycrest.\\n /// Requirements:\\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _token address of the token.\\n /// @param _amount amount in the decimal of `_token` above.\\n /// @param _institutionCode institution code of the sender.\\n /// @param _label reference of the sender.\\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\\n /// @return _orderId the bytes20 which is the orderId\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash) external returns(bytes32 _orderId);\\n\\n /// @notice settle transaction and distribute rewards accordingly.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @param _liquidityProvider address of the liquidity provider.\\n /// @param _settlePercent rate at which the transaction is settled.\\n /// @param _isPartner is the liquidity provider a partner.\\n /// @return return the status of transaction {bool}\\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\\n\\n /// @notice refund to the specified refundable address.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `isFulfilled` must be false.\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @return return the status of transaction {bool}\\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\\n\\n /// @notice get supported token from Paycrest.\\n /// @param _token address of the token to check.\\n /// @return return the status of `_token` {bool}\\n function isTokenSupported(address _token) external view returns(bool);\\n\\n /// @notice get order details.\\n /// @param _orderId transaction Id.\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\\n\\n /// @notice get every rewards and address on Paycrest.\\n /// @return protocolReward amount that will be taken in percentage on all trade.\\n /// @return max_bps maximum amount in bps \\\"100% == 100_000\\\".\\n function getFeeDetails() external view returns(\\n uint64 protocolReward, \\n uint256 max_bps\\n );\\n\\n /// @notice get address of liquidity aggregator.\\n /// @return address of `Aggregator`.\\n function getAggregatorAddress() external view returns(address);\\n\\n /// @notice get aggregator public key.\\n /// @return aggregator public key.\\n function getAggregator() external view returns(bytes memory);\\n \\n /// @notice get address of sender whitelisting status.\\n /// @param sender address of the sender.\\n /// @return address of `status`.\\n function getWhitelistedStatus(address sender) external view returns(bool);\\n\\n}\\n\",\"keccak256\":\"0x198ea288244ee5a444a202088748913df1d930f9561fda95a120ff81c9bcb04b\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"contracts/Paycrest.sol:Paycrest","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"contracts/Paycrest.sol:Paycrest","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"contracts/Paycrest.sol:Paycrest","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":3533,"contract":"contracts/Paycrest.sol:Paycrest","label":"MAX_BPS","offset":0,"slot":"101","type":"t_uint256"},{"astId":3535,"contract":"contracts/Paycrest.sol:Paycrest","label":"protocolFeePercent","offset":0,"slot":"102","type":"t_uint64"},{"astId":3537,"contract":"contracts/Paycrest.sol:Paycrest","label":"feeRecipient","offset":8,"slot":"102","type":"t_address"},{"astId":3539,"contract":"contracts/Paycrest.sol:Paycrest","label":"_aggregatorAddress","offset":0,"slot":"103","type":"t_address"},{"astId":3541,"contract":"contracts/Paycrest.sol:Paycrest","label":"_aggregator","offset":0,"slot":"104","type":"t_bytes_storage"},{"astId":3545,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"105","type":"t_array(t_uint256)50_storage"},{"astId":3549,"contract":"contracts/Paycrest.sol:Paycrest","label":"_isTokenSupported","offset":0,"slot":"155","type":"t_mapping(t_address,t_bool)"},{"astId":3553,"contract":"contracts/Paycrest.sol:Paycrest","label":"_isWhitelisted","offset":0,"slot":"156","type":"t_mapping(t_address,t_bool)"},{"astId":3559,"contract":"contracts/Paycrest.sol:Paycrest","label":"supportedInstitutions","offset":0,"slot":"157","type":"t_mapping(t_bytes32,t_array(t_struct(Institution)3526_storage)dyn_storage)"},{"astId":3564,"contract":"contracts/Paycrest.sol:Paycrest","label":"supportedInstitutionsByCode","offset":0,"slot":"158","type":"t_mapping(t_bytes32,t_struct(InstitutionByCode)3531_storage)"},{"astId":2836,"contract":"contracts/Paycrest.sol:Paycrest","label":"order","offset":0,"slot":"159","type":"t_mapping(t_bytes32,t_struct(Order)3841_storage)"},{"astId":2840,"contract":"contracts/Paycrest.sol:Paycrest","label":"_nonce","offset":0,"slot":"160","type":"t_mapping(t_address,t_uint256)"},{"astId":2844,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"161","type":"t_array(t_uint256)50_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Institution)3526_storage)dyn_storage":{"base":"t_struct(Institution)3526_storage","encoding":"dynamic_array","label":"struct PaycrestSettingManager.Institution[]","numberOfBytes":"32"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_array(t_struct(Institution)3526_storage)dyn_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])","numberOfBytes":"32","value":"t_array(t_struct(Institution)3526_storage)dyn_storage"},"t_mapping(t_bytes32,t_struct(InstitutionByCode)3531_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)","numberOfBytes":"32","value":"t_struct(InstitutionByCode)3531_storage"},"t_mapping(t_bytes32,t_struct(Order)3841_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct IPaycrest.Order)","numberOfBytes":"32","value":"t_struct(Order)3841_storage"},"t_struct(Institution)3526_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.Institution","members":[{"astId":3523,"contract":"contracts/Paycrest.sol:Paycrest","label":"code","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3525,"contract":"contracts/Paycrest.sol:Paycrest","label":"name","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(InstitutionByCode)3531_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.InstitutionByCode","members":[{"astId":3528,"contract":"contracts/Paycrest.sol:Paycrest","label":"name","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3530,"contract":"contracts/Paycrest.sol:Paycrest","label":"currency","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(Order)3841_storage":{"encoding":"inplace","label":"struct IPaycrest.Order","members":[{"astId":3824,"contract":"contracts/Paycrest.sol:Paycrest","label":"seller","offset":0,"slot":"0","type":"t_address"},{"astId":3826,"contract":"contracts/Paycrest.sol:Paycrest","label":"token","offset":0,"slot":"1","type":"t_address"},{"astId":3828,"contract":"contracts/Paycrest.sol:Paycrest","label":"senderFeeRecipient","offset":0,"slot":"2","type":"t_address"},{"astId":3830,"contract":"contracts/Paycrest.sol:Paycrest","label":"senderFee","offset":0,"slot":"3","type":"t_uint256"},{"astId":3832,"contract":"contracts/Paycrest.sol:Paycrest","label":"rate","offset":0,"slot":"4","type":"t_uint96"},{"astId":3834,"contract":"contracts/Paycrest.sol:Paycrest","label":"isFulfilled","offset":12,"slot":"4","type":"t_bool"},{"astId":3836,"contract":"contracts/Paycrest.sol:Paycrest","label":"refundAddress","offset":0,"slot":"5","type":"t_address"},{"astId":3838,"contract":"contracts/Paycrest.sol:Paycrest","label":"currentBPS","offset":20,"slot":"5","type":"t_uint96"},{"astId":3840,"contract":"contracts/Paycrest.sol:Paycrest","label":"amount","offset":0,"slot":"6","type":"t_uint256"}],"numberOfBytes":"224"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/PaycrestSettingManager.sol":{"PaycrestSettingManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"protocolFee","type":"uint64"}],"name":"PaycrestFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"SetAggregator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SettingManagerBool","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"institutions","type":"tuple[]"}],"name":"setSupportedInstitutions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"settingManagerBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"updateProtocolAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"updateProtocolAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_protocolFeePercent","type":"uint64"}],"name":"updateProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506112ec806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100eb57806399e3c0b414610109578063cb79455b14610125578063f2fde38b1461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b357806384630736146100cf575b600080fd5b6100a760048036038101906100a29190610a3a565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610af4565b610285565b005b6100e960048036038101906100e49190610b74565b6103d2565b005b6100f361043d565b6040516101009190610bb0565b60405180910390f35b610123600480360381019061011e9190610c03565b610467565b005b61013f600480360381019061013a9190610cb1565b61061c565b005b61015b60048036038101906101569190610cfe565b610673565b005b6101656106f6565b60008151905060005b8181101561026b57609d600085815260200190815260200160002083828151811061019c5761019b610d2b565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d2b565b5b602002602001015160200151815260200185815250609e600085848151811061022d5761022c610d2b565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b6102796106f6565b6102836000610774565b565b61028d6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610db7565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6103da6106f6565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a9816040516104329190610de6565b60405180910390a150565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61046f6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d590610db7565b60405180910390fd5b7f746f6b656e000000000000000000000000000000000000000000000000000000830361055d5780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105dc5780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161060f93929190610e1f565b60405180910390a1505050565b6106246106f6565b818160689182610635929190611077565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051610667929190611194565b60405180910390a15050565b61067b6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e19061122a565b60405180910390fd5b6106f381610774565b50565b6106fe61083a565b73ffffffffffffffffffffffffffffffffffffffff1661071c61043d565b73ffffffffffffffffffffffffffffffffffffffff1614610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611296565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61086981610856565b811461087457600080fd5b50565b60008135905061088681610860565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6108da82610891565b810181811067ffffffffffffffff821117156108f9576108f86108a2565b5b80604052505050565b600061090c610842565b905061091882826108d1565b919050565b600067ffffffffffffffff821115610938576109376108a2565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109695761096861094e565b5b6109736040610902565b9050600061098384828501610877565b600083015250602061099784828501610877565b60208301525092915050565b60006109b66109b18461091d565b610902565b905080838252602082019050604084028301858111156109d9576109d8610949565b5b835b81811015610a0257806109ee8882610953565b8452602084019350506040810190506109db565b5050509392505050565b600082601f830112610a2157610a2061088c565b5b8135610a318482602086016109a3565b91505092915050565b60008060408385031215610a5157610a5061084c565b5b6000610a5f85828601610877565b925050602083013567ffffffffffffffff811115610a8057610a7f610851565b5b610a8c85828601610a0c565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ac182610a96565b9050919050565b610ad181610ab6565b8114610adc57600080fd5b50565b600081359050610aee81610ac8565b92915050565b60008060408385031215610b0b57610b0a61084c565b5b6000610b1985828601610877565b9250506020610b2a85828601610adf565b9150509250929050565b600067ffffffffffffffff82169050919050565b610b5181610b34565b8114610b5c57600080fd5b50565b600081359050610b6e81610b48565b92915050565b600060208284031215610b8a57610b8961084c565b5b6000610b9884828501610b5f565b91505092915050565b610baa81610ab6565b82525050565b6000602082019050610bc56000830184610ba1565b92915050565b60008115159050919050565b610be081610bcb565b8114610beb57600080fd5b50565b600081359050610bfd81610bd7565b92915050565b600080600060608486031215610c1c57610c1b61084c565b5b6000610c2a86828701610877565b9350506020610c3b86828701610adf565b9250506040610c4c86828701610bee565b9150509250925092565b600080fd5b60008083601f840112610c7157610c7061088c565b5b8235905067ffffffffffffffff811115610c8e57610c8d610c56565b5b602083019150836001820283011115610caa57610ca9610949565b5b9250929050565b60008060208385031215610cc857610cc761084c565b5b600083013567ffffffffffffffff811115610ce657610ce5610851565b5b610cf285828601610c5b565b92509250509250929050565b600060208284031215610d1457610d1361084c565b5b6000610d2284828501610adf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610da1601683610d5a565b9150610dac82610d6b565b602082019050919050565b60006020820190508181036000830152610dd081610d94565b9050919050565b610de081610b34565b82525050565b6000602082019050610dfb6000830184610dd7565b92915050565b610e0a81610856565b82525050565b610e1981610bcb565b82525050565b6000606082019050610e346000830186610e01565b610e416020830185610ba1565b610e4e6040830184610e10565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ea857607f821691505b602082108103610ebb57610eba610e61565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610ee6565b610f2d8683610ee6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610f74610f6f610f6a84610f45565b610f4f565b610f45565b9050919050565b6000819050919050565b610f8e83610f59565b610fa2610f9a82610f7b565b848454610ef3565b825550505050565b600090565b610fb7610faa565b610fc2818484610f85565b505050565b5b81811015610fe657610fdb600082610faf565b600181019050610fc8565b5050565b601f82111561102b57610ffc81610ec1565b61100584610ed6565b81016020851015611014578190505b61102861102085610ed6565b830182610fc7565b50505b505050565b600082821c905092915050565b600061104e60001984600802611030565b1980831691505092915050565b6000611067838361103d565b9150826002028217905092915050565b6110818383610e56565b67ffffffffffffffff81111561109a576110996108a2565b5b6110a48254610e90565b6110af828285610fea565b6000601f8311600181146110de57600084156110cc578287013590505b6110d6858261105b565b86555061113e565b601f1984166110ec86610ec1565b60005b82811015611114578489013582556001820191506020850194506020810190506110ef565b86831015611131578489013561112d601f89168261103d565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111738385611147565b9350611180838584611158565b61118983610891565b840190509392505050565b600060208201905081810360008301526111af818486611167565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611214602683610d5a565b915061121f826111b8565b604082019050919050565b6000602082019050818103600083015261124381611207565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611280602083610d5a565b915061128b8261124a565b602082019050919050565b600060208201905081810360008301526112af81611273565b905091905056fea264697066735822122050b41f080926bf4f9f186583798e139b279542447fd028eba1d461cde298594564736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12EC DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x141 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x32200882 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x84630736 EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH2 0x3D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF3 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x100 SWAP2 SWAP1 PUSH2 0xBB0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x11E SWAP2 SWAP1 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x467 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13A SWAP2 SWAP1 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x61C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0xCFE JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x165 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x9D PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19C JUMPI PUSH2 0x19B PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x201 JUMPI PUSH2 0x200 PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9E PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x22D JUMPI PUSH2 0x22C PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x16E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x279 PUSH2 0x6F6 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x0 PUSH2 0x774 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x365 JUMPI DUP1 PUSH1 0x66 PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x3CE JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x6F6 JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC8CA786C100BC62A0DFFBE768B5F0B770D84E8604C5DE54B54197B9066BB42A9 DUP2 PUSH1 0x40 MLOAD PUSH2 0x432 SWAP2 SWAP1 PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x46F PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D5 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x55D JUMPI DUP1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x5DC JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x60F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x624 PUSH2 0x6F6 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x68 SWAP2 DUP3 PUSH2 0x635 SWAP3 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x667 SWAP3 SWAP2 SWAP1 PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x67B PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6E1 SWAP1 PUSH2 0x122A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6F3 DUP2 PUSH2 0x774 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6FE PUSH2 0x83A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x71C PUSH2 0x43D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x772 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x769 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x869 DUP2 PUSH2 0x856 JUMP JUMPDEST DUP2 EQ PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x886 DUP2 PUSH2 0x860 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x8DA DUP3 PUSH2 0x891 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x8F9 JUMPI PUSH2 0x8F8 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90C PUSH2 0x842 JUMP JUMPDEST SWAP1 POP PUSH2 0x918 DUP3 DUP3 PUSH2 0x8D1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x938 JUMPI PUSH2 0x937 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x969 JUMPI PUSH2 0x968 PUSH2 0x94E JUMP JUMPDEST JUMPDEST PUSH2 0x973 PUSH1 0x40 PUSH2 0x902 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x983 DUP5 DUP3 DUP6 ADD PUSH2 0x877 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x997 DUP5 DUP3 DUP6 ADD PUSH2 0x877 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B6 PUSH2 0x9B1 DUP5 PUSH2 0x91D JUMP JUMPDEST PUSH2 0x902 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x9D9 JUMPI PUSH2 0x9D8 PUSH2 0x949 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA02 JUMPI DUP1 PUSH2 0x9EE DUP9 DUP3 PUSH2 0x953 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x9DB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA21 JUMPI PUSH2 0xA20 PUSH2 0x88C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA31 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA51 JUMPI PUSH2 0xA50 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA5F DUP6 DUP3 DUP7 ADD PUSH2 0x877 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA80 JUMPI PUSH2 0xA7F PUSH2 0x851 JUMP JUMPDEST JUMPDEST PUSH2 0xA8C DUP6 DUP3 DUP7 ADD PUSH2 0xA0C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC1 DUP3 PUSH2 0xA96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAD1 DUP2 PUSH2 0xAB6 JUMP JUMPDEST DUP2 EQ PUSH2 0xADC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xAEE DUP2 PUSH2 0xAC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB0B JUMPI PUSH2 0xB0A PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB19 DUP6 DUP3 DUP7 ADD PUSH2 0x877 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB2A DUP6 DUP3 DUP7 ADD PUSH2 0xADF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB51 DUP2 PUSH2 0xB34 JUMP JUMPDEST DUP2 EQ PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB6E DUP2 PUSH2 0xB48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB8A JUMPI PUSH2 0xB89 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB98 DUP5 DUP3 DUP6 ADD PUSH2 0xB5F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBAA DUP2 PUSH2 0xAB6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBC5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBA1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBE0 DUP2 PUSH2 0xBCB JUMP JUMPDEST DUP2 EQ PUSH2 0xBEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBFD DUP2 PUSH2 0xBD7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC1C JUMPI PUSH2 0xC1B PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC2A DUP7 DUP3 DUP8 ADD PUSH2 0x877 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC3B DUP7 DUP3 DUP8 ADD PUSH2 0xADF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xC4C DUP7 DUP3 DUP8 ADD PUSH2 0xBEE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC71 JUMPI PUSH2 0xC70 PUSH2 0x88C JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC8E JUMPI PUSH2 0xC8D PUSH2 0xC56 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xCAA JUMPI PUSH2 0xCA9 PUSH2 0x949 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCC8 JUMPI PUSH2 0xCC7 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCE6 JUMPI PUSH2 0xCE5 PUSH2 0x851 JUMP JUMPDEST JUMPDEST PUSH2 0xCF2 DUP6 DUP3 DUP7 ADD PUSH2 0xC5B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD14 JUMPI PUSH2 0xD13 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD22 DUP5 DUP3 DUP6 ADD PUSH2 0xADF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA1 PUSH1 0x16 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0xDAC DUP3 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xDD0 DUP2 PUSH2 0xD94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDE0 DUP2 PUSH2 0xB34 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDFB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDD7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE0A DUP2 PUSH2 0x856 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE19 DUP2 PUSH2 0xBCB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xE34 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0xE41 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0xE4E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE10 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEA8 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEBB JUMPI PUSH2 0xEBA PUSH2 0xE61 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF23 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0xF2D DUP7 DUP4 PUSH2 0xEE6 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF74 PUSH2 0xF6F PUSH2 0xF6A DUP5 PUSH2 0xF45 JUMP JUMPDEST PUSH2 0xF4F JUMP JUMPDEST PUSH2 0xF45 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF8E DUP4 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0xFA2 PUSH2 0xF9A DUP3 PUSH2 0xF7B JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xEF3 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFB7 PUSH2 0xFAA JUMP JUMPDEST PUSH2 0xFC2 DUP2 DUP5 DUP5 PUSH2 0xF85 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFE6 JUMPI PUSH2 0xFDB PUSH1 0x0 DUP3 PUSH2 0xFAF JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xFC8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x102B JUMPI PUSH2 0xFFC DUP2 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x1005 DUP5 PUSH2 0xED6 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1014 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1028 PUSH2 0x1020 DUP6 PUSH2 0xED6 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0xFC7 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x104E PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1030 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1067 DUP4 DUP4 PUSH2 0x103D JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1081 DUP4 DUP4 PUSH2 0xE56 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109A JUMPI PUSH2 0x1099 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST PUSH2 0x10A4 DUP3 SLOAD PUSH2 0xE90 JUMP JUMPDEST PUSH2 0x10AF DUP3 DUP3 DUP6 PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x10DE JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x10CC JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x10D6 DUP6 DUP3 PUSH2 0x105B JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x113E JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x10EC DUP7 PUSH2 0xEC1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1114 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10EF JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x1131 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x112D PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x103D JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1173 DUP4 DUP6 PUSH2 0x1147 JUMP JUMPDEST SWAP4 POP PUSH2 0x1180 DUP4 DUP6 DUP5 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1189 DUP4 PUSH2 0x891 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11AF DUP2 DUP5 DUP7 PUSH2 0x1167 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1214 PUSH1 0x26 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0x121F DUP3 PUSH2 0x11B8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1243 DUP2 PUSH2 0x1207 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1280 PUSH1 0x20 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0x128B DUP3 PUSH2 0x124A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x12AF DUP2 PUSH2 0x1273 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0xB4 0x1F ADDMOD MULMOD 0x26 0xBF 0x4F SWAP16 XOR PUSH6 0x83798E139B27 SWAP6 TIMESTAMP PREVRANDAO PUSH32 0xD028EBA1D461CDE298594564736F6C6343000812003300000000000000000000 ","sourceMap":"139:2737:13:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkOwner_68":{"entryPoint":1782,"id":68,"parameterSlots":0,"returnSlots":0},"@_msgSender_1147":{"entryPoint":2106,"id":1147,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_125":{"entryPoint":1908,"id":125,"parameterSlots":1,"returnSlots":0},"@owner_54":{"entryPoint":1085,"id":54,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_82":{"entryPoint":625,"id":82,"parameterSlots":0,"returnSlots":0},"@setSupportedInstitutions_3686":{"entryPoint":349,"id":3686,"parameterSlots":2,"returnSlots":0},"@settingManagerBool_3632":{"entryPoint":1127,"id":3632,"parameterSlots":3,"returnSlots":0},"@transferOwnership_105":{"entryPoint":1651,"id":105,"parameterSlots":1,"returnSlots":0},"@updateProtocolAddresses_3738":{"entryPoint":645,"id":3738,"parameterSlots":2,"returnSlots":0},"@updateProtocolAggregator_3754":{"entryPoint":1564,"id":3754,"parameterSlots":2,"returnSlots":0},"@updateProtocolFees_3702":{"entryPoint":978,"id":3702,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":2467,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2783,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":2572,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":3054,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":2167,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":3163,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_struct$_Institution_$3526_memory_ptr":{"entryPoint":2387,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint64":{"entryPoint":2911,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3326,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":2804,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_addresst_bool":{"entryPoint":3075,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":2618,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":3249,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint64":{"entryPoint":2932,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":2977,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":3600,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":3585,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":4455,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":4615,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack":{"entryPoint":3476,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":4723,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint64_to_t_uint64_fromStack":{"entryPoint":3543,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":2992,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed":{"entryPoint":3615,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4500,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4650,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3511,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4758,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":3558,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":2306,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":2114,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr":{"entryPoint":2333,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_bytes_storage":{"entryPoint":3777,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_calldata_ptr":{"entryPoint":3670,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":4423,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":3418,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_bytes_storage":{"entryPoint":4074,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":2742,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":3019,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":2134,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2710,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":3909,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint64":{"entryPoint":2868,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":4039,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_uint256_to_t_uint256":{"entryPoint":3929,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage":{"entryPoint":4215,"id":null,"parameterSlots":3,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":4440,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":3798,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":3728,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":4187,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":2257,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":3919,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":4157,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x22":{"entryPoint":3681,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3371,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2210,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":3963,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":3158,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2188,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":2382,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2377,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":2129,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2124,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2193,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":3814,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":4144,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":4015,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":4536,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4":{"entryPoint":3435,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":4682,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":3827,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":3973,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2760,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":3031,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":2144,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint64":{"entryPoint":2888,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":4010,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:19957:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"379:32:15","statements":[{"nodeType":"YulAssignment","src":"389:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:15"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:15","type":""}],"src":"334:77:15"},{"body":{"nodeType":"YulBlock","src":"460:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:15"},"nodeType":"YulFunctionCall","src":"519:12:15"},"nodeType":"YulExpressionStatement","src":"519:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"490:17:15"},"nodeType":"YulFunctionCall","src":"490:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:15"},"nodeType":"YulFunctionCall","src":"480:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:15"},"nodeType":"YulFunctionCall","src":"473:43:15"},"nodeType":"YulIf","src":"470:63:15"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:15","type":""}],"src":"417:122:15"},{"body":{"nodeType":"YulBlock","src":"597:87:15","statements":[{"nodeType":"YulAssignment","src":"607:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:15"},"nodeType":"YulFunctionCall","src":"616:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:15"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"645:26:15"},"nodeType":"YulFunctionCall","src":"645:33:15"},"nodeType":"YulExpressionStatement","src":"645:33:15"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:15","type":""}],"src":"545:139:15"},{"body":{"nodeType":"YulBlock","src":"779:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"796:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"799:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"789:6:15"},"nodeType":"YulFunctionCall","src":"789:12:15"},"nodeType":"YulExpressionStatement","src":"789:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"690:117:15"},{"body":{"nodeType":"YulBlock","src":"861:54:15","statements":[{"nodeType":"YulAssignment","src":"871:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"889:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"896:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"885:3:15"},"nodeType":"YulFunctionCall","src":"885:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"905:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"901:3:15"},"nodeType":"YulFunctionCall","src":"901:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"881:3:15"},"nodeType":"YulFunctionCall","src":"881:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"871:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"844:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"854:6:15","type":""}],"src":"813:102:15"},{"body":{"nodeType":"YulBlock","src":"949:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"966:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"969:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"959:6:15"},"nodeType":"YulFunctionCall","src":"959:88:15"},"nodeType":"YulExpressionStatement","src":"959:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1063:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1066:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1056:6:15"},"nodeType":"YulFunctionCall","src":"1056:15:15"},"nodeType":"YulExpressionStatement","src":"1056:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1087:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1090:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1080:6:15"},"nodeType":"YulFunctionCall","src":"1080:15:15"},"nodeType":"YulExpressionStatement","src":"1080:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"921:180:15"},{"body":{"nodeType":"YulBlock","src":"1150:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1160:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1182:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1212:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1190:21:15"},"nodeType":"YulFunctionCall","src":"1190:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1178:3:15"},"nodeType":"YulFunctionCall","src":"1178:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1164:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1329:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1331:16:15"},"nodeType":"YulFunctionCall","src":"1331:18:15"},"nodeType":"YulExpressionStatement","src":"1331:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1272:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"1284:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1269:2:15"},"nodeType":"YulFunctionCall","src":"1269:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1308:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1320:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1305:2:15"},"nodeType":"YulFunctionCall","src":"1305:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1266:2:15"},"nodeType":"YulFunctionCall","src":"1266:62:15"},"nodeType":"YulIf","src":"1263:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1367:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1371:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1360:6:15"},"nodeType":"YulFunctionCall","src":"1360:22:15"},"nodeType":"YulExpressionStatement","src":"1360:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1136:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"1144:4:15","type":""}],"src":"1107:281:15"},{"body":{"nodeType":"YulBlock","src":"1435:88:15","statements":[{"nodeType":"YulAssignment","src":"1445:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1455:18:15"},"nodeType":"YulFunctionCall","src":"1455:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1445:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1504:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"1512:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1484:19:15"},"nodeType":"YulFunctionCall","src":"1484:33:15"},"nodeType":"YulExpressionStatement","src":"1484:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1419:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1428:6:15","type":""}],"src":"1394:129:15"},{"body":{"nodeType":"YulBlock","src":"1640:229:15","statements":[{"body":{"nodeType":"YulBlock","src":"1745:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1747:16:15"},"nodeType":"YulFunctionCall","src":"1747:18:15"},"nodeType":"YulExpressionStatement","src":"1747:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1717:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1725:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1714:2:15"},"nodeType":"YulFunctionCall","src":"1714:30:15"},"nodeType":"YulIf","src":"1711:56:15"},{"nodeType":"YulAssignment","src":"1777:25:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1789:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1797:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1785:3:15"},"nodeType":"YulFunctionCall","src":"1785:17:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1777:4:15"}]},{"nodeType":"YulAssignment","src":"1839:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1851:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"1857:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1847:3:15"},"nodeType":"YulFunctionCall","src":"1847:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1839:4:15"}]}]},"name":"array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1624:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1635:4:15","type":""}],"src":"1529:340:15"},{"body":{"nodeType":"YulBlock","src":"1964:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1981:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1984:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1974:6:15"},"nodeType":"YulFunctionCall","src":"1974:12:15"},"nodeType":"YulExpressionStatement","src":"1974:12:15"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"1875:117:15"},{"body":{"nodeType":"YulBlock","src":"2087:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2104:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2107:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2097:6:15"},"nodeType":"YulFunctionCall","src":"2097:12:15"},"nodeType":"YulExpressionStatement","src":"2097:12:15"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"1998:117:15"},{"body":{"nodeType":"YulBlock","src":"2210:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2227:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2230:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2220:6:15"},"nodeType":"YulFunctionCall","src":"2220:12:15"},"nodeType":"YulExpressionStatement","src":"2220:12:15"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"2121:117:15"},{"body":{"nodeType":"YulBlock","src":"2377:494:15","statements":[{"body":{"nodeType":"YulBlock","src":"2421:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"2423:77:15"},"nodeType":"YulFunctionCall","src":"2423:79:15"},"nodeType":"YulExpressionStatement","src":"2423:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"2398:3:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"2403:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2394:3:15"},"nodeType":"YulFunctionCall","src":"2394:19:15"},{"kind":"number","nodeType":"YulLiteral","src":"2415:4:15","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2390:3:15"},"nodeType":"YulFunctionCall","src":"2390:30:15"},"nodeType":"YulIf","src":"2387:117:15"},{"nodeType":"YulAssignment","src":"2513:30:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2538:4:15","type":"","value":"0x40"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2522:15:15"},"nodeType":"YulFunctionCall","src":"2522:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2513:5:15"}]},{"nodeType":"YulBlock","src":"2553:150:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2588:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"2602:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2592:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2628:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2635:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2624:3:15"},"nodeType":"YulFunctionCall","src":"2624:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2667:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"2678:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2663:3:15"},"nodeType":"YulFunctionCall","src":"2663:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"2687:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2642:20:15"},"nodeType":"YulFunctionCall","src":"2642:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2617:6:15"},"nodeType":"YulFunctionCall","src":"2617:75:15"},"nodeType":"YulExpressionStatement","src":"2617:75:15"}]},{"nodeType":"YulBlock","src":"2713:151:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2748:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"2762:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2752:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2789:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2796:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2785:3:15"},"nodeType":"YulFunctionCall","src":"2785:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2828:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"2839:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2824:3:15"},"nodeType":"YulFunctionCall","src":"2824:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"2848:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2803:20:15"},"nodeType":"YulFunctionCall","src":"2803:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2778:6:15"},"nodeType":"YulFunctionCall","src":"2778:75:15"},"nodeType":"YulExpressionStatement","src":"2778:75:15"}]}]},"name":"abi_decode_t_struct$_Institution_$3526_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2352:9:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"2363:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2371:5:15","type":""}],"src":"2293:578:15"},{"body":{"nodeType":"YulBlock","src":"3059:666:15","statements":[{"nodeType":"YulAssignment","src":"3069:119:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3180:6:15"}],"functionName":{"name":"array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3094:85:15"},"nodeType":"YulFunctionCall","src":"3094:93:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3078:15:15"},"nodeType":"YulFunctionCall","src":"3078:110:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3069:5:15"}]},{"nodeType":"YulVariableDeclaration","src":"3197:16:15","value":{"name":"array","nodeType":"YulIdentifier","src":"3208:5:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"3201:3:15","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3230:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"3237:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3223:6:15"},"nodeType":"YulFunctionCall","src":"3223:21:15"},"nodeType":"YulExpressionStatement","src":"3223:21:15"},{"nodeType":"YulAssignment","src":"3253:23:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3264:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"3271:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3260:3:15"},"nodeType":"YulFunctionCall","src":"3260:16:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3253:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"3286:44:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3304:6:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3316:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3324:4:15","type":"","value":"0x40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3312:3:15"},"nodeType":"YulFunctionCall","src":"3312:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3300:3:15"},"nodeType":"YulFunctionCall","src":"3300:30:15"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"3290:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3358:103:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"3372:77:15"},"nodeType":"YulFunctionCall","src":"3372:79:15"},"nodeType":"YulExpressionStatement","src":"3372:79:15"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"3345:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"3353:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3342:2:15"},"nodeType":"YulFunctionCall","src":"3342:15:15"},"nodeType":"YulIf","src":"3339:122:15"},{"body":{"nodeType":"YulBlock","src":"3546:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3561:21:15","value":{"name":"src","nodeType":"YulIdentifier","src":"3579:3:15"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"3565:10:15","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3603:3:15"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"3658:10:15"},{"name":"end","nodeType":"YulIdentifier","src":"3670:3:15"}],"functionName":{"name":"abi_decode_t_struct$_Institution_$3526_memory_ptr","nodeType":"YulIdentifier","src":"3608:49:15"},"nodeType":"YulFunctionCall","src":"3608:66:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3596:6:15"},"nodeType":"YulFunctionCall","src":"3596:79:15"},"nodeType":"YulExpressionStatement","src":"3596:79:15"},{"nodeType":"YulAssignment","src":"3688:21:15","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3699:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3704:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3695:3:15"},"nodeType":"YulFunctionCall","src":"3695:14:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3688:3:15"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3499:3:15"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3504:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3496:2:15"},"nodeType":"YulFunctionCall","src":"3496:15:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3512:25:15","statements":[{"nodeType":"YulAssignment","src":"3514:21:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3525:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3530:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:15"},"nodeType":"YulFunctionCall","src":"3521:14:15"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3514:3:15"}]}]},"pre":{"nodeType":"YulBlock","src":"3474:21:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3476:17:15","value":{"name":"offset","nodeType":"YulIdentifier","src":"3487:6:15"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3480:3:15","type":""}]}]},"src":"3470:249:15"}]},"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3029:6:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"3037:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3045:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3053:5:15","type":""}],"src":"2928:797:15"},{"body":{"nodeType":"YulBlock","src":"3888:322:15","statements":[{"body":{"nodeType":"YulBlock","src":"3937:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"3939:77:15"},"nodeType":"YulFunctionCall","src":"3939:79:15"},"nodeType":"YulExpressionStatement","src":"3939:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3916:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3924:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3912:3:15"},"nodeType":"YulFunctionCall","src":"3912:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"3931:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3908:3:15"},"nodeType":"YulFunctionCall","src":"3908:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3901:6:15"},"nodeType":"YulFunctionCall","src":"3901:35:15"},"nodeType":"YulIf","src":"3898:122:15"},{"nodeType":"YulVariableDeclaration","src":"4029:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4056:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4043:12:15"},"nodeType":"YulFunctionCall","src":"4043:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4033:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4072:132:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4177:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4185:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:15"},"nodeType":"YulFunctionCall","src":"4173:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"4192:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"4200:3:15"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4081:91:15"},"nodeType":"YulFunctionCall","src":"4081:123:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"4072:5:15"}]}]},"name":"abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3866:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3874:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3882:5:15","type":""}],"src":"3782:428:15"},{"body":{"nodeType":"YulBlock","src":"4353:605:15","statements":[{"body":{"nodeType":"YulBlock","src":"4399:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4401:77:15"},"nodeType":"YulFunctionCall","src":"4401:79:15"},"nodeType":"YulExpressionStatement","src":"4401:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4374:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4383:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4370:3:15"},"nodeType":"YulFunctionCall","src":"4370:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"4395:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4366:3:15"},"nodeType":"YulFunctionCall","src":"4366:32:15"},"nodeType":"YulIf","src":"4363:119:15"},{"nodeType":"YulBlock","src":"4492:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4507:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4521:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4511:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4536:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4582:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4567:3:15"},"nodeType":"YulFunctionCall","src":"4567:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4591:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"4546:20:15"},"nodeType":"YulFunctionCall","src":"4546:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4536:6:15"}]}]},{"nodeType":"YulBlock","src":"4619:332:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4634:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4665:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4676:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4661:3:15"},"nodeType":"YulFunctionCall","src":"4661:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4648:12:15"},"nodeType":"YulFunctionCall","src":"4648:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4638:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"4727:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4729:77:15"},"nodeType":"YulFunctionCall","src":"4729:79:15"},"nodeType":"YulExpressionStatement","src":"4729:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4699:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4707:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4696:2:15"},"nodeType":"YulFunctionCall","src":"4696:30:15"},"nodeType":"YulIf","src":"4693:117:15"},{"nodeType":"YulAssignment","src":"4824:117:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4913:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4924:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4909:3:15"},"nodeType":"YulFunctionCall","src":"4909:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4933:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4834:74:15"},"nodeType":"YulFunctionCall","src":"4834:107:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4824:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4315:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4326:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4338:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4346:6:15","type":""}],"src":"4216:742:15"},{"body":{"nodeType":"YulBlock","src":"5009:81:15","statements":[{"nodeType":"YulAssignment","src":"5019:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5034:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5041:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5030:3:15"},"nodeType":"YulFunctionCall","src":"5030:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5019:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4991:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5001:7:15","type":""}],"src":"4964:126:15"},{"body":{"nodeType":"YulBlock","src":"5141:51:15","statements":[{"nodeType":"YulAssignment","src":"5151:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5180:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5162:17:15"},"nodeType":"YulFunctionCall","src":"5162:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5151:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5123:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5133:7:15","type":""}],"src":"5096:96:15"},{"body":{"nodeType":"YulBlock","src":"5241:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"5298:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5307:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5310:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5300:6:15"},"nodeType":"YulFunctionCall","src":"5300:12:15"},"nodeType":"YulExpressionStatement","src":"5300:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5264:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5289:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5271:17:15"},"nodeType":"YulFunctionCall","src":"5271:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5261:2:15"},"nodeType":"YulFunctionCall","src":"5261:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5254:6:15"},"nodeType":"YulFunctionCall","src":"5254:43:15"},"nodeType":"YulIf","src":"5251:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5234:5:15","type":""}],"src":"5198:122:15"},{"body":{"nodeType":"YulBlock","src":"5378:87:15","statements":[{"nodeType":"YulAssignment","src":"5388:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5410:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5397:12:15"},"nodeType":"YulFunctionCall","src":"5397:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5388:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5453:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5426:26:15"},"nodeType":"YulFunctionCall","src":"5426:33:15"},"nodeType":"YulExpressionStatement","src":"5426:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5356:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5364:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5372:5:15","type":""}],"src":"5326:139:15"},{"body":{"nodeType":"YulBlock","src":"5554:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"5600:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5602:77:15"},"nodeType":"YulFunctionCall","src":"5602:79:15"},"nodeType":"YulExpressionStatement","src":"5602:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5575:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"5584:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5571:3:15"},"nodeType":"YulFunctionCall","src":"5571:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"5596:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5567:3:15"},"nodeType":"YulFunctionCall","src":"5567:32:15"},"nodeType":"YulIf","src":"5564:119:15"},{"nodeType":"YulBlock","src":"5693:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5708:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5722:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5712:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5737:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5772:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5783:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5768:3:15"},"nodeType":"YulFunctionCall","src":"5768:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5792:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"5747:20:15"},"nodeType":"YulFunctionCall","src":"5747:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5737:6:15"}]}]},{"nodeType":"YulBlock","src":"5820:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5835:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5849:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5839:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5865:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5900:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5911:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5896:3:15"},"nodeType":"YulFunctionCall","src":"5896:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5920:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5875:20:15"},"nodeType":"YulFunctionCall","src":"5875:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5865:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5516:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5527:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5539:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5547:6:15","type":""}],"src":"5471:474:15"},{"body":{"nodeType":"YulBlock","src":"5995:57:15","statements":[{"nodeType":"YulAssignment","src":"6005:41:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6020:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"6027:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6016:3:15"},"nodeType":"YulFunctionCall","src":"6016:30:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6005:7:15"}]}]},"name":"cleanup_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5977:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5987:7:15","type":""}],"src":"5951:101:15"},{"body":{"nodeType":"YulBlock","src":"6100:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"6156:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6165:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6168:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6158:6:15"},"nodeType":"YulFunctionCall","src":"6158:12:15"},"nodeType":"YulExpressionStatement","src":"6158:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6123:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6147:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"6130:16:15"},"nodeType":"YulFunctionCall","src":"6130:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6120:2:15"},"nodeType":"YulFunctionCall","src":"6120:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6113:6:15"},"nodeType":"YulFunctionCall","src":"6113:42:15"},"nodeType":"YulIf","src":"6110:62:15"}]},"name":"validator_revert_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6093:5:15","type":""}],"src":"6058:120:15"},{"body":{"nodeType":"YulBlock","src":"6235:86:15","statements":[{"nodeType":"YulAssignment","src":"6245:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6267:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6254:12:15"},"nodeType":"YulFunctionCall","src":"6254:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6245:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6309:5:15"}],"functionName":{"name":"validator_revert_t_uint64","nodeType":"YulIdentifier","src":"6283:25:15"},"nodeType":"YulFunctionCall","src":"6283:32:15"},"nodeType":"YulExpressionStatement","src":"6283:32:15"}]},"name":"abi_decode_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6213:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6221:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6229:5:15","type":""}],"src":"6184:137:15"},{"body":{"nodeType":"YulBlock","src":"6392:262:15","statements":[{"body":{"nodeType":"YulBlock","src":"6438:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6440:77:15"},"nodeType":"YulFunctionCall","src":"6440:79:15"},"nodeType":"YulExpressionStatement","src":"6440:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6413:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6422:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6409:3:15"},"nodeType":"YulFunctionCall","src":"6409:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6434:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6405:3:15"},"nodeType":"YulFunctionCall","src":"6405:32:15"},"nodeType":"YulIf","src":"6402:119:15"},{"nodeType":"YulBlock","src":"6531:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6546:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6560:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6550:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6575:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6609:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6620:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6605:3:15"},"nodeType":"YulFunctionCall","src":"6605:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6629:7:15"}],"functionName":{"name":"abi_decode_t_uint64","nodeType":"YulIdentifier","src":"6585:19:15"},"nodeType":"YulFunctionCall","src":"6585:52:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6575:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6362:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6373:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6385:6:15","type":""}],"src":"6327:327:15"},{"body":{"nodeType":"YulBlock","src":"6725:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6742:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6765:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6747:17:15"},"nodeType":"YulFunctionCall","src":"6747:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6735:6:15"},"nodeType":"YulFunctionCall","src":"6735:37:15"},"nodeType":"YulExpressionStatement","src":"6735:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6713:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6720:3:15","type":""}],"src":"6660:118:15"},{"body":{"nodeType":"YulBlock","src":"6882:124:15","statements":[{"nodeType":"YulAssignment","src":"6892:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6904:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6915:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6900:3:15"},"nodeType":"YulFunctionCall","src":"6900:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6892:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6972:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6985:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6996:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6981:3:15"},"nodeType":"YulFunctionCall","src":"6981:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"6928:43:15"},"nodeType":"YulFunctionCall","src":"6928:71:15"},"nodeType":"YulExpressionStatement","src":"6928:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6854:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6866:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6877:4:15","type":""}],"src":"6784:222:15"},{"body":{"nodeType":"YulBlock","src":"7054:48:15","statements":[{"nodeType":"YulAssignment","src":"7064:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7089:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7082:6:15"},"nodeType":"YulFunctionCall","src":"7082:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7075:6:15"},"nodeType":"YulFunctionCall","src":"7075:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"7064:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7036:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"7046:7:15","type":""}],"src":"7012:90:15"},{"body":{"nodeType":"YulBlock","src":"7148:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"7202:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7211:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7214:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7204:6:15"},"nodeType":"YulFunctionCall","src":"7204:12:15"},"nodeType":"YulExpressionStatement","src":"7204:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7171:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7193:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"7178:14:15"},"nodeType":"YulFunctionCall","src":"7178:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7168:2:15"},"nodeType":"YulFunctionCall","src":"7168:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7161:6:15"},"nodeType":"YulFunctionCall","src":"7161:40:15"},"nodeType":"YulIf","src":"7158:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7141:5:15","type":""}],"src":"7108:116:15"},{"body":{"nodeType":"YulBlock","src":"7279:84:15","statements":[{"nodeType":"YulAssignment","src":"7289:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7311:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7298:12:15"},"nodeType":"YulFunctionCall","src":"7298:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7289:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7351:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"7327:23:15"},"nodeType":"YulFunctionCall","src":"7327:30:15"},"nodeType":"YulExpressionStatement","src":"7327:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7257:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"7265:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"7273:5:15","type":""}],"src":"7230:133:15"},{"body":{"nodeType":"YulBlock","src":"7466:516:15","statements":[{"body":{"nodeType":"YulBlock","src":"7512:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"7514:77:15"},"nodeType":"YulFunctionCall","src":"7514:79:15"},"nodeType":"YulExpressionStatement","src":"7514:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7487:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"7496:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7483:3:15"},"nodeType":"YulFunctionCall","src":"7483:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"7508:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7479:3:15"},"nodeType":"YulFunctionCall","src":"7479:32:15"},"nodeType":"YulIf","src":"7476:119:15"},{"nodeType":"YulBlock","src":"7605:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7620:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7634:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7624:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7649:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7684:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7695:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7680:3:15"},"nodeType":"YulFunctionCall","src":"7680:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7704:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7659:20:15"},"nodeType":"YulFunctionCall","src":"7659:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7649:6:15"}]}]},{"nodeType":"YulBlock","src":"7732:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7747:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7761:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7751:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7777:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7812:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7823:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7808:3:15"},"nodeType":"YulFunctionCall","src":"7808:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7832:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7787:20:15"},"nodeType":"YulFunctionCall","src":"7787:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7777:6:15"}]}]},{"nodeType":"YulBlock","src":"7860:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7875:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7889:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7879:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7905:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7937:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7948:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7933:3:15"},"nodeType":"YulFunctionCall","src":"7933:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7957:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"7915:17:15"},"nodeType":"YulFunctionCall","src":"7915:50:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7905:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7420:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7431:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7443:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7451:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7459:6:15","type":""}],"src":"7369:613:15"},{"body":{"nodeType":"YulBlock","src":"8077:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8094:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8097:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8087:6:15"},"nodeType":"YulFunctionCall","src":"8087:12:15"},"nodeType":"YulExpressionStatement","src":"8087:12:15"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"7988:117:15"},{"body":{"nodeType":"YulBlock","src":"8198:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"8247:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"8249:77:15"},"nodeType":"YulFunctionCall","src":"8249:79:15"},"nodeType":"YulExpressionStatement","src":"8249:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8226:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8234:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8222:3:15"},"nodeType":"YulFunctionCall","src":"8222:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"8241:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8218:3:15"},"nodeType":"YulFunctionCall","src":"8218:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8211:6:15"},"nodeType":"YulFunctionCall","src":"8211:35:15"},"nodeType":"YulIf","src":"8208:122:15"},{"nodeType":"YulAssignment","src":"8339:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8362:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8349:12:15"},"nodeType":"YulFunctionCall","src":"8349:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8339:6:15"}]},{"body":{"nodeType":"YulBlock","src":"8412:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"8414:77:15"},"nodeType":"YulFunctionCall","src":"8414:79:15"},"nodeType":"YulExpressionStatement","src":"8414:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8384:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8392:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8381:2:15"},"nodeType":"YulFunctionCall","src":"8381:30:15"},"nodeType":"YulIf","src":"8378:117:15"},{"nodeType":"YulAssignment","src":"8504:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8520:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8528:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8516:3:15"},"nodeType":"YulFunctionCall","src":"8516:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"8504:8:15"}]},{"body":{"nodeType":"YulBlock","src":"8587:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"8589:77:15"},"nodeType":"YulFunctionCall","src":"8589:79:15"},"nodeType":"YulExpressionStatement","src":"8589:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"8552:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8566:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8574:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8562:3:15"},"nodeType":"YulFunctionCall","src":"8562:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8548:3:15"},"nodeType":"YulFunctionCall","src":"8548:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"8582:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8545:2:15"},"nodeType":"YulFunctionCall","src":"8545:41:15"},"nodeType":"YulIf","src":"8542:128:15"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8165:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"8173:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"8181:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"8191:6:15","type":""}],"src":"8124:552:15"},{"body":{"nodeType":"YulBlock","src":"8767:442:15","statements":[{"body":{"nodeType":"YulBlock","src":"8813:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8815:77:15"},"nodeType":"YulFunctionCall","src":"8815:79:15"},"nodeType":"YulExpressionStatement","src":"8815:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8788:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"8797:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8784:3:15"},"nodeType":"YulFunctionCall","src":"8784:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"8809:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8780:3:15"},"nodeType":"YulFunctionCall","src":"8780:32:15"},"nodeType":"YulIf","src":"8777:119:15"},{"nodeType":"YulBlock","src":"8906:296:15","statements":[{"nodeType":"YulVariableDeclaration","src":"8921:45:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8952:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8963:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8948:3:15"},"nodeType":"YulFunctionCall","src":"8948:17:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8935:12:15"},"nodeType":"YulFunctionCall","src":"8935:31:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8925:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"9013:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9015:77:15"},"nodeType":"YulFunctionCall","src":"9015:79:15"},"nodeType":"YulExpressionStatement","src":"9015:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8985:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8993:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8982:2:15"},"nodeType":"YulFunctionCall","src":"8982:30:15"},"nodeType":"YulIf","src":"8979:117:15"},{"nodeType":"YulAssignment","src":"9110:82:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9164:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9175:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9160:3:15"},"nodeType":"YulFunctionCall","src":"9160:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9184:7:15"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"9128:31:15"},"nodeType":"YulFunctionCall","src":"9128:64:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9110:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"9118:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8729:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8740:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8752:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8760:6:15","type":""}],"src":"8682:527:15"},{"body":{"nodeType":"YulBlock","src":"9281:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"9327:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9329:77:15"},"nodeType":"YulFunctionCall","src":"9329:79:15"},"nodeType":"YulExpressionStatement","src":"9329:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9302:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"9311:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9298:3:15"},"nodeType":"YulFunctionCall","src":"9298:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"9323:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9294:3:15"},"nodeType":"YulFunctionCall","src":"9294:32:15"},"nodeType":"YulIf","src":"9291:119:15"},{"nodeType":"YulBlock","src":"9420:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9435:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9449:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9439:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9464:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9499:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9510:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9495:3:15"},"nodeType":"YulFunctionCall","src":"9495:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9519:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9474:20:15"},"nodeType":"YulFunctionCall","src":"9474:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9464:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9251:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9262:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9274:6:15","type":""}],"src":"9215:329:15"},{"body":{"nodeType":"YulBlock","src":"9578:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9595:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9598:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9588:6:15"},"nodeType":"YulFunctionCall","src":"9588:88:15"},"nodeType":"YulExpressionStatement","src":"9588:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9692:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9695:4:15","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9685:6:15"},"nodeType":"YulFunctionCall","src":"9685:15:15"},"nodeType":"YulExpressionStatement","src":"9685:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9716:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9719:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9709:6:15"},"nodeType":"YulFunctionCall","src":"9709:15:15"},"nodeType":"YulExpressionStatement","src":"9709:15:15"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9550:180:15"},{"body":{"nodeType":"YulBlock","src":"9832:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9849:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"9854:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9842:6:15"},"nodeType":"YulFunctionCall","src":"9842:19:15"},"nodeType":"YulExpressionStatement","src":"9842:19:15"},{"nodeType":"YulAssignment","src":"9870:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9889:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"9894:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9885:3:15"},"nodeType":"YulFunctionCall","src":"9885:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"9870:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9804:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"9809:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"9820:11:15","type":""}],"src":"9736:169:15"},{"body":{"nodeType":"YulBlock","src":"10017:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10039:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"10047:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10035:3:15"},"nodeType":"YulFunctionCall","src":"10035:14:15"},{"hexValue":"50617963726573743a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"10051:24:15","type":"","value":"Paycrest: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10028:6:15"},"nodeType":"YulFunctionCall","src":"10028:48:15"},"nodeType":"YulExpressionStatement","src":"10028:48:15"}]},"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"10009:6:15","type":""}],"src":"9911:172:15"},{"body":{"nodeType":"YulBlock","src":"10235:220:15","statements":[{"nodeType":"YulAssignment","src":"10245:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10311:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10316:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10252:58:15"},"nodeType":"YulFunctionCall","src":"10252:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10245:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10417:3:15"}],"functionName":{"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulIdentifier","src":"10328:88:15"},"nodeType":"YulFunctionCall","src":"10328:93:15"},"nodeType":"YulExpressionStatement","src":"10328:93:15"},{"nodeType":"YulAssignment","src":"10430:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10441:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10446:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10437:3:15"},"nodeType":"YulFunctionCall","src":"10437:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10430:3:15"}]}]},"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10223:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10231:3:15","type":""}],"src":"10089:366:15"},{"body":{"nodeType":"YulBlock","src":"10632:248:15","statements":[{"nodeType":"YulAssignment","src":"10642:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10654:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"10665:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10650:3:15"},"nodeType":"YulFunctionCall","src":"10650:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10642:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10689:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"10700:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10685:3:15"},"nodeType":"YulFunctionCall","src":"10685:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10708:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"10714:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10704:3:15"},"nodeType":"YulFunctionCall","src":"10704:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10678:6:15"},"nodeType":"YulFunctionCall","src":"10678:47:15"},"nodeType":"YulExpressionStatement","src":"10678:47:15"},{"nodeType":"YulAssignment","src":"10734:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10868:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10742:124:15"},"nodeType":"YulFunctionCall","src":"10742:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10734:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10612:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10627:4:15","type":""}],"src":"10461:419:15"},{"body":{"nodeType":"YulBlock","src":"10949:52:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10966:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10988:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"10971:16:15"},"nodeType":"YulFunctionCall","src":"10971:23:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10959:6:15"},"nodeType":"YulFunctionCall","src":"10959:36:15"},"nodeType":"YulExpressionStatement","src":"10959:36:15"}]},"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10937:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10944:3:15","type":""}],"src":"10886:115:15"},{"body":{"nodeType":"YulBlock","src":"11103:122:15","statements":[{"nodeType":"YulAssignment","src":"11113:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11125:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11136:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11121:3:15"},"nodeType":"YulFunctionCall","src":"11121:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11113:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11191:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11204:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11215:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11200:3:15"},"nodeType":"YulFunctionCall","src":"11200:17:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint64_fromStack","nodeType":"YulIdentifier","src":"11149:41:15"},"nodeType":"YulFunctionCall","src":"11149:69:15"},"nodeType":"YulExpressionStatement","src":"11149:69:15"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11075:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11087:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11098:4:15","type":""}],"src":"11007:218:15"},{"body":{"nodeType":"YulBlock","src":"11296:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11313:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11336:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"11318:17:15"},"nodeType":"YulFunctionCall","src":"11318:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11306:6:15"},"nodeType":"YulFunctionCall","src":"11306:37:15"},"nodeType":"YulExpressionStatement","src":"11306:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11284:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11291:3:15","type":""}],"src":"11231:118:15"},{"body":{"nodeType":"YulBlock","src":"11414:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11431:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11451:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"11436:14:15"},"nodeType":"YulFunctionCall","src":"11436:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11424:6:15"},"nodeType":"YulFunctionCall","src":"11424:34:15"},"nodeType":"YulExpressionStatement","src":"11424:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11402:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11409:3:15","type":""}],"src":"11355:109:15"},{"body":{"nodeType":"YulBlock","src":"11618:282:15","statements":[{"nodeType":"YulAssignment","src":"11628:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11640:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11651:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11636:3:15"},"nodeType":"YulFunctionCall","src":"11636:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11628:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11708:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11721:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11732:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11717:3:15"},"nodeType":"YulFunctionCall","src":"11717:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"11664:43:15"},"nodeType":"YulFunctionCall","src":"11664:71:15"},"nodeType":"YulExpressionStatement","src":"11664:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11789:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11802:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11813:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11798:3:15"},"nodeType":"YulFunctionCall","src":"11798:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"11745:43:15"},"nodeType":"YulFunctionCall","src":"11745:72:15"},"nodeType":"YulExpressionStatement","src":"11745:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11865:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11878:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11889:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11874:3:15"},"nodeType":"YulFunctionCall","src":"11874:18:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"11827:37:15"},"nodeType":"YulFunctionCall","src":"11827:66:15"},"nodeType":"YulExpressionStatement","src":"11827:66:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11574:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11586:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11594:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11602:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11613:4:15","type":""}],"src":"11470:430:15"},{"body":{"nodeType":"YulBlock","src":"11971:31:15","statements":[{"nodeType":"YulAssignment","src":"11982:13:15","value":{"name":"len","nodeType":"YulIdentifier","src":"11992:3:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"11982:6:15"}]}]},"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11949:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"11956:3:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"11964:6:15","type":""}],"src":"11906:96:15"},{"body":{"nodeType":"YulBlock","src":"12036:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12053:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12056:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12046:6:15"},"nodeType":"YulFunctionCall","src":"12046:88:15"},"nodeType":"YulExpressionStatement","src":"12046:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12150:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12153:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12143:6:15"},"nodeType":"YulFunctionCall","src":"12143:15:15"},"nodeType":"YulExpressionStatement","src":"12143:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12174:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12177:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12167:6:15"},"nodeType":"YulFunctionCall","src":"12167:15:15"},"nodeType":"YulExpressionStatement","src":"12167:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"12008:180:15"},{"body":{"nodeType":"YulBlock","src":"12245:269:15","statements":[{"nodeType":"YulAssignment","src":"12255:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"12269:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12275:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12265:3:15"},"nodeType":"YulFunctionCall","src":"12265:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12255:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"12286:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"12316:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12322:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12312:3:15"},"nodeType":"YulFunctionCall","src":"12312:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"12290:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"12363:51:15","statements":[{"nodeType":"YulAssignment","src":"12377:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12391:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12399:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12387:3:15"},"nodeType":"YulFunctionCall","src":"12387:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12377:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"12343:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12336:6:15"},"nodeType":"YulFunctionCall","src":"12336:26:15"},"nodeType":"YulIf","src":"12333:81:15"},{"body":{"nodeType":"YulBlock","src":"12466:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"12480:16:15"},"nodeType":"YulFunctionCall","src":"12480:18:15"},"nodeType":"YulExpressionStatement","src":"12480:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"12430:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12453:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12461:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12450:2:15"},"nodeType":"YulFunctionCall","src":"12450:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12427:2:15"},"nodeType":"YulFunctionCall","src":"12427:38:15"},"nodeType":"YulIf","src":"12424:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"12229:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"12238:6:15","type":""}],"src":"12194:320:15"},{"body":{"nodeType":"YulBlock","src":"12573:87:15","statements":[{"nodeType":"YulAssignment","src":"12583:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"12591:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12583:4:15"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12611:1:15","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"12614:3:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12604:6:15"},"nodeType":"YulFunctionCall","src":"12604:14:15"},"nodeType":"YulExpressionStatement","src":"12604:14:15"},{"nodeType":"YulAssignment","src":"12627:26:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12645:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12648:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"12635:9:15"},"nodeType":"YulFunctionCall","src":"12635:18:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12627:4:15"}]}]},"name":"array_dataslot_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"12560:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"12568:4:15","type":""}],"src":"12520:140:15"},{"body":{"nodeType":"YulBlock","src":"12710:49:15","statements":[{"nodeType":"YulAssignment","src":"12720:33:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12738:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"12745:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12734:3:15"},"nodeType":"YulFunctionCall","src":"12734:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"12750:2:15","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12730:3:15"},"nodeType":"YulFunctionCall","src":"12730:23:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"12720:6:15"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12693:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"12703:6:15","type":""}],"src":"12666:93:15"},{"body":{"nodeType":"YulBlock","src":"12818:54:15","statements":[{"nodeType":"YulAssignment","src":"12828:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"12853:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"12859:5:15"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12849:3:15"},"nodeType":"YulFunctionCall","src":"12849:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"12828:8:15"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"12793:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"12799:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"12809:8:15","type":""}],"src":"12765:107:15"},{"body":{"nodeType":"YulBlock","src":"12954:317:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12964:35:15","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"12985:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"12997:1:15","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12981:3:15"},"nodeType":"YulFunctionCall","src":"12981:18:15"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"12968:9:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13008:109:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"13039:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"13050:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"13020:18:15"},"nodeType":"YulFunctionCall","src":"13020:97:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"13012:4:15","type":""}]},{"nodeType":"YulAssignment","src":"13126:51:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"13157:9:15"},{"name":"toInsert","nodeType":"YulIdentifier","src":"13168:8:15"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"13138:18:15"},"nodeType":"YulFunctionCall","src":"13138:39:15"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"13126:8:15"}]},{"nodeType":"YulAssignment","src":"13186:30:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13199:5:15"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"13210:4:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"13206:3:15"},"nodeType":"YulFunctionCall","src":"13206:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13195:3:15"},"nodeType":"YulFunctionCall","src":"13195:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"13186:5:15"}]},{"nodeType":"YulAssignment","src":"13225:40:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13238:5:15"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"13249:8:15"},{"name":"mask","nodeType":"YulIdentifier","src":"13259:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13245:3:15"},"nodeType":"YulFunctionCall","src":"13245:19:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"13235:2:15"},"nodeType":"YulFunctionCall","src":"13235:30:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"13225:6:15"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12915:5:15","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"12922:10:15","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"12934:8:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"12947:6:15","type":""}],"src":"12878:393:15"},{"body":{"nodeType":"YulBlock","src":"13322:32:15","statements":[{"nodeType":"YulAssignment","src":"13332:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13343:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"13332:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13304:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"13314:7:15","type":""}],"src":"13277:77:15"},{"body":{"nodeType":"YulBlock","src":"13392:28:15","statements":[{"nodeType":"YulAssignment","src":"13402:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13409:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13402:3:15"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13378:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13388:3:15","type":""}],"src":"13360:60:15"},{"body":{"nodeType":"YulBlock","src":"13486:82:15","statements":[{"nodeType":"YulAssignment","src":"13496:66:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13554:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13536:17:15"},"nodeType":"YulFunctionCall","src":"13536:24:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"13527:8:15"},"nodeType":"YulFunctionCall","src":"13527:34:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13509:17:15"},"nodeType":"YulFunctionCall","src":"13509:53:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"13496:9:15"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13466:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"13476:9:15","type":""}],"src":"13426:142:15"},{"body":{"nodeType":"YulBlock","src":"13621:28:15","statements":[{"nodeType":"YulAssignment","src":"13631:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13638:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13631:3:15"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13607:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13617:3:15","type":""}],"src":"13574:75:15"},{"body":{"nodeType":"YulBlock","src":"13731:193:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13741:63:15","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"13796:7:15"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"13765:30:15"},"nodeType":"YulFunctionCall","src":"13765:39:15"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"13745:16:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13820:4:15"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13860:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"13854:5:15"},"nodeType":"YulFunctionCall","src":"13854:11:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13867:6:15"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"13899:16:15"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"13875:23:15"},"nodeType":"YulFunctionCall","src":"13875:41:15"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"13826:27:15"},"nodeType":"YulFunctionCall","src":"13826:91:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"13813:6:15"},"nodeType":"YulFunctionCall","src":"13813:105:15"},"nodeType":"YulExpressionStatement","src":"13813:105:15"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"13708:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"13714:6:15","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"13722:7:15","type":""}],"src":"13655:269:15"},{"body":{"nodeType":"YulBlock","src":"13979:24:15","statements":[{"nodeType":"YulAssignment","src":"13989:8:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13996:1:15","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13989:3:15"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13975:3:15","type":""}],"src":"13930:73:15"},{"body":{"nodeType":"YulBlock","src":"14062:136:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14072:46:15","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"14086:30:15"},"nodeType":"YulFunctionCall","src":"14086:32:15"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"14076:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"14171:4:15"},{"name":"offset","nodeType":"YulIdentifier","src":"14177:6:15"},{"name":"zero_0","nodeType":"YulIdentifier","src":"14185:6:15"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"14127:43:15"},"nodeType":"YulFunctionCall","src":"14127:65:15"},"nodeType":"YulExpressionStatement","src":"14127:65:15"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"14048:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"14054:6:15","type":""}],"src":"14009:189:15"},{"body":{"nodeType":"YulBlock","src":"14254:136:15","statements":[{"body":{"nodeType":"YulBlock","src":"14321:63:15","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14365:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14372:1:15","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"14335:29:15"},"nodeType":"YulFunctionCall","src":"14335:39:15"},"nodeType":"YulExpressionStatement","src":"14335:39:15"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14274:5:15"},{"name":"end","nodeType":"YulIdentifier","src":"14281:3:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14271:2:15"},"nodeType":"YulFunctionCall","src":"14271:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"14286:26:15","statements":[{"nodeType":"YulAssignment","src":"14288:22:15","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14301:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14308:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14297:3:15"},"nodeType":"YulFunctionCall","src":"14297:13:15"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"14288:5:15"}]}]},"pre":{"nodeType":"YulBlock","src":"14268:2:15","statements":[]},"src":"14264:120:15"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"14242:5:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"14249:3:15","type":""}],"src":"14204:186:15"},{"body":{"nodeType":"YulBlock","src":"14474:463:15","statements":[{"body":{"nodeType":"YulBlock","src":"14500:430:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14514:53:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14561:5:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"14530:30:15"},"nodeType":"YulFunctionCall","src":"14530:37:15"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"14518:8:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14580:63:15","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"14603:8:15"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14631:10:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"14613:17:15"},"nodeType":"YulFunctionCall","src":"14613:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14599:3:15"},"nodeType":"YulFunctionCall","src":"14599:44:15"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"14584:11:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"14800:27:15","statements":[{"nodeType":"YulAssignment","src":"14802:23:15","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"14817:8:15"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"14802:11:15"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14784:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"14796:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14781:2:15"},"nodeType":"YulFunctionCall","src":"14781:18:15"},"nodeType":"YulIf","src":"14778:49:15"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"14869:11:15"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"14886:8:15"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14914:3:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"14896:17:15"},"nodeType":"YulFunctionCall","src":"14896:22:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14882:3:15"},"nodeType":"YulFunctionCall","src":"14882:37:15"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"14840:28:15"},"nodeType":"YulFunctionCall","src":"14840:80:15"},"nodeType":"YulExpressionStatement","src":"14840:80:15"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14491:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14496:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14488:2:15"},"nodeType":"YulFunctionCall","src":"14488:11:15"},"nodeType":"YulIf","src":"14485:445:15"}]},"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"14450:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"14457:3:15","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"14462:10:15","type":""}],"src":"14396:541:15"},{"body":{"nodeType":"YulBlock","src":"15006:54:15","statements":[{"nodeType":"YulAssignment","src":"15016:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"15041:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"15047:5:15"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"15037:3:15"},"nodeType":"YulFunctionCall","src":"15037:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"15016:8:15"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"14981:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"14987:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"14997:8:15","type":""}],"src":"14943:117:15"},{"body":{"nodeType":"YulBlock","src":"15117:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15127:68:15","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15176:1:15","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"15179:5:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15172:3:15"},"nodeType":"YulFunctionCall","src":"15172:13:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15191:1:15","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15187:3:15"},"nodeType":"YulFunctionCall","src":"15187:6:15"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"15143:28:15"},"nodeType":"YulFunctionCall","src":"15143:51:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15139:3:15"},"nodeType":"YulFunctionCall","src":"15139:56:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"15131:4:15","type":""}]},{"nodeType":"YulAssignment","src":"15204:25:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15218:4:15"},{"name":"mask","nodeType":"YulIdentifier","src":"15224:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15214:3:15"},"nodeType":"YulFunctionCall","src":"15214:15:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"15204:6:15"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"15094:4:15","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"15100:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"15110:6:15","type":""}],"src":"15066:169:15"},{"body":{"nodeType":"YulBlock","src":"15321:214:15","statements":[{"nodeType":"YulAssignment","src":"15454:37:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15481:4:15"},{"name":"len","nodeType":"YulIdentifier","src":"15487:3:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"15462:18:15"},"nodeType":"YulFunctionCall","src":"15462:29:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15454:4:15"}]},{"nodeType":"YulAssignment","src":"15500:29:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15511:4:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15521:1:15","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"15524:3:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15517:3:15"},"nodeType":"YulFunctionCall","src":"15517:11:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"15508:2:15"},"nodeType":"YulFunctionCall","src":"15508:21:15"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"15500:4:15"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"15302:4:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"15308:3:15","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"15316:4:15","type":""}],"src":"15240:295:15"},{"body":{"nodeType":"YulBlock","src":"15637:1301:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15648:57:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15696:3:15"},{"name":"len","nodeType":"YulIdentifier","src":"15701:3:15"}],"functionName":{"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"15662:33:15"},"nodeType":"YulFunctionCall","src":"15662:43:15"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"15652:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"15790:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"15792:16:15"},"nodeType":"YulFunctionCall","src":"15792:18:15"},"nodeType":"YulExpressionStatement","src":"15792:18:15"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"15762:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15770:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15759:2:15"},"nodeType":"YulFunctionCall","src":"15759:30:15"},"nodeType":"YulIf","src":"15756:56:15"},{"nodeType":"YulVariableDeclaration","src":"15822:52:15","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15868:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"15862:5:15"},"nodeType":"YulFunctionCall","src":"15862:11:15"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"15836:25:15"},"nodeType":"YulFunctionCall","src":"15836:38:15"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"15826:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15966:4:15"},{"name":"oldLen","nodeType":"YulIdentifier","src":"15972:6:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"15980:6:15"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulIdentifier","src":"15921:44:15"},"nodeType":"YulFunctionCall","src":"15921:66:15"},"nodeType":"YulExpressionStatement","src":"15921:66:15"},{"nodeType":"YulVariableDeclaration","src":"15997:18:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16014:1:15","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"16001:9:15","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"16062:624:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16076:37:15","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16095:6:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16107:4:15","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"16103:3:15"},"nodeType":"YulFunctionCall","src":"16103:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16091:3:15"},"nodeType":"YulFunctionCall","src":"16091:22:15"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"16080:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16127:50:15","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16172:4:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"16141:30:15"},"nodeType":"YulFunctionCall","src":"16141:36:15"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"16131:6:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16190:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16199:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16194:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16258:170:15","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16283:6:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16308:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16313:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16304:3:15"},"nodeType":"YulFunctionCall","src":"16304:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16291:12:15"},"nodeType":"YulFunctionCall","src":"16291:33:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16276:6:15"},"nodeType":"YulFunctionCall","src":"16276:49:15"},"nodeType":"YulExpressionStatement","src":"16276:49:15"},{"nodeType":"YulAssignment","src":"16342:24:15","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16356:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16364:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16352:3:15"},"nodeType":"YulFunctionCall","src":"16352:14:15"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16342:6:15"}]},{"nodeType":"YulAssignment","src":"16383:31:15","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16400:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16411:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16396:3:15"},"nodeType":"YulFunctionCall","src":"16396:18:15"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16383:9:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16224:1:15"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"16227:7:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16221:2:15"},"nodeType":"YulFunctionCall","src":"16221:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16236:21:15","statements":[{"nodeType":"YulAssignment","src":"16238:17:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16247:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"16250:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16243:3:15"},"nodeType":"YulFunctionCall","src":"16243:12:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16238:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"16217:3:15","statements":[]},"src":"16213:215:15"},{"body":{"nodeType":"YulBlock","src":"16464:163:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16482:50:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16516:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16521:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16512:3:15"},"nodeType":"YulFunctionCall","src":"16512:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16499:12:15"},"nodeType":"YulFunctionCall","src":"16499:33:15"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"16486:9:15","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16556:6:15"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"16583:9:15"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16598:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16606:4:15","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16594:3:15"},"nodeType":"YulFunctionCall","src":"16594:17:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"16564:18:15"},"nodeType":"YulFunctionCall","src":"16564:48:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16549:6:15"},"nodeType":"YulFunctionCall","src":"16549:64:15"},"nodeType":"YulExpressionStatement","src":"16549:64:15"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"16447:7:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"16456:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16444:2:15"},"nodeType":"YulFunctionCall","src":"16444:19:15"},"nodeType":"YulIf","src":"16441:186:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16647:4:15"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16661:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16669:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"16657:3:15"},"nodeType":"YulFunctionCall","src":"16657:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"16673:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16653:3:15"},"nodeType":"YulFunctionCall","src":"16653:22:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16640:6:15"},"nodeType":"YulFunctionCall","src":"16640:36:15"},"nodeType":"YulExpressionStatement","src":"16640:36:15"}]},"nodeType":"YulCase","src":"16055:631:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16060:1:15","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"16703:229:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16717:14:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16730:1:15","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"16721:5:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16754:74:15","statements":[{"nodeType":"YulAssignment","src":"16772:42:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16798:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16803:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16794:3:15"},"nodeType":"YulFunctionCall","src":"16794:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16781:12:15"},"nodeType":"YulFunctionCall","src":"16781:33:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"16772:5:15"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"16747:6:15"},"nodeType":"YulIf","src":"16744:84:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16848:4:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16907:5:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"16914:6:15"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"16854:52:15"},"nodeType":"YulFunctionCall","src":"16854:67:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16841:6:15"},"nodeType":"YulFunctionCall","src":"16841:81:15"},"nodeType":"YulExpressionStatement","src":"16841:81:15"}]},"nodeType":"YulCase","src":"16695:237:15","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16035:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16043:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16032:2:15"},"nodeType":"YulFunctionCall","src":"16032:14:15"},"nodeType":"YulSwitch","src":"16025:907:15"}]},"name":"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"15621:4:15","type":""},{"name":"src","nodeType":"YulTypedName","src":"15627:3:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"15632:3:15","type":""}],"src":"15540:1398:15"},{"body":{"nodeType":"YulBlock","src":"17039:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17056:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17061:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17049:6:15"},"nodeType":"YulFunctionCall","src":"17049:19:15"},"nodeType":"YulExpressionStatement","src":"17049:19:15"},{"nodeType":"YulAssignment","src":"17077:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17096:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17101:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17092:3:15"},"nodeType":"YulFunctionCall","src":"17092:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"17077:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17011:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"17016:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"17027:11:15","type":""}],"src":"16944:168:15"},{"body":{"nodeType":"YulBlock","src":"17182:82:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17205:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"17210:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17215:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"17192:12:15"},"nodeType":"YulFunctionCall","src":"17192:30:15"},"nodeType":"YulExpressionStatement","src":"17192:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17242:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17247:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17238:3:15"},"nodeType":"YulFunctionCall","src":"17238:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"17256:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17231:6:15"},"nodeType":"YulFunctionCall","src":"17231:27:15"},"nodeType":"YulExpressionStatement","src":"17231:27:15"}]},"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"17164:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"17169:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"17174:6:15","type":""}],"src":"17118:146:15"},{"body":{"nodeType":"YulBlock","src":"17392:214:15","statements":[{"nodeType":"YulAssignment","src":"17402:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17467:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17472:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17409:57:15"},"nodeType":"YulFunctionCall","src":"17409:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17402:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"17526:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"17533:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17538:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"17489:36:15"},"nodeType":"YulFunctionCall","src":"17489:56:15"},"nodeType":"YulExpressionStatement","src":"17489:56:15"},{"nodeType":"YulAssignment","src":"17554:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17565:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"17592:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"17570:21:15"},"nodeType":"YulFunctionCall","src":"17570:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17561:3:15"},"nodeType":"YulFunctionCall","src":"17561:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17554:3:15"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"17365:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"17372:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17380:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17388:3:15","type":""}],"src":"17292:314:15"},{"body":{"nodeType":"YulBlock","src":"17738:203:15","statements":[{"nodeType":"YulAssignment","src":"17748:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17760:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17771:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17756:3:15"},"nodeType":"YulFunctionCall","src":"17756:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17748:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17795:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17806:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17791:3:15"},"nodeType":"YulFunctionCall","src":"17791:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17814:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"17820:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17810:3:15"},"nodeType":"YulFunctionCall","src":"17810:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17784:6:15"},"nodeType":"YulFunctionCall","src":"17784:47:15"},"nodeType":"YulExpressionStatement","src":"17784:47:15"},{"nodeType":"YulAssignment","src":"17840:94:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17912:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"17920:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"17929:4:15"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17848:63:15"},"nodeType":"YulFunctionCall","src":"17848:86:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17840:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17702:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17714:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17722:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17733:4:15","type":""}],"src":"17612:329:15"},{"body":{"nodeType":"YulBlock","src":"18053:119:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18075:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"18083:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18071:3:15"},"nodeType":"YulFunctionCall","src":"18071:14:15"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"18087:34:15","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18064:6:15"},"nodeType":"YulFunctionCall","src":"18064:58:15"},"nodeType":"YulExpressionStatement","src":"18064:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18143:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"18151:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18139:3:15"},"nodeType":"YulFunctionCall","src":"18139:15:15"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"18156:8:15","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18132:6:15"},"nodeType":"YulFunctionCall","src":"18132:33:15"},"nodeType":"YulExpressionStatement","src":"18132:33:15"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18045:6:15","type":""}],"src":"17947:225:15"},{"body":{"nodeType":"YulBlock","src":"18324:220:15","statements":[{"nodeType":"YulAssignment","src":"18334:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18400:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18405:2:15","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18341:58:15"},"nodeType":"YulFunctionCall","src":"18341:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18334:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18506:3:15"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"18417:88:15"},"nodeType":"YulFunctionCall","src":"18417:93:15"},"nodeType":"YulExpressionStatement","src":"18417:93:15"},{"nodeType":"YulAssignment","src":"18519:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18530:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18535:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18526:3:15"},"nodeType":"YulFunctionCall","src":"18526:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18519:3:15"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18312:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18320:3:15","type":""}],"src":"18178:366:15"},{"body":{"nodeType":"YulBlock","src":"18721:248:15","statements":[{"nodeType":"YulAssignment","src":"18731:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18743:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18754:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18739:3:15"},"nodeType":"YulFunctionCall","src":"18739:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18731:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18778:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18789:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18774:3:15"},"nodeType":"YulFunctionCall","src":"18774:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18797:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"18803:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18793:3:15"},"nodeType":"YulFunctionCall","src":"18793:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18767:6:15"},"nodeType":"YulFunctionCall","src":"18767:47:15"},"nodeType":"YulExpressionStatement","src":"18767:47:15"},{"nodeType":"YulAssignment","src":"18823:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18957:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18831:124:15"},"nodeType":"YulFunctionCall","src":"18831:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18823:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18701:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18716:4:15","type":""}],"src":"18550:419:15"},{"body":{"nodeType":"YulBlock","src":"19081:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19103:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"19111:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19099:3:15"},"nodeType":"YulFunctionCall","src":"19099:14:15"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"19115:34:15","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19092:6:15"},"nodeType":"YulFunctionCall","src":"19092:58:15"},"nodeType":"YulExpressionStatement","src":"19092:58:15"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19073:6:15","type":""}],"src":"18975:182:15"},{"body":{"nodeType":"YulBlock","src":"19309:220:15","statements":[{"nodeType":"YulAssignment","src":"19319:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19385:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19390:2:15","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19326:58:15"},"nodeType":"YulFunctionCall","src":"19326:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19319:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19491:3:15"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"19402:88:15"},"nodeType":"YulFunctionCall","src":"19402:93:15"},"nodeType":"YulExpressionStatement","src":"19402:93:15"},{"nodeType":"YulAssignment","src":"19504:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19515:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19520:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19511:3:15"},"nodeType":"YulFunctionCall","src":"19511:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19504:3:15"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"19297:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"19305:3:15","type":""}],"src":"19163:366:15"},{"body":{"nodeType":"YulBlock","src":"19706:248:15","statements":[{"nodeType":"YulAssignment","src":"19716:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19728:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19739:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19724:3:15"},"nodeType":"YulFunctionCall","src":"19724:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19716:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19763:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19774:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19759:3:15"},"nodeType":"YulFunctionCall","src":"19759:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19782:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"19788:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19778:3:15"},"nodeType":"YulFunctionCall","src":"19778:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19752:6:15"},"nodeType":"YulFunctionCall","src":"19752:47:15"},"nodeType":"YulExpressionStatement","src":"19752:47:15"},{"nodeType":"YulAssignment","src":"19808:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19942:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19816:124:15"},"nodeType":"YulFunctionCall","src":"19816:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19808:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19686:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19701:4:15","type":""}],"src":"19535:419:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n // struct PaycrestSettingManager.Institution\n function abi_decode_t_struct$_Institution_$3526_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x40) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x40)\n\n {\n // code\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n {\n // name\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x40))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x40) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_struct$_Institution_$3526_memory_ptr(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_struct$_Institution_$3526_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bytes32t_addresst_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(memPtr) {\n\n mstore(add(memPtr, 0), \"Paycrest: zero address\")\n\n }\n\n function abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function array_length_t_bytes_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len) {\n\n let newLen := array_length_t_bytes_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100eb57806399e3c0b414610109578063cb79455b14610125578063f2fde38b1461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b357806384630736146100cf575b600080fd5b6100a760048036038101906100a29190610a3a565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610af4565b610285565b005b6100e960048036038101906100e49190610b74565b6103d2565b005b6100f361043d565b6040516101009190610bb0565b60405180910390f35b610123600480360381019061011e9190610c03565b610467565b005b61013f600480360381019061013a9190610cb1565b61061c565b005b61015b60048036038101906101569190610cfe565b610673565b005b6101656106f6565b60008151905060005b8181101561026b57609d600085815260200190815260200160002083828151811061019c5761019b610d2b565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d2b565b5b602002602001015160200151815260200185815250609e600085848151811061022d5761022c610d2b565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b6102796106f6565b6102836000610774565b565b61028d6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610db7565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6103da6106f6565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a9816040516104329190610de6565b60405180910390a150565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61046f6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d590610db7565b60405180910390fd5b7f746f6b656e000000000000000000000000000000000000000000000000000000830361055d5780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105dc5780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161060f93929190610e1f565b60405180910390a1505050565b6106246106f6565b818160689182610635929190611077565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051610667929190611194565b60405180910390a15050565b61067b6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e19061122a565b60405180910390fd5b6106f381610774565b50565b6106fe61083a565b73ffffffffffffffffffffffffffffffffffffffff1661071c61043d565b73ffffffffffffffffffffffffffffffffffffffff1614610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611296565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61086981610856565b811461087457600080fd5b50565b60008135905061088681610860565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6108da82610891565b810181811067ffffffffffffffff821117156108f9576108f86108a2565b5b80604052505050565b600061090c610842565b905061091882826108d1565b919050565b600067ffffffffffffffff821115610938576109376108a2565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109695761096861094e565b5b6109736040610902565b9050600061098384828501610877565b600083015250602061099784828501610877565b60208301525092915050565b60006109b66109b18461091d565b610902565b905080838252602082019050604084028301858111156109d9576109d8610949565b5b835b81811015610a0257806109ee8882610953565b8452602084019350506040810190506109db565b5050509392505050565b600082601f830112610a2157610a2061088c565b5b8135610a318482602086016109a3565b91505092915050565b60008060408385031215610a5157610a5061084c565b5b6000610a5f85828601610877565b925050602083013567ffffffffffffffff811115610a8057610a7f610851565b5b610a8c85828601610a0c565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ac182610a96565b9050919050565b610ad181610ab6565b8114610adc57600080fd5b50565b600081359050610aee81610ac8565b92915050565b60008060408385031215610b0b57610b0a61084c565b5b6000610b1985828601610877565b9250506020610b2a85828601610adf565b9150509250929050565b600067ffffffffffffffff82169050919050565b610b5181610b34565b8114610b5c57600080fd5b50565b600081359050610b6e81610b48565b92915050565b600060208284031215610b8a57610b8961084c565b5b6000610b9884828501610b5f565b91505092915050565b610baa81610ab6565b82525050565b6000602082019050610bc56000830184610ba1565b92915050565b60008115159050919050565b610be081610bcb565b8114610beb57600080fd5b50565b600081359050610bfd81610bd7565b92915050565b600080600060608486031215610c1c57610c1b61084c565b5b6000610c2a86828701610877565b9350506020610c3b86828701610adf565b9250506040610c4c86828701610bee565b9150509250925092565b600080fd5b60008083601f840112610c7157610c7061088c565b5b8235905067ffffffffffffffff811115610c8e57610c8d610c56565b5b602083019150836001820283011115610caa57610ca9610949565b5b9250929050565b60008060208385031215610cc857610cc761084c565b5b600083013567ffffffffffffffff811115610ce657610ce5610851565b5b610cf285828601610c5b565b92509250509250929050565b600060208284031215610d1457610d1361084c565b5b6000610d2284828501610adf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610da1601683610d5a565b9150610dac82610d6b565b602082019050919050565b60006020820190508181036000830152610dd081610d94565b9050919050565b610de081610b34565b82525050565b6000602082019050610dfb6000830184610dd7565b92915050565b610e0a81610856565b82525050565b610e1981610bcb565b82525050565b6000606082019050610e346000830186610e01565b610e416020830185610ba1565b610e4e6040830184610e10565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ea857607f821691505b602082108103610ebb57610eba610e61565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610ee6565b610f2d8683610ee6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610f74610f6f610f6a84610f45565b610f4f565b610f45565b9050919050565b6000819050919050565b610f8e83610f59565b610fa2610f9a82610f7b565b848454610ef3565b825550505050565b600090565b610fb7610faa565b610fc2818484610f85565b505050565b5b81811015610fe657610fdb600082610faf565b600181019050610fc8565b5050565b601f82111561102b57610ffc81610ec1565b61100584610ed6565b81016020851015611014578190505b61102861102085610ed6565b830182610fc7565b50505b505050565b600082821c905092915050565b600061104e60001984600802611030565b1980831691505092915050565b6000611067838361103d565b9150826002028217905092915050565b6110818383610e56565b67ffffffffffffffff81111561109a576110996108a2565b5b6110a48254610e90565b6110af828285610fea565b6000601f8311600181146110de57600084156110cc578287013590505b6110d6858261105b565b86555061113e565b601f1984166110ec86610ec1565b60005b82811015611114578489013582556001820191506020850194506020810190506110ef565b86831015611131578489013561112d601f89168261103d565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111738385611147565b9350611180838584611158565b61118983610891565b840190509392505050565b600060208201905081810360008301526111af818486611167565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611214602683610d5a565b915061121f826111b8565b604082019050919050565b6000602082019050818103600083015261124381611207565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611280602083610d5a565b915061128b8261124a565b602082019050919050565b600060208201905081810360008301526112af81611273565b905091905056fea264697066735822122050b41f080926bf4f9f186583798e139b279542447fd028eba1d461cde298594564736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x141 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x32200882 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x84630736 EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB74 JUMP JUMPDEST PUSH2 0x3D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF3 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x100 SWAP2 SWAP1 PUSH2 0xBB0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x11E SWAP2 SWAP1 PUSH2 0xC03 JUMP JUMPDEST PUSH2 0x467 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13A SWAP2 SWAP1 PUSH2 0xCB1 JUMP JUMPDEST PUSH2 0x61C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0xCFE JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x165 PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x9D PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19C JUMPI PUSH2 0x19B PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x201 JUMPI PUSH2 0x200 PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9E PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x22D JUMPI PUSH2 0x22C PUSH2 0xD2B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x16E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x279 PUSH2 0x6F6 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x0 PUSH2 0x774 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x365 JUMPI DUP1 PUSH1 0x66 PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x3CE JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3DA PUSH2 0x6F6 JUMP JUMPDEST DUP1 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC8CA786C100BC62A0DFFBE768B5F0B770D84E8604C5DE54B54197B9066BB42A9 DUP2 PUSH1 0x40 MLOAD PUSH2 0x432 SWAP2 SWAP1 PUSH2 0xDE6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x46F PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D5 SWAP1 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x55D JUMPI DUP1 PUSH1 0x9B PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x5DC JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x60F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x624 PUSH2 0x6F6 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x68 SWAP2 DUP3 PUSH2 0x635 SWAP3 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x667 SWAP3 SWAP2 SWAP1 PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x67B PUSH2 0x6F6 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6EA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6E1 SWAP1 PUSH2 0x122A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6F3 DUP2 PUSH2 0x774 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6FE PUSH2 0x83A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x71C PUSH2 0x43D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x772 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x769 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x869 DUP2 PUSH2 0x856 JUMP JUMPDEST DUP2 EQ PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x886 DUP2 PUSH2 0x860 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x8DA DUP3 PUSH2 0x891 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x8F9 JUMPI PUSH2 0x8F8 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90C PUSH2 0x842 JUMP JUMPDEST SWAP1 POP PUSH2 0x918 DUP3 DUP3 PUSH2 0x8D1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x938 JUMPI PUSH2 0x937 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x969 JUMPI PUSH2 0x968 PUSH2 0x94E JUMP JUMPDEST JUMPDEST PUSH2 0x973 PUSH1 0x40 PUSH2 0x902 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x983 DUP5 DUP3 DUP6 ADD PUSH2 0x877 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x997 DUP5 DUP3 DUP6 ADD PUSH2 0x877 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9B6 PUSH2 0x9B1 DUP5 PUSH2 0x91D JUMP JUMPDEST PUSH2 0x902 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x9D9 JUMPI PUSH2 0x9D8 PUSH2 0x949 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA02 JUMPI DUP1 PUSH2 0x9EE DUP9 DUP3 PUSH2 0x953 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x9DB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA21 JUMPI PUSH2 0xA20 PUSH2 0x88C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA31 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9A3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA51 JUMPI PUSH2 0xA50 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA5F DUP6 DUP3 DUP7 ADD PUSH2 0x877 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA80 JUMPI PUSH2 0xA7F PUSH2 0x851 JUMP JUMPDEST JUMPDEST PUSH2 0xA8C DUP6 DUP3 DUP7 ADD PUSH2 0xA0C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC1 DUP3 PUSH2 0xA96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAD1 DUP2 PUSH2 0xAB6 JUMP JUMPDEST DUP2 EQ PUSH2 0xADC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xAEE DUP2 PUSH2 0xAC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB0B JUMPI PUSH2 0xB0A PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB19 DUP6 DUP3 DUP7 ADD PUSH2 0x877 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB2A DUP6 DUP3 DUP7 ADD PUSH2 0xADF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB51 DUP2 PUSH2 0xB34 JUMP JUMPDEST DUP2 EQ PUSH2 0xB5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB6E DUP2 PUSH2 0xB48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB8A JUMPI PUSH2 0xB89 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB98 DUP5 DUP3 DUP6 ADD PUSH2 0xB5F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBAA DUP2 PUSH2 0xAB6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBC5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBA1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBE0 DUP2 PUSH2 0xBCB JUMP JUMPDEST DUP2 EQ PUSH2 0xBEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBFD DUP2 PUSH2 0xBD7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC1C JUMPI PUSH2 0xC1B PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC2A DUP7 DUP3 DUP8 ADD PUSH2 0x877 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC3B DUP7 DUP3 DUP8 ADD PUSH2 0xADF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xC4C DUP7 DUP3 DUP8 ADD PUSH2 0xBEE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC71 JUMPI PUSH2 0xC70 PUSH2 0x88C JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC8E JUMPI PUSH2 0xC8D PUSH2 0xC56 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xCAA JUMPI PUSH2 0xCA9 PUSH2 0x949 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCC8 JUMPI PUSH2 0xCC7 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCE6 JUMPI PUSH2 0xCE5 PUSH2 0x851 JUMP JUMPDEST JUMPDEST PUSH2 0xCF2 DUP6 DUP3 DUP7 ADD PUSH2 0xC5B JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD14 JUMPI PUSH2 0xD13 PUSH2 0x84C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD22 DUP5 DUP3 DUP6 ADD PUSH2 0xADF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA1 PUSH1 0x16 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0xDAC DUP3 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xDD0 DUP2 PUSH2 0xD94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDE0 DUP2 PUSH2 0xB34 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDFB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDD7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE0A DUP2 PUSH2 0x856 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE19 DUP2 PUSH2 0xBCB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xE34 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xE01 JUMP JUMPDEST PUSH2 0xE41 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0xE4E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE10 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEA8 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEBB JUMPI PUSH2 0xEBA PUSH2 0xE61 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF23 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xEE6 JUMP JUMPDEST PUSH2 0xF2D DUP7 DUP4 PUSH2 0xEE6 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF74 PUSH2 0xF6F PUSH2 0xF6A DUP5 PUSH2 0xF45 JUMP JUMPDEST PUSH2 0xF4F JUMP JUMPDEST PUSH2 0xF45 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF8E DUP4 PUSH2 0xF59 JUMP JUMPDEST PUSH2 0xFA2 PUSH2 0xF9A DUP3 PUSH2 0xF7B JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xEF3 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFB7 PUSH2 0xFAA JUMP JUMPDEST PUSH2 0xFC2 DUP2 DUP5 DUP5 PUSH2 0xF85 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFE6 JUMPI PUSH2 0xFDB PUSH1 0x0 DUP3 PUSH2 0xFAF JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xFC8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x102B JUMPI PUSH2 0xFFC DUP2 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x1005 DUP5 PUSH2 0xED6 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1014 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1028 PUSH2 0x1020 DUP6 PUSH2 0xED6 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0xFC7 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x104E PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1030 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1067 DUP4 DUP4 PUSH2 0x103D JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1081 DUP4 DUP4 PUSH2 0xE56 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x109A JUMPI PUSH2 0x1099 PUSH2 0x8A2 JUMP JUMPDEST JUMPDEST PUSH2 0x10A4 DUP3 SLOAD PUSH2 0xE90 JUMP JUMPDEST PUSH2 0x10AF DUP3 DUP3 DUP6 PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x10DE JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x10CC JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x10D6 DUP6 DUP3 PUSH2 0x105B JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x113E JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x10EC DUP7 PUSH2 0xEC1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1114 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10EF JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x1131 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x112D PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x103D JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1173 DUP4 DUP6 PUSH2 0x1147 JUMP JUMPDEST SWAP4 POP PUSH2 0x1180 DUP4 DUP6 DUP5 PUSH2 0x1158 JUMP JUMPDEST PUSH2 0x1189 DUP4 PUSH2 0x891 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11AF DUP2 DUP5 DUP7 PUSH2 0x1167 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1214 PUSH1 0x26 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0x121F DUP3 PUSH2 0x11B8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1243 DUP2 PUSH2 0x1207 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1280 PUSH1 0x20 DUP4 PUSH2 0xD5A JUMP JUMPDEST SWAP2 POP PUSH2 0x128B DUP3 PUSH2 0x124A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x12AF DUP2 PUSH2 0x1273 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0xB4 0x1F ADDMOD MULMOD 0x26 0xBF 0x4F SWAP16 XOR PUSH6 0x83798E139B27 SWAP6 TIMESTAMP PREVRANDAO PUSH32 0xD028EBA1D461CDE298594564736F6C6343000812003300000000000000000000 ","sourceMap":"139:2737:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1751:500;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2064:101:0;;;:::i;:::-;;2443:263:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2257:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1441:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1401:344:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2712:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2314:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1751:500:13;1334:13:0;:11;:13::i;:::-;1868:14:13::1;1885:12;:19;1868:36;;1919:6;1914:331;1935:6;1931:1;:10;1914:331;;;1959:21;:31;1981:8;1959:31;;;;;;;;;;;1996:12;2009:1;1996:15;;;;;;;;:::i;:::-;;;;;;;;1959:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2078:97;;;;;;;;2120:12;2133:1;2120:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2078:97;;;;2152:8;2078:97;;::::0;2026:27:::1;:49;2054:12;2067:1;2054:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2026:49;;;;;;;;;;;:149;;;;;;;;;;;;;;;;;;;2217:3;;;;;;;1914:331;;;;1857:394;1751:500:::0;;:::o;2064:101:0:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;2443:263:13:-;1334:13:0;:11;:13::i;:::-;2559:1:13::1;2542:19;;:5;:19;;::::0;2534:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2602:13;:4;:13:::0;2598:39:::1;;2632:5;2617:12;;:20;;;;;;;;;;;;;;;;;;2598:39;2651:20;:4;:20:::0;2647:52:::1;;2694:5;2673:18;;:26;;;;;;;;;;;;;;;;;;2647:52;2443:263:::0;;:::o;2257:180::-;1334:13:0;:11;:13::i;:::-;2363:19:13::1;2342:18;;:40;;;;;;;;;;;;;;;;;;2397:33;2410:19;2397:33;;;;;;:::i;:::-;;;;;;;;2257:180:::0;:::o;1441:85:0:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;1401:344:13:-;1334:13:0;:11;:13::i;:::-;1525:1:13::1;1508:19;;:5;:19;;::::0;1500:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1568:15;:4;:15:::0;1564:54:::1;;1612:6;1585:17;:24;1603:5;1585:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1564:54;1632:19;:4;:19:::0;1628:55:::1;;1677:6;1653:14;:21;1668:5;1653:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1628:55;1699:39;1718:4;1724:5;1731:6;1699:39;;;;;;;;:::i;:::-;;;;;;;;1401:344:::0;;;:::o;2712:161::-;1334:13:0;:11;:13::i;:::-;2816:10:13::1;;2802:11;:24;;;;;;;:::i;:::-;;2841:25;2855:10;;2841:25;;;;;;;:::i;:::-;;;;;;;;2712:161:::0;;:::o;2314:198:0:-;1334:13;:11;:13::i;:::-;2422:1:::1;2402:22;;:8;:22;;::::0;2394:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:28;2496:8;2477:18;:28::i;:::-;2314:198:::0;:::o;1599:130::-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;2666:187::-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;850:96:6:-;903:7;929:10;922:17;;850:96;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;813:102;854:6;905:2;901:7;896:2;889:5;885:14;881:28;871:38;;813:102;;;:::o;921:180::-;969:77;966:1;959:88;1066:4;1063:1;1056:15;1090:4;1087:1;1080:15;1107:281;1190:27;1212:4;1190:27;:::i;:::-;1182:6;1178:40;1320:6;1308:10;1305:22;1284:18;1272:10;1269:34;1266:62;1263:88;;;1331:18;;:::i;:::-;1263:88;1371:10;1367:2;1360:22;1150:238;1107:281;;:::o;1394:129::-;1428:6;1455:20;;:::i;:::-;1445:30;;1484:33;1512:4;1504:6;1484:33;:::i;:::-;1394:129;;;:::o;1529:340::-;1635:4;1725:18;1717:6;1714:30;1711:56;;;1747:18;;:::i;:::-;1711:56;1797:4;1789:6;1785:17;1777:25;;1857:4;1851;1847:15;1839:23;;1529:340;;;:::o;1875:117::-;1984:1;1981;1974:12;1998:117;2107:1;2104;2097:12;2293:578;2371:5;2415:4;2403:9;2398:3;2394:19;2390:30;2387:117;;;2423:79;;:::i;:::-;2387:117;2522:21;2538:4;2522:21;:::i;:::-;2513:30;;2602:1;2642:49;2687:3;2678:6;2667:9;2663:22;2642:49;:::i;:::-;2635:4;2628:5;2624:16;2617:75;2553:150;2762:2;2803:49;2848:3;2839:6;2828:9;2824:22;2803:49;:::i;:::-;2796:4;2789:5;2785:16;2778:75;2713:151;2293:578;;;;:::o;2928:797::-;3053:5;3078:110;3094:93;3180:6;3094:93;:::i;:::-;3078:110;:::i;:::-;3069:119;;3208:5;3237:6;3230:5;3223:21;3271:4;3264:5;3260:16;3253:23;;3324:4;3316:6;3312:17;3304:6;3300:30;3353:3;3345:6;3342:15;3339:122;;;3372:79;;:::i;:::-;3339:122;3487:6;3470:249;3504:6;3499:3;3496:15;3470:249;;;3579:3;3608:66;3670:3;3658:10;3608:66;:::i;:::-;3603:3;3596:79;3704:4;3699:3;3695:14;3688:21;;3546:173;3530:4;3525:3;3521:14;3514:21;;3470:249;;;3474:21;3059:666;;2928:797;;;;;:::o;3782:428::-;3882:5;3931:3;3924:4;3916:6;3912:17;3908:27;3898:122;;3939:79;;:::i;:::-;3898:122;4056:6;4043:20;4081:123;4200:3;4192:6;4185:4;4177:6;4173:17;4081:123;:::i;:::-;4072:132;;3888:322;3782:428;;;;:::o;4216:742::-;4338:6;4346;4395:2;4383:9;4374:7;4370:23;4366:32;4363:119;;;4401:79;;:::i;:::-;4363:119;4521:1;4546:53;4591:7;4582:6;4571:9;4567:22;4546:53;:::i;:::-;4536:63;;4492:117;4676:2;4665:9;4661:18;4648:32;4707:18;4699:6;4696:30;4693:117;;;4729:79;;:::i;:::-;4693:117;4834:107;4933:7;4924:6;4913:9;4909:22;4834:107;:::i;:::-;4824:117;;4619:332;4216:742;;;;;:::o;4964:126::-;5001:7;5041:42;5034:5;5030:54;5019:65;;4964:126;;;:::o;5096:96::-;5133:7;5162:24;5180:5;5162:24;:::i;:::-;5151:35;;5096:96;;;:::o;5198:122::-;5271:24;5289:5;5271:24;:::i;:::-;5264:5;5261:35;5251:63;;5310:1;5307;5300:12;5251:63;5198:122;:::o;5326:139::-;5372:5;5410:6;5397:20;5388:29;;5426:33;5453:5;5426:33;:::i;:::-;5326:139;;;;:::o;5471:474::-;5539:6;5547;5596:2;5584:9;5575:7;5571:23;5567:32;5564:119;;;5602:79;;:::i;:::-;5564:119;5722:1;5747:53;5792:7;5783:6;5772:9;5768:22;5747:53;:::i;:::-;5737:63;;5693:117;5849:2;5875:53;5920:7;5911:6;5900:9;5896:22;5875:53;:::i;:::-;5865:63;;5820:118;5471:474;;;;;:::o;5951:101::-;5987:7;6027:18;6020:5;6016:30;6005:41;;5951:101;;;:::o;6058:120::-;6130:23;6147:5;6130:23;:::i;:::-;6123:5;6120:34;6110:62;;6168:1;6165;6158:12;6110:62;6058:120;:::o;6184:137::-;6229:5;6267:6;6254:20;6245:29;;6283:32;6309:5;6283:32;:::i;:::-;6184:137;;;;:::o;6327:327::-;6385:6;6434:2;6422:9;6413:7;6409:23;6405:32;6402:119;;;6440:79;;:::i;:::-;6402:119;6560:1;6585:52;6629:7;6620:6;6609:9;6605:22;6585:52;:::i;:::-;6575:62;;6531:116;6327:327;;;;:::o;6660:118::-;6747:24;6765:5;6747:24;:::i;:::-;6742:3;6735:37;6660:118;;:::o;6784:222::-;6877:4;6915:2;6904:9;6900:18;6892:26;;6928:71;6996:1;6985:9;6981:17;6972:6;6928:71;:::i;:::-;6784:222;;;;:::o;7012:90::-;7046:7;7089:5;7082:13;7075:21;7064:32;;7012:90;;;:::o;7108:116::-;7178:21;7193:5;7178:21;:::i;:::-;7171:5;7168:32;7158:60;;7214:1;7211;7204:12;7158:60;7108:116;:::o;7230:133::-;7273:5;7311:6;7298:20;7289:29;;7327:30;7351:5;7327:30;:::i;:::-;7230:133;;;;:::o;7369:613::-;7443:6;7451;7459;7508:2;7496:9;7487:7;7483:23;7479:32;7476:119;;;7514:79;;:::i;:::-;7476:119;7634:1;7659:53;7704:7;7695:6;7684:9;7680:22;7659:53;:::i;:::-;7649:63;;7605:117;7761:2;7787:53;7832:7;7823:6;7812:9;7808:22;7787:53;:::i;:::-;7777:63;;7732:118;7889:2;7915:50;7957:7;7948:6;7937:9;7933:22;7915:50;:::i;:::-;7905:60;;7860:115;7369:613;;;;;:::o;7988:117::-;8097:1;8094;8087:12;8124:552;8181:8;8191:6;8241:3;8234:4;8226:6;8222:17;8218:27;8208:122;;8249:79;;:::i;:::-;8208:122;8362:6;8349:20;8339:30;;8392:18;8384:6;8381:30;8378:117;;;8414:79;;:::i;:::-;8378:117;8528:4;8520:6;8516:17;8504:29;;8582:3;8574:4;8566:6;8562:17;8552:8;8548:32;8545:41;8542:128;;;8589:79;;:::i;:::-;8542:128;8124:552;;;;;:::o;8682:527::-;8752:6;8760;8809:2;8797:9;8788:7;8784:23;8780:32;8777:119;;;8815:79;;:::i;:::-;8777:119;8963:1;8952:9;8948:17;8935:31;8993:18;8985:6;8982:30;8979:117;;;9015:79;;:::i;:::-;8979:117;9128:64;9184:7;9175:6;9164:9;9160:22;9128:64;:::i;:::-;9110:82;;;;8906:296;8682:527;;;;;:::o;9215:329::-;9274:6;9323:2;9311:9;9302:7;9298:23;9294:32;9291:119;;;9329:79;;:::i;:::-;9291:119;9449:1;9474:53;9519:7;9510:6;9499:9;9495:22;9474:53;:::i;:::-;9464:63;;9420:117;9215:329;;;;:::o;9550:180::-;9598:77;9595:1;9588:88;9695:4;9692:1;9685:15;9719:4;9716:1;9709:15;9736:169;9820:11;9854:6;9849:3;9842:19;9894:4;9889:3;9885:14;9870:29;;9736:169;;;;:::o;9911:172::-;10051:24;10047:1;10039:6;10035:14;10028:48;9911:172;:::o;10089:366::-;10231:3;10252:67;10316:2;10311:3;10252:67;:::i;:::-;10245:74;;10328:93;10417:3;10328:93;:::i;:::-;10446:2;10441:3;10437:12;10430:19;;10089:366;;;:::o;10461:419::-;10627:4;10665:2;10654:9;10650:18;10642:26;;10714:9;10708:4;10704:20;10700:1;10689:9;10685:17;10678:47;10742:131;10868:4;10742:131;:::i;:::-;10734:139;;10461:419;;;:::o;10886:115::-;10971:23;10988:5;10971:23;:::i;:::-;10966:3;10959:36;10886:115;;:::o;11007:218::-;11098:4;11136:2;11125:9;11121:18;11113:26;;11149:69;11215:1;11204:9;11200:17;11191:6;11149:69;:::i;:::-;11007:218;;;;:::o;11231:118::-;11318:24;11336:5;11318:24;:::i;:::-;11313:3;11306:37;11231:118;;:::o;11355:109::-;11436:21;11451:5;11436:21;:::i;:::-;11431:3;11424:34;11355:109;;:::o;11470:430::-;11613:4;11651:2;11640:9;11636:18;11628:26;;11664:71;11732:1;11721:9;11717:17;11708:6;11664:71;:::i;:::-;11745:72;11813:2;11802:9;11798:18;11789:6;11745:72;:::i;:::-;11827:66;11889:2;11878:9;11874:18;11865:6;11827:66;:::i;:::-;11470:430;;;;;;:::o;11906:96::-;11964:6;11992:3;11982:13;;11906:96;;;;:::o;12008:180::-;12056:77;12053:1;12046:88;12153:4;12150:1;12143:15;12177:4;12174:1;12167:15;12194:320;12238:6;12275:1;12269:4;12265:12;12255:22;;12322:1;12316:4;12312:12;12343:18;12333:81;;12399:4;12391:6;12387:17;12377:27;;12333:81;12461:2;12453:6;12450:14;12430:18;12427:38;12424:84;;12480:18;;:::i;:::-;12424:84;12245:269;12194:320;;;:::o;12520:140::-;12568:4;12591:3;12583:11;;12614:3;12611:1;12604:14;12648:4;12645:1;12635:18;12627:26;;12520:140;;;:::o;12666:93::-;12703:6;12750:2;12745;12738:5;12734:14;12730:23;12720:33;;12666:93;;;:::o;12765:107::-;12809:8;12859:5;12853:4;12849:16;12828:37;;12765:107;;;;:::o;12878:393::-;12947:6;12997:1;12985:10;12981:18;13020:97;13050:66;13039:9;13020:97;:::i;:::-;13138:39;13168:8;13157:9;13138:39;:::i;:::-;13126:51;;13210:4;13206:9;13199:5;13195:21;13186:30;;13259:4;13249:8;13245:19;13238:5;13235:30;13225:40;;12954:317;;12878:393;;;;;:::o;13277:77::-;13314:7;13343:5;13332:16;;13277:77;;;:::o;13360:60::-;13388:3;13409:5;13402:12;;13360:60;;;:::o;13426:142::-;13476:9;13509:53;13527:34;13536:24;13554:5;13536:24;:::i;:::-;13527:34;:::i;:::-;13509:53;:::i;:::-;13496:66;;13426:142;;;:::o;13574:75::-;13617:3;13638:5;13631:12;;13574:75;;;:::o;13655:269::-;13765:39;13796:7;13765:39;:::i;:::-;13826:91;13875:41;13899:16;13875:41;:::i;:::-;13867:6;13860:4;13854:11;13826:91;:::i;:::-;13820:4;13813:105;13731:193;13655:269;;;:::o;13930:73::-;13975:3;13930:73;:::o;14009:189::-;14086:32;;:::i;:::-;14127:65;14185:6;14177;14171:4;14127:65;:::i;:::-;14062:136;14009:189;;:::o;14204:186::-;14264:120;14281:3;14274:5;14271:14;14264:120;;;14335:39;14372:1;14365:5;14335:39;:::i;:::-;14308:1;14301:5;14297:13;14288:22;;14264:120;;;14204:186;;:::o;14396:541::-;14496:2;14491:3;14488:11;14485:445;;;14530:37;14561:5;14530:37;:::i;:::-;14613:29;14631:10;14613:29;:::i;:::-;14603:8;14599:44;14796:2;14784:10;14781:18;14778:49;;;14817:8;14802:23;;14778:49;14840:80;14896:22;14914:3;14896:22;:::i;:::-;14886:8;14882:37;14869:11;14840:80;:::i;:::-;14500:430;;14485:445;14396:541;;;:::o;14943:117::-;14997:8;15047:5;15041:4;15037:16;15016:37;;14943:117;;;;:::o;15066:169::-;15110:6;15143:51;15191:1;15187:6;15179:5;15176:1;15172:13;15143:51;:::i;:::-;15139:56;15224:4;15218;15214:15;15204:25;;15117:118;15066:169;;;;:::o;15240:295::-;15316:4;15462:29;15487:3;15481:4;15462:29;:::i;:::-;15454:37;;15524:3;15521:1;15517:11;15511:4;15508:21;15500:29;;15240:295;;;;:::o;15540:1398::-;15662:43;15701:3;15696;15662:43;:::i;:::-;15770:18;15762:6;15759:30;15756:56;;;15792:18;;:::i;:::-;15756:56;15836:38;15868:4;15862:11;15836:38;:::i;:::-;15921:66;15980:6;15972;15966:4;15921:66;:::i;:::-;16014:1;16043:2;16035:6;16032:14;16060:1;16055:631;;;;16730:1;16747:6;16744:84;;;16803:9;16798:3;16794:19;16781:33;16772:42;;16744:84;16854:67;16914:6;16907:5;16854:67;:::i;:::-;16848:4;16841:81;16703:229;16025:907;;16055:631;16107:4;16103:9;16095:6;16091:22;16141:36;16172:4;16141:36;:::i;:::-;16199:1;16213:215;16227:7;16224:1;16221:14;16213:215;;;16313:9;16308:3;16304:19;16291:33;16283:6;16276:49;16364:1;16356:6;16352:14;16342:24;;16411:2;16400:9;16396:18;16383:31;;16250:4;16247:1;16243:12;16238:17;;16213:215;;;16456:6;16447:7;16444:19;16441:186;;;16521:9;16516:3;16512:19;16499:33;16564:48;16606:4;16598:6;16594:17;16583:9;16564:48;:::i;:::-;16556:6;16549:64;16464:163;16441:186;16673:1;16669;16661:6;16657:14;16653:22;16647:4;16640:36;16062:624;;;16025:907;;15637:1301;;;15540:1398;;;:::o;16944:168::-;17027:11;17061:6;17056:3;17049:19;17101:4;17096:3;17092:14;17077:29;;16944:168;;;;:::o;17118:146::-;17215:6;17210:3;17205;17192:30;17256:1;17247:6;17242:3;17238:16;17231:27;17118:146;;;:::o;17292:314::-;17388:3;17409:70;17472:6;17467:3;17409:70;:::i;:::-;17402:77;;17489:56;17538:6;17533:3;17526:5;17489:56;:::i;:::-;17570:29;17592:6;17570:29;:::i;:::-;17565:3;17561:39;17554:46;;17292:314;;;;;:::o;17612:329::-;17733:4;17771:2;17760:9;17756:18;17748:26;;17820:9;17814:4;17810:20;17806:1;17795:9;17791:17;17784:47;17848:86;17929:4;17920:6;17912;17848:86;:::i;:::-;17840:94;;17612:329;;;;;:::o;17947:225::-;18087:34;18083:1;18075:6;18071:14;18064:58;18156:8;18151:2;18143:6;18139:15;18132:33;17947:225;:::o;18178:366::-;18320:3;18341:67;18405:2;18400:3;18341:67;:::i;:::-;18334:74;;18417:93;18506:3;18417:93;:::i;:::-;18535:2;18530:3;18526:12;18519:19;;18178:366;;;:::o;18550:419::-;18716:4;18754:2;18743:9;18739:18;18731:26;;18803:9;18797:4;18793:20;18789:1;18778:9;18774:17;18767:47;18831:131;18957:4;18831:131;:::i;:::-;18823:139;;18550:419;;;:::o;18975:182::-;19115:34;19111:1;19103:6;19099:14;19092:58;18975:182;:::o;19163:366::-;19305:3;19326:67;19390:2;19385:3;19326:67;:::i;:::-;19319:74;;19402:93;19491:3;19402:93;:::i;:::-;19520:2;19515:3;19511:12;19504:19;;19163:366;;;:::o;19535:419::-;19701:4;19739:2;19728:9;19724:18;19716:26;;19788:9;19782:4;19778:20;19774:1;19763:9;19759:17;19752:47;19816:131;19942:4;19816:131;:::i;:::-;19808:139;;19535:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"968800","executionCost":"1008","totalCost":"969808"},"external":{"owner()":"2522","renounceOwnership()":"30421","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"infinite","settingManagerBool(bytes32,address,bool)":"infinite","transferOwnership(address)":"30810","updateProtocolAddresses(bytes32,address)":"51602","updateProtocolAggregator(bytes)":"infinite","updateProtocolFees(uint64)":"infinite"}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"32200882","settingManagerBool(bytes32,address,bool)":"99e3c0b4","transferOwnership(address)":"f2fde38b","updateProtocolAddresses(bytes32,address)":"79a0effb","updateProtocolAggregator(bytes)":"cb79455b","updateProtocolFees(uint64)":"84630736"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"protocolFee\",\"type\":\"uint64\"}],\"name\":\"PaycrestFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"SetAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"SetFeeRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SettingManagerBool\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"institutions\",\"type\":\"tuple[]\"}],\"name\":\"setSupportedInstitutions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"settingManagerBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"updateProtocolAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"updateProtocolAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_protocolFeePercent\",\"type\":\"uint64\"}],\"name\":\"updateProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PaycrestSettingManager.sol\":\"PaycrestSettingManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"contracts/PaycrestSettingManager.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\n\\ncontract PaycrestSettingManager is OwnableUpgradeable { \\n struct Institution {\\n bytes32 code; // usually not more than 8 letters\\n bytes32 name; // \\n }\\n struct InstitutionByCode {\\n bytes32 name;\\n bytes32 currency;\\n }\\n uint256 internal MAX_BPS;\\n uint64 internal protocolFeePercent; // 5%\\n address internal feeRecipient;\\n address internal _aggregatorAddress;\\n bytes internal _aggregator;\\n \\n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\\n uint256[50] private __gap;\\n\\n mapping(address => bool) internal _isTokenSupported;\\n mapping(address => bool) internal _isWhitelisted;\\n\\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\\n\\n event SettingManagerBool(bytes32 what, address value, bool status);\\n event PaycrestFees(uint64 protocolFee);\\n event SetAggregator(bytes aggregator);\\n event SetFeeRecipient(address feeRecipient);\\n \\n /* ##################################################################\\n OWNER FUNCTIONS\\n ################################################################## */\\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"token\\\") _isTokenSupported[value] = status;\\n if (what == \\\"whitelist\\\") _isWhitelisted[value] = status;\\n\\n emit SettingManagerBool(what, value, status);\\n }\\n\\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \\n uint256 length = institutions.length;\\n for (uint i = 0; i < length; ) {\\n supportedInstitutions[currency].push(institutions[i]);\\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\\n name: institutions[i].name, currency: currency\\n });\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function updateProtocolFees(uint64 _protocolFeePercent) external onlyOwner {\\n protocolFeePercent = _protocolFeePercent;\\n emit PaycrestFees(_protocolFeePercent);\\n }\\n\\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"fee\\\") feeRecipient = value;\\n if (what == \\\"aggregator\\\") _aggregatorAddress = value;\\n }\\n\\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\\n _aggregator = aggregator;\\n emit SetAggregator(aggregator);\\n }\\n\\n}\\n\",\"keccak256\":\"0xa7a73992f19899060ce30182c809c3bd02ce01e4675de7e0ddd1701deccb25f9\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":3533,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"MAX_BPS","offset":0,"slot":"101","type":"t_uint256"},{"astId":3535,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"protocolFeePercent","offset":0,"slot":"102","type":"t_uint64"},{"astId":3537,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"feeRecipient","offset":8,"slot":"102","type":"t_address"},{"astId":3539,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_aggregatorAddress","offset":0,"slot":"103","type":"t_address"},{"astId":3541,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_aggregator","offset":0,"slot":"104","type":"t_bytes_storage"},{"astId":3545,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"105","type":"t_array(t_uint256)50_storage"},{"astId":3549,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_isTokenSupported","offset":0,"slot":"155","type":"t_mapping(t_address,t_bool)"},{"astId":3553,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_isWhitelisted","offset":0,"slot":"156","type":"t_mapping(t_address,t_bool)"},{"astId":3559,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"supportedInstitutions","offset":0,"slot":"157","type":"t_mapping(t_bytes32,t_array(t_struct(Institution)3526_storage)dyn_storage)"},{"astId":3564,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"supportedInstitutionsByCode","offset":0,"slot":"158","type":"t_mapping(t_bytes32,t_struct(InstitutionByCode)3531_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Institution)3526_storage)dyn_storage":{"base":"t_struct(Institution)3526_storage","encoding":"dynamic_array","label":"struct PaycrestSettingManager.Institution[]","numberOfBytes":"32"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_array(t_struct(Institution)3526_storage)dyn_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])","numberOfBytes":"32","value":"t_array(t_struct(Institution)3526_storage)dyn_storage"},"t_mapping(t_bytes32,t_struct(InstitutionByCode)3531_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)","numberOfBytes":"32","value":"t_struct(InstitutionByCode)3531_storage"},"t_struct(Institution)3526_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.Institution","members":[{"astId":3523,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"code","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3525,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"name","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(InstitutionByCode)3531_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.InstitutionByCode","members":[{"astId":3528,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"name","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3530,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"currency","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interface/IPaycrest.sol":{"IPaycrest":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"institutionCode","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"string","name":"messageHash","type":"string"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardValidator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"uint96","name":"settlePercent","type":"uint96"}],"name":"Settled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSenderFee","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_institutionCode","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"uint96","name":"_rate","type":"uint96"},{"internalType":"address","name":"_senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"_senderFee","type":"uint256"},{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"string","name":"messageHash","type":"string"}],"name":"createOrder","outputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAggregator","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint64","name":"protocolReward","type":"uint64"},{"internalType":"uint256","name":"max_bps","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"name":"getOrderInfo","outputs":[{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"senderFee","type":"uint256"},{"internalType":"uint96","name":"rate","type":"uint96"},{"internalType":"bool","name":"isFulfilled","type":"bool"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint96","name":"currentBPS","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPaycrest.Order","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"}],"name":"refund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint64","name":"_settlePercent","type":"uint64"},{"internalType":"bool","name":"_isPartner","type":"bool"}],"name":"settle","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Chef Photons, Paycrest Team serving high quality drinks; drink responsibly. Factory and global config params","events":{"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)":{"details":"Emitted when deposit is made."},"Refunded(bytes32,bytes32)":{"details":"Emitted when aggregator refund transaction."},"RewardValidator(address,uint256)":{"details":"Emitted when primary validator get therir rewards."},"Settled(bytes32,bytes32,bytes32,address,uint96)":{"details":"Emitted when aggregator settle transaction."},"TransferSenderFee(address,uint256)":{"details":"Emitted when sender get therir rewards."}},"kind":"dev","methods":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"details":"See {isTokenSupported}. `amount` must be greater than minimum `_refundable` refundable address must not be zero address","params":{"_amount":"amount in the decimal of `_token` above.","_institutionCode":"institution code of the sender.","_label":"reference of the sender.","_rate":"rate at which sender intended to sell `_amount` of `_token`.","_refundAddress":"address that is going to recieve `_amount` in `_token` when there is a need to refund.","_senderFee":"amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.","_senderFeeRecipient":"address that is going to recieve `_senderFee` in `_token` when there is a need to refund.","_token":"address of the token.","messageHash":"hash must be the result of a hash operation for the verification to be secure. message"},"returns":{"_orderId":"the bytes20 which is the orderId"}},"getAggregator()":{"returns":{"_0":"aggregator public key."}},"getAggregatorAddress()":{"returns":{"_0":"address of `Aggregator`."}},"getFeeDetails()":{"returns":{"max_bps":"maximum amount in bps \"100% == 100_000\".","protocolReward":"amount that will be taken in percentage on all trade."}},"getOrderInfo(bytes32)":{"params":{"_orderId":"transaction Id."}},"getWhitelistedStatus(address)":{"params":{"sender":"address of the sender."},"returns":{"_0":"address of `status`."}},"isTokenSupported(address)":{"params":{"_token":"address of the token to check."},"returns":{"_0":"return the status of `_token` {bool}"}},"refund(bytes32,bytes32)":{"params":{"_label":"reference of the sender.","_orderId":"transaction Id."},"returns":{"_0":"return the status of transaction {bool}"}},"settle(bytes32,bytes32,bytes32,address,uint64,bool)":{"params":{"_isPartner":"is the liquidity provider a partner.","_label":"reference of the sender.","_liquidityProvider":"address of the liquidity provider.","_orderId":"transaction Id.","_settlePercent":"rate at which the transaction is settled."},"returns":{"_0":"return the status of transaction {bool}"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"2654ec7e","getAggregator()":"3ad59dbc","getAggregatorAddress()":"e8d6e0de","getFeeDetails()":"b810c636","getOrderInfo(bytes32)":"768c6ec0","getWhitelistedStatus(address)":"d8e8de34","isTokenSupported(address)":"75151b63","refund(bytes32,bytes32)":"e4683a79","settle(bytes32,bytes32,bytes32,address,uint64,bool)":"5fe44cac"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"institutionCode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"Refunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"settlePercent\",\"type\":\"uint96\"}],\"name\":\"Settled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSenderFee\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_institutionCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"_rate\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"_senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_senderFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"createOrder\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"protocolReward\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"max_bps\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"name\":\"getOrderInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"rate\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"isFulfilled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"currentBPS\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaycrest.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getWhitelistedStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"}],\"name\":\"refund\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_liquidityProvider\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_settlePercent\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isPartner\",\"type\":\"bool\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Chef Photons, Paycrest Team serving high quality drinks; drink responsibly. Factory and global config params\",\"events\":{\"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)\":{\"details\":\"Emitted when deposit is made.\"},\"Refunded(bytes32,bytes32)\":{\"details\":\"Emitted when aggregator refund transaction.\"},\"RewardValidator(address,uint256)\":{\"details\":\"Emitted when primary validator get therir rewards.\"},\"Settled(bytes32,bytes32,bytes32,address,uint96)\":{\"details\":\"Emitted when aggregator settle transaction.\"},\"TransferSenderFee(address,uint256)\":{\"details\":\"Emitted when sender get therir rewards.\"}},\"kind\":\"dev\",\"methods\":{\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"details\":\"See {isTokenSupported}. `amount` must be greater than minimum `_refundable` refundable address must not be zero address\",\"params\":{\"_amount\":\"amount in the decimal of `_token` above.\",\"_institutionCode\":\"institution code of the sender.\",\"_label\":\"reference of the sender.\",\"_rate\":\"rate at which sender intended to sell `_amount` of `_token`.\",\"_refundAddress\":\"address that is going to recieve `_amount` in `_token` when there is a need to refund.\",\"_senderFee\":\"amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\",\"_senderFeeRecipient\":\"address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\",\"_token\":\"address of the token.\",\"messageHash\":\"hash must be the result of a hash operation for the verification to be secure. message\"},\"returns\":{\"_orderId\":\"the bytes20 which is the orderId\"}},\"getAggregator()\":{\"returns\":{\"_0\":\"aggregator public key.\"}},\"getAggregatorAddress()\":{\"returns\":{\"_0\":\"address of `Aggregator`.\"}},\"getFeeDetails()\":{\"returns\":{\"max_bps\":\"maximum amount in bps \\\"100% == 100_000\\\".\",\"protocolReward\":\"amount that will be taken in percentage on all trade.\"}},\"getOrderInfo(bytes32)\":{\"params\":{\"_orderId\":\"transaction Id.\"}},\"getWhitelistedStatus(address)\":{\"params\":{\"sender\":\"address of the sender.\"},\"returns\":{\"_0\":\"address of `status`.\"}},\"isTokenSupported(address)\":{\"params\":{\"_token\":\"address of the token to check.\"},\"returns\":{\"_0\":\"return the status of `_token` {bool}\"}},\"refund(bytes32,bytes32)\":{\"params\":{\"_label\":\"reference of the sender.\",\"_orderId\":\"transaction Id.\"},\"returns\":{\"_0\":\"return the status of transaction {bool}\"}},\"settle(bytes32,bytes32,bytes32,address,uint64,bool)\":{\"params\":{\"_isPartner\":\"is the liquidity provider a partner.\",\"_label\":\"reference of the sender.\",\"_liquidityProvider\":\"address of the liquidity provider.\",\"_orderId\":\"transaction Id.\",\"_settlePercent\":\"rate at which the transaction is settled.\"},\"returns\":{\"_0\":\"return the status of transaction {bool}\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"notice\":\"lock sender `_amount` of `token` into Paycrest. Requirements: `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\"},\"getAggregator()\":{\"notice\":\"get aggregator public key.\"},\"getAggregatorAddress()\":{\"notice\":\"get address of liquidity aggregator.\"},\"getFeeDetails()\":{\"notice\":\"get every rewards and address on Paycrest.\"},\"getOrderInfo(bytes32)\":{\"notice\":\"get order details.\"},\"getWhitelistedStatus(address)\":{\"notice\":\"get address of sender whitelisting status.\"},\"isTokenSupported(address)\":{\"notice\":\"get supported token from Paycrest.\"},\"refund(bytes32,bytes32)\":{\"notice\":\"refund to the specified refundable address. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `isFulfilled` must be false.\"},\"settle(bytes32,bytes32,bytes32,address,uint64,bool)\":{\"notice\":\"settle transaction and distribute rewards accordingly. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `_primaryValidator` must have stake on the Paycrest staking platform. `_secondaryValidators` must have stake on the Paycrest staking platform. `amount` must be greater than minimum `_refundable` refundable address must not be zero address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interface/IPaycrest.sol\":\"IPaycrest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/interface/IPaycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n/**\\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\\n * Factory and global config params\\n */\\ninterface IPaycrest {\\n \\n /* ##################################################################\\n EVENTS\\n ################################################################## */\\n /// @dev Emitted when deposit is made.\\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\\n /// @dev Emitted when aggregator settle transaction.\\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\\n /// @dev Emitted when aggregator refund transaction.\\n event Refunded(bytes32 indexed orderId, bytes32 label);\\n /// @dev Emitted when sender get therir rewards.\\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\\n /// @dev Emitted when primary validator get therir rewards.\\n event RewardValidator(address indexed validator, uint256 indexed amount);\\n\\n /* ##################################################################\\n STRUCTS\\n ################################################################## */\\n struct TransactionMetadata {\\n bytes8 identifier; // slot 0\\n bytes8 institution; // slot 0\\n bytes8 name; // slot 0\\n bytes8 currency; // slot 0\\n uint256 liquidityProviderID; // slot 1\\n }\\n\\n struct Order {\\n address seller; // slot 0\\n address token; // slot 1\\n address senderFeeRecipient;\\n uint256 senderFee;\\n uint96 rate; // slot 1\\n bool isFulfilled; // slot 2 {11 bytes available}\\n address refundAddress; // slot 2 {12 bytes available}\\n uint96 currentBPS; // slot 2 {}\\n uint256 amount; // slot 3\\n }\\n\\n\\n /* ##################################################################\\n EXTERNAL CALLS\\n ################################################################## */\\n /// @notice lock sender `_amount` of `token` into Paycrest.\\n /// Requirements:\\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _token address of the token.\\n /// @param _amount amount in the decimal of `_token` above.\\n /// @param _institutionCode institution code of the sender.\\n /// @param _label reference of the sender.\\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\\n /// @return _orderId the bytes20 which is the orderId\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash) external returns(bytes32 _orderId);\\n\\n /// @notice settle transaction and distribute rewards accordingly.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @param _liquidityProvider address of the liquidity provider.\\n /// @param _settlePercent rate at which the transaction is settled.\\n /// @param _isPartner is the liquidity provider a partner.\\n /// @return return the status of transaction {bool}\\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\\n\\n /// @notice refund to the specified refundable address.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `isFulfilled` must be false.\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @return return the status of transaction {bool}\\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\\n\\n /// @notice get supported token from Paycrest.\\n /// @param _token address of the token to check.\\n /// @return return the status of `_token` {bool}\\n function isTokenSupported(address _token) external view returns(bool);\\n\\n /// @notice get order details.\\n /// @param _orderId transaction Id.\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\\n\\n /// @notice get every rewards and address on Paycrest.\\n /// @return protocolReward amount that will be taken in percentage on all trade.\\n /// @return max_bps maximum amount in bps \\\"100% == 100_000\\\".\\n function getFeeDetails() external view returns(\\n uint64 protocolReward, \\n uint256 max_bps\\n );\\n\\n /// @notice get address of liquidity aggregator.\\n /// @return address of `Aggregator`.\\n function getAggregatorAddress() external view returns(address);\\n\\n /// @notice get aggregator public key.\\n /// @return aggregator public key.\\n function getAggregator() external view returns(bytes memory);\\n \\n /// @notice get address of sender whitelisting status.\\n /// @param sender address of the sender.\\n /// @return address of `status`.\\n function getWhitelistedStatus(address sender) external view returns(bool);\\n\\n}\\n\",\"keccak256\":\"0x198ea288244ee5a444a202088748913df1d930f9561fda95a120ff81c9bcb04b\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"notice":"lock sender `_amount` of `token` into Paycrest. Requirements: `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call."},"getAggregator()":{"notice":"get aggregator public key."},"getAggregatorAddress()":{"notice":"get address of liquidity aggregator."},"getFeeDetails()":{"notice":"get every rewards and address on Paycrest."},"getOrderInfo(bytes32)":{"notice":"get order details."},"getWhitelistedStatus(address)":{"notice":"get address of sender whitelisting status."},"isTokenSupported(address)":{"notice":"get supported token from Paycrest."},"refund(bytes32,bytes32)":{"notice":"refund to the specified refundable address. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `isFulfilled` must be false."},"settle(bytes32,bytes32,bytes32,address,uint64,bool)":{"notice":"settle transaction and distribute rewards accordingly. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `_primaryValidator` must have stake on the Paycrest staking platform. `_secondaryValidators` must have stake on the Paycrest staking platform. `amount` must be greater than minimum `_refundable` refundable address must not be zero address"}},"version":1}}}}}} \ No newline at end of file diff --git a/artifacts/build-info/ca9c3aad2893934d15dc9e3926dda80c.json b/artifacts/build-info/ca9c3aad2893934d15dc9e3926dda80c.json deleted file mode 100644 index 105da79..0000000 --- a/artifacts/build-info/ca9c3aad2893934d15dc9e3926dda80c.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"ca9c3aad2893934d15dc9e3926dda80c","_format":"hh-sol-build-info-1","solcVersion":"0.8.18","solcLongVersion":"0.8.18+commit.87f61d96","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n function __Ownable_init() internal onlyInitializing {\n __Ownable_init_unchained();\n }\n\n function __Ownable_init_unchained() internal onlyInitializing {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20PermitUpgradeable {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20Upgradeable {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20Upgradeable.sol\";\nimport \"../extensions/IERC20PermitUpgradeable.sol\";\nimport \"../../../utils/AddressUpgradeable.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20Upgradeable {\n using AddressUpgradeable for address;\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n unchecked {\n uint256 oldAllowance = token.allowance(address(this), spender);\n require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n */\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n * Revert on invalid signature.\n */\n function safePermit(\n IERC20PermitUpgradeable token,\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal {\n uint256 nonceBefore = token.nonces(owner);\n token.permit(owner, spender, value, deadline, v, r, s);\n uint256 nonceAfter = token.nonces(owner);\n require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\n // and not revert is the subcall reverts.\n\n (bool success, bytes memory returndata) = address(token).call(data);\n return\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../StringsUpgradeable.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSAUpgradeable {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV // Deprecated in v4.8\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\")\n mstore(0x1c, hash)\n message := keccak256(0x00, 0x3c)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", StringsUpgradeable.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, \"\\x19\\x01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n data := keccak256(ptr, 0x42)\n }\n }\n\n /**\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\n * `validator` and `data` according to the version 0 of EIP-191.\n *\n * See {recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x00\", validator, data));\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary MathUpgradeable {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMathUpgradeable {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/MathUpgradeable.sol\";\nimport \"./math/SignedMathUpgradeable.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary StringsUpgradeable {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = MathUpgradeable.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMathUpgradeable.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, MathUpgradeable.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"contracts/interface/IPaycrest.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n/**\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\n * Factory and global config params\n */\ninterface IPaycrest {\n \n /* ##################################################################\n EVENTS\n ################################################################## */\n /// @dev Emitted when deposit is made.\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\n /// @dev Emitted when aggregator settle transaction.\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\n /// @dev Emitted when aggregator refund transaction.\n event Refunded(bytes32 indexed orderId, bytes32 label);\n /// @dev Emitted when sender get therir rewards.\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\n /// @dev Emitted when primary validator get therir rewards.\n event RewardValidator(address indexed validator, uint256 indexed amount);\n\n /* ##################################################################\n STRUCTS\n ################################################################## */\n struct TransactionMetadata {\n bytes8 identifier; // slot 0\n bytes8 institution; // slot 0\n bytes8 name; // slot 0\n bytes8 currency; // slot 0\n uint256 liquidityProviderID; // slot 1\n }\n\n struct Order {\n address seller; // slot 0\n address token; // slot 1\n address senderFeeRecipient;\n uint256 senderFee;\n uint96 rate; // slot 1\n bool isFulfilled; // slot 2 {11 bytes available}\n address refundAddress; // slot 2 {12 bytes available}\n uint96 currentBPS; // slot 2 {}\n uint256 amount; // slot 3\n }\n\n\n /* ##################################################################\n EXTERNAL CALLS\n ################################################################## */\n /// @notice lock sender `_amount` of `token` into Paycrest.\n /// Requirements:\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\n /// `amount` must be greater than minimum\n /// `_refundable` refundable address must not be zero address\n /// @param _token address of the token.\n /// @param _amount amount in the decimal of `_token` above.\n /// @param _institutionCode institution code of the sender.\n /// @param _label reference of the sender.\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\n /// @return _orderId the bytes20 which is the orderId\n function createOrder(\n address _token, \n uint256 _amount, \n bytes32 _institutionCode,\n bytes32 _label,\n uint96 _rate, \n address _senderFeeRecipient,\n uint256 _senderFee,\n address _refundAddress, \n string calldata messageHash) external returns(bytes32 _orderId);\n\n /// @notice settle transaction and distribute rewards accordingly.\n /// Requirements:\n /// {only aggregators call}.\n /// `_orderId` it must be less than total ids.\n /// `_orderId` it must be an open Id.\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\n /// `amount` must be greater than minimum\n /// `_refundable` refundable address must not be zero address\n /// @param _orderId transaction Id.\n /// @param _label reference of the sender.\n /// @param _validators arrays of secondary validators.\n /// @param _liquidityProvider address of the liquidity provider.\n /// @param _settlePercent rate at which the transaction is settled.\n /// @param _isPartner is the liquidity provider a partner.\n /// @return return the status of transaction {bool}\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\n\n /// @notice refund to the specified refundable address.\n /// Requirements:\n /// {only aggregators call}.\n /// `_orderId` it must be less than total ids.\n /// `_orderId` it must be an open Id.\n /// `isFulfilled` must be false.\n /// @param _orderId transaction Id.\n /// @param _label reference of the sender.\n /// @return return the status of transaction {bool}\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\n\n /// @notice get supported token from Paycrest.\n /// @param _token address of the token to check.\n /// @return return the status of `_token` {bool}\n function isTokenSupported(address _token) external view returns(bool);\n\n /// @notice get order details.\n /// @param _orderId transaction Id.\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\n\n /// @notice get every rewards and address on Paycrest.\n /// @return protocolReward amount that will be taken in percentage on all trade.\n /// @return validatorFeePercent amount that will be given to primary validator in percentage from `protocolReward`\n /// @return max_bps maximum amount in bps \"100% == 100_000\".\n function getFeeDetails() external view returns(\n uint128 protocolReward, \n uint128 validatorFeePercent, \n uint256 max_bps\n );\n\n /// @notice get address of liquidity aggregator.\n /// @return address of `Aggregator`.\n function getAggregatorAddress() external view returns(address);\n\n /// @notice get aggregator public key.\n /// @return aggregator public key.\n function getAggregator() external view returns(bytes memory);\n \n /// @notice get address of sender whitelisting status.\n /// @param sender address of the sender.\n /// @return address of `status`.\n function getWhitelistedStatus(address sender) external view returns(bool);\n\n}\n"},"contracts/Paycrest.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\nimport \"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\";\nimport {PaycrestSettingManager} from \"./PaycrestSettingManager.sol\";\nimport {IPaycrest, IERC20} from \"./interface/IPaycrest.sol\";\ncontract Paycrest is IPaycrest, PaycrestSettingManager { \n using SafeERC20Upgradeable for IERC20;\n using ECDSAUpgradeable for bytes32;\n struct fee {\n uint256 protocolFee;\n uint256 liquidityProviderAmount;\n uint256 validatorsReward;\n }\n mapping(bytes32 => Order) private order;\n mapping(address => uint256) private _nonce;\n uint256[50] private __gap;\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize(address _usdc) external initializer { \n _isTokenSupported[_usdc] = true; \n MAX_BPS = 100_000; \n protocolFeePercent = 5000; // 5%\n validatorFeePercent = 500; // 0.5%\n __Ownable_init();\n }\n\n modifier onlyAggregator {\n require(msg.sender == _aggregatorAddress, \"OnlyAggregator\");\n _;\n }\n \n /* ##################################################################\n USER CALLS\n ################################################################## */\n /** @dev See {createOrder-IPaycrest}. */\n function createOrder(\n address _token, \n uint256 _amount, \n bytes32 _institutionCode,\n bytes32 _label,\n uint96 _rate, \n address _senderFeeRecipient,\n uint256 _senderFee,\n address _refundAddress, \n string calldata messageHash\n ) external returns(bytes32 orderId) {\n // checks that are required\n _handler(_token, _amount, _refundAddress, _senderFeeRecipient, _institutionCode);\n // first transfer token from msg.sender\n IERC20(_token).transferFrom(msg.sender, address(this), _amount);\n // increase users nonce to avoid replay attacks\n _nonce[msg.sender] ++;\n // @chibie @5ran6\n // @todo sender fee should have limit, let say the maximum amount of sender fee should be 1% of the amount\n // generate transaction id for the transaction\n orderId = keccak256(abi.encode(msg.sender, _nonce[msg.sender]));\n // update transaction\n order[orderId] = Order({\n seller: msg.sender,\n token: _token,\n senderFeeRecipient: _senderFeeRecipient,\n senderFee: _senderFee,\n rate: _rate,\n isFulfilled: false,\n refundAddress: _refundAddress,\n currentBPS: uint64(MAX_BPS),\n amount: _amount\n });\n // emit deposit event\n emit Deposit(_token, _amount, orderId, _rate, _institutionCode, _label, messageHash);\n }\n\n function _handler(address _token, uint256 _amount, address _refundAddress, address _senderFeeRecipient, bytes32 _institutionCode) internal view {\n // use require for all the custom errors\n require(_isTokenSupported[_token], \"TokenNotSupported\");\n require(_amount > 0, \"AmountIsZero\");\n require(_refundAddress != address(0), \"ThrowZeroAddress\");\n require(_senderFeeRecipient != address(0), \"ThrowZeroAddress\");\n require(supportedInstitutionsByCode[_institutionCode].name != bytes32(0), \"InvalidInstitutionCode\");\n }\n\n /* ##################################################################\n AGGREGATOR FUNCTIONS\n ################################################################## */\n /** @dev See {settle-IPaycrest}. */\n function settle(\n bytes32 _splitOrderId,\n bytes32 _orderId, \n bytes32 _label,\n address[] calldata _validators, \n address _liquidityProvider, \n uint64 _settlePercent,\n bool _isPartner\n ) external onlyAggregator() returns(bytes32, address) {\n // ensure the transaction has not been fulfilled\n require(!order[_orderId].isFulfilled, \"OrderFulfilled\");\n // load the token into memory\n address token = order[_orderId].token;\n // substract sum of amount based on the input _settlePercent\n order[_orderId].currentBPS -= _settlePercent;\n // if transaction amount is zero\n // load the fees and transfer associated protocol fees to protocol fee recipient\n ( fee memory _feeParams ) = _calculateFees(_orderId, _settlePercent, _isPartner);\n if(order[_orderId].currentBPS == 0) {\n // update the transaction to be fulfilled\n order[_orderId].isFulfilled = true;\n if (order[_orderId].senderFee > 0) {\n // transfer sender fee\n transferSenderFee(_orderId);\n }\n }\n \n if (_feeParams.protocolFee > 0) {\n // transfer protocol fee\n IERC20(token).transfer(feeRecipient, _feeParams.protocolFee);\n }\n // // transfer to liquidity provider \n IERC20(token).transfer(_liquidityProvider, _feeParams.liquidityProviderAmount);\n // // transfer to validators\n rewardValidators(_validators, token, _feeParams.validatorsReward);\n\n // emit event\n emit Settled(_splitOrderId, _orderId, _label, _liquidityProvider, _settlePercent);\n return (_orderId, token);\n }\n\n function rewardValidators(address[] calldata _validators, address token, uint256 _validatorsRewards) internal {\n uint256 length = _validators.length;\n uint256 _validatorReward = _validatorsRewards / length;\n for(uint256 i = 0; i < length; ) {\n IERC20(token).transfer(_validators[i], _validatorReward);\n // emit event\n emit RewardValidator(_validators[i], _validatorReward);\n unchecked {\n i++;\n }\n }\n }\n\n function transferSenderFee(bytes32 _orderId) internal {\n address recipient = order[_orderId].senderFeeRecipient;\n uint256 _fee = order[_orderId].senderFee;\n // transfer sender fee\n IERC20(order[_orderId].token).transfer(recipient, _fee);\n // emmit event\n emit TransferSenderFee(recipient, _fee);\n }\n\n /** @dev See {refund-IPaycrest}. */\n function refund(bytes32 _orderId, bytes32 _label) external onlyAggregator() returns(bool) {\n // ensure the transaction has not been fulfilled\n require(!order[_orderId].isFulfilled, \"OrderFulfilled\");\n // reser state values\n order[_orderId].isFulfilled = true;\n order[_orderId].currentBPS = 0;\n // transfer to seller \n IERC20(order[_orderId].token).transfer(order[_orderId].refundAddress, order[_orderId].amount);\n // emit\n emit Refunded(_orderId, _label);\n return true;\n }\n\n function _calculateFees(bytes32 _orderId, uint96 _settlePercent, bool _isPartner) private view returns(fee memory _feeParams ) {\n // get the total amount associated with the orderId\n uint256 amount = order[_orderId].amount;\n // get sender fee from amount\n amount = amount - order[_orderId].senderFee;\n // get the settled percent that is scheduled for this amount\n _feeParams.liquidityProviderAmount = (amount * _settlePercent) / MAX_BPS;\n // deduct protocol fees from the new total amount\n _feeParams.protocolFee = (_feeParams.liquidityProviderAmount * protocolFeePercent) / MAX_BPS; \n // substract total fees from the new amount after getting the scheduled amount\n _feeParams.liquidityProviderAmount = (_feeParams.liquidityProviderAmount - _feeParams.protocolFee);\n // get primary validators fees primaryValidatorsReward\n _feeParams.validatorsReward = (_feeParams.protocolFee * validatorFeePercent) / MAX_BPS;\n // get primary validators fees secondaryValidatorsReward\n // if (_isPartner) protocol fee should be 0, and the whole protocol fee should be added to liquidity provider\n if (_isPartner) {\n _feeParams.liquidityProviderAmount += _feeParams.protocolFee;\n _feeParams.protocolFee = 0;\n } else {\n _feeParams.protocolFee = (_feeParams.protocolFee - _feeParams.validatorsReward);\n }\n }\n \n /* ##################################################################\n VIEW CALLS\n ################################################################## */\n /** @dev See {getOrderInfo-IPaycrest}. */\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory) {\n return order[_orderId];\n }\n\n /** @dev See {isTokenSupported-IPaycrest}. */\n function isTokenSupported(address _token) external view returns(bool) {\n return _isTokenSupported[_token];\n }\n\n /** @dev See {getSupportedInstitutionName-IPaycrest}. */\n function getSupportedInstitutionName(bytes32 code) external view returns (InstitutionByCode memory) {\n return supportedInstitutionsByCode[code];\n }\n\n function getSupportedInstitutions(bytes32 currency) external view returns (Institution[] memory) {\n Institution[] memory institutions = supportedInstitutions[currency];\n uint256 length = institutions.length;\n Institution[] memory result = new Institution[](length);\n \n for (uint256 i = 0; i < length; ) {\n result[i] = institutions[i];\n unchecked {\n i++;\n }\n }\n \n return result;\n }\n\n /** @dev See {getFeeDetails-IPaycrest}. */\n function getFeeDetails() external view returns(\n uint128, \n uint128, \n uint256\n ) {\n return(protocolFeePercent, validatorFeePercent, MAX_BPS);\n }\n\n /** @dev See {getAggregatorAddress-IPaycrest}. */\n function getAggregatorAddress() external view returns(address) {\n return _aggregatorAddress;\n }\n\n /** @dev See {getWhitelistedStatus-IPaycrest}. */\n function getWhitelistedStatus(address sender) external view returns(bool) {\n return _isWhitelisted[sender];\n }\n\n /** @dev See {getAggregator-IPaycrest}. */\n function getAggregator() external view returns(bytes memory) {\n return _aggregator;\n }\n\n\n // DECLARE A FUNCTION TO WITHDRAW ANY TOKEN FROM CONTRACT CAN ONLY NE CALLED BY OWNER\n function withdraw(address _token, address _recipient, uint256 _amount) external onlyOwner {\n IERC20(_token).transfer(_recipient, _amount);\n }\n\n}\n"},"contracts/PaycrestSettingManager.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\n\ncontract PaycrestSettingManager is OwnableUpgradeable { \n struct Institution {\n bytes32 code; // usually not more than 8 letters\n bytes32 name; // \n }\n struct InstitutionByCode {\n bytes32 name;\n bytes32 currency;\n }\n uint256 internal MAX_BPS;\n uint128 internal protocolFeePercent; // 5%\n uint128 internal validatorFeePercent; // 0.5%\n address internal feeRecipient;\n address internal _aggregatorAddress;\n bytes internal _aggregator;\n \n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\n uint256[50] private __gap;\n\n mapping(address => bool) internal _isTokenSupported;\n mapping(address => bool) internal _isWhitelisted;\n\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\n\n event SettingManagerBool(bytes32 what, address value, bool status);\n event PaycrestFees(uint128 protocolFee, uint128 validatorFeePercent);\n event SetAggregator(bytes aggregator);\n event SetFeeRecipient(address feeRecipient);\n\n \n /* ##################################################################\n OWNER FUNCTIONS\n ################################################################## */\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\n require(value != address(0), \"Paycrest: zero address\");\n if (what == \"token\") _isTokenSupported[value] = status;\n if (what == \"whitelist\") _isWhitelisted[value] = status;\n\n emit SettingManagerBool(what, value, status);\n }\n\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \n uint256 length = institutions.length;\n for (uint i = 0; i < length; ) {\n supportedInstitutions[currency].push(institutions[i]);\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\n name: institutions[i].name, currency: currency\n });\n unchecked {\n i++;\n }\n }\n }\n\n function updateProtocolFees(uint128 _protocolFeePercent, uint128 _validatorFeePercent) external onlyOwner {\n protocolFeePercent = _protocolFeePercent;\n validatorFeePercent = _validatorFeePercent;\n emit PaycrestFees(_protocolFeePercent, _validatorFeePercent);\n }\n\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\n require(value != address(0), \"Paycrest: zero address\");\n if (what == \"fee\") feeRecipient = value;\n if (what == \"aggregator\") _aggregatorAddress = value;\n }\n\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\n _aggregator = aggregator;\n emit SetAggregator(aggregator);\n }\n\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300],"OwnableUpgradeable":[131]},"id":132,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":132,"sourceUnit":1163,"src":"127:41:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":132,"sourceUnit":301,"src":"169:42:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5,"name":"Initializable","nameLocations":["748:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":300,"src":"748:13:0"},"id":6,"nodeType":"InheritanceSpecifier","src":"748:13:0"},{"baseName":{"id":7,"name":"ContextUpgradeable","nameLocations":["763:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":1162,"src":"763:18:0"},"id":8,"nodeType":"InheritanceSpecifier","src":"763:18:0"}],"canonicalName":"OwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"213:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":131,"linearizedBaseContracts":[131,1162,300],"name":"OwnableUpgradeable","nameLocation":"726:18:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":10,"mutability":"mutable","name":"_owner","nameLocation":"804:6:0","nodeType":"VariableDeclaration","scope":131,"src":"788:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"788:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":16,"name":"OwnershipTransferred","nameLocation":"823:20:0","nodeType":"EventDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"860:13:0","nodeType":"VariableDeclaration","scope":16,"src":"844:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"844:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"891:8:0","nodeType":"VariableDeclaration","scope":16,"src":"875:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"843:57:0"},"src":"817:84:0"},{"body":{"id":25,"nodeType":"Block","src":"1055:43:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37,"src":"1065:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":23,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1065:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24,"nodeType":"ExpressionStatement","src":"1065:26:0"}]},"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"907:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":26,"implemented":true,"kind":"function","modifiers":[{"id":20,"kind":"modifierInvocation","modifierName":{"id":19,"name":"onlyInitializing","nameLocations":["1038:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"1038:16:0"},"nodeType":"ModifierInvocation","src":"1038:16:0"}],"name":"__Ownable_init","nameLocation":"1012:14:0","nodeType":"FunctionDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"1026:2:0"},"returnParameters":{"id":21,"nodeType":"ParameterList","parameters":[],"src":"1055:0:0"},"scope":131,"src":"1003:95:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":36,"nodeType":"Block","src":"1166:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":32,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"1195:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":33,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1195:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"1176:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":34,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1176:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35,"nodeType":"ExpressionStatement","src":"1176:32:0"}]},"id":37,"implemented":true,"kind":"function","modifiers":[{"id":29,"kind":"modifierInvocation","modifierName":{"id":28,"name":"onlyInitializing","nameLocations":["1149:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"1149:16:0"},"nodeType":"ModifierInvocation","src":"1149:16:0"}],"name":"__Ownable_init_unchained","nameLocation":"1113:24:0","nodeType":"FunctionDefinition","parameters":{"id":27,"nodeType":"ParameterList","parameters":[],"src":"1137:2:0"},"returnParameters":{"id":30,"nodeType":"ParameterList","parameters":[],"src":"1166:0:0"},"scope":131,"src":"1104:111:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":44,"nodeType":"Block","src":"1324:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":40,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"1334:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":41,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1334:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42,"nodeType":"ExpressionStatement","src":"1334:13:0"},{"id":43,"nodeType":"PlaceholderStatement","src":"1357:1:0"}]},"documentation":{"id":38,"nodeType":"StructuredDocumentation","src":"1221:77:0","text":" @dev Throws if called by any account other than the owner."},"id":45,"name":"onlyOwner","nameLocation":"1312:9:0","nodeType":"ModifierDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"1321:2:0"},"src":"1303:62:0","virtual":false,"visibility":"internal"},{"body":{"id":53,"nodeType":"Block","src":"1496:30:0","statements":[{"expression":{"id":51,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"1513:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":50,"id":52,"nodeType":"Return","src":"1506:13:0"}]},"documentation":{"id":46,"nodeType":"StructuredDocumentation","src":"1371:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":54,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1450:5:0","nodeType":"FunctionDefinition","parameters":{"id":47,"nodeType":"ParameterList","parameters":[],"src":"1455:2:0"},"returnParameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54,"src":"1487:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1486:9:0"},"scope":131,"src":"1441:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":67,"nodeType":"Block","src":"1644:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":63,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1662:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":60,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1662:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":61,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"1673:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1662:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1687:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":58,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1654:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1654:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1654:68:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1532:62:0","text":" @dev Throws if the sender is not the owner."},"id":68,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1608:11:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1619:2:0"},"returnParameters":{"id":57,"nodeType":"ParameterList","parameters":[],"src":"1644:0:0"},"scope":131,"src":"1599:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":81,"nodeType":"Block","src":"2118:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":77,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2155:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2147:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"2147:7:0","typeDescriptions":{}}},"id":78,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2147:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"2128:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2128:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80,"nodeType":"ExpressionStatement","src":"2128:30:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1735:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":82,"implemented":true,"kind":"function","modifiers":[{"id":72,"kind":"modifierInvocation","modifierName":{"id":71,"name":"onlyOwner","nameLocations":["2108:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2108:9:0"},"nodeType":"ModifierInvocation","src":"2108:9:0"}],"name":"renounceOwnership","nameLocation":"2073:17:0","nodeType":"FunctionDefinition","parameters":{"id":70,"nodeType":"ParameterList","parameters":[],"src":"2090:2:0"},"returnParameters":{"id":73,"nodeType":"ParameterList","parameters":[],"src":"2118:0:0"},"scope":131,"src":"2064:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":104,"nodeType":"Block","src":"2384:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":96,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":91,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"2402:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":94,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2422:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":93,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2414:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"2414:7:0","typeDescriptions":{}}},"id":95,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2414:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2402:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":97,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2426:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":90,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2394:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":98,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2394:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":99,"nodeType":"ExpressionStatement","src":"2394:73:0"},{"expression":{"arguments":[{"id":101,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"2496:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":100,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"2477:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2477:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":103,"nodeType":"ExpressionStatement","src":"2477:28:0"}]},"documentation":{"id":83,"nodeType":"StructuredDocumentation","src":"2171:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":105,"implemented":true,"kind":"function","modifiers":[{"id":88,"kind":"modifierInvocation","modifierName":{"id":87,"name":"onlyOwner","nameLocations":["2374:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2374:9:0"},"nodeType":"ModifierInvocation","src":"2374:9:0"}],"name":"transferOwnership","nameLocation":"2323:17:0","nodeType":"FunctionDefinition","parameters":{"id":86,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85,"mutability":"mutable","name":"newOwner","nameLocation":"2349:8:0","nodeType":"VariableDeclaration","scope":105,"src":"2341:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2340:18:0"},"returnParameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"2384:0:0"},"scope":131,"src":"2314:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":124,"nodeType":"Block","src":"2729:124:0","statements":[{"assignments":[112],"declarations":[{"constant":false,"id":112,"mutability":"mutable","name":"oldOwner","nameLocation":"2747:8:0","nodeType":"VariableDeclaration","scope":124,"src":"2739:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":114,"initialValue":{"id":113,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"2758:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2739:25:0"},{"expression":{"id":117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":115,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"2774:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":116,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2783:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2774:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":118,"nodeType":"ExpressionStatement","src":"2774:17:0"},{"eventCall":{"arguments":[{"id":120,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112,"src":"2827:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108,"src":"2837:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":119,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"2806:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2806:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":123,"nodeType":"EmitStatement","src":"2801:45:0"}]},"documentation":{"id":106,"nodeType":"StructuredDocumentation","src":"2518:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":125,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2675:18:0","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":108,"mutability":"mutable","name":"newOwner","nameLocation":"2702:8:0","nodeType":"VariableDeclaration","scope":125,"src":"2694:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"2694:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2693:18:0"},"returnParameters":{"id":110,"nodeType":"ParameterList","parameters":[],"src":"2729:0:0"},"scope":131,"src":"2666:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"2859:254:0","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":130,"mutability":"mutable","name":"__gap","nameLocation":"3138:5:0","nodeType":"VariableDeclaration","scope":131,"src":"3118:25:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":127,"name":"uint256","nodeType":"ElementaryTypeName","src":"3118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":129,"length":{"hexValue":"3439","id":128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3126:2:0","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"3118:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":132,"src":"708:2438:0","usedErrors":[]}],"src":"102:3045:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"Initializable":[300]},"id":301,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":133,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:1"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":134,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":301,"sourceUnit":1121,"src":"138:44:1","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":135,"nodeType":"StructuredDocumentation","src":"184:2209:1","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":300,"linearizedBaseContracts":[300],"name":"Initializable","nameLocation":"2412:13:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":136,"nodeType":"StructuredDocumentation","src":"2432:109:1","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":138,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:1","nodeType":"VariableDeclaration","scope":300,"src":"2546:26:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":137,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"2579:91:1","text":" @dev Indicates that the contract is in the process of being initialized."},"id":141,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:1","nodeType":"VariableDeclaration","scope":300,"src":"2675:26:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":140,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":142,"nodeType":"StructuredDocumentation","src":"2708:90:1","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":146,"name":"Initialized","nameLocation":"2809:11:1","nodeType":"EventDefinition","parameters":{"id":145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":144,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:1","nodeType":"VariableDeclaration","scope":146,"src":"2821:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":143,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:1"},"src":"2803:33:1"},{"body":{"id":201,"nodeType":"Block","src":"3269:483:1","statements":[{"assignments":[150],"declarations":[{"constant":false,"id":150,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:1","nodeType":"VariableDeclaration","scope":201,"src":"3279:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":149,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":153,"initialValue":{"id":152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:1","subExpression":{"id":151,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3302:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":155,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3347:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":156,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3365:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:1","subExpression":{"arguments":[{"arguments":[{"id":165,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3426:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$300","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$300","typeString":"contract Initializable"}],"id":164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:1","typeDescriptions":{}}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":161,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"3388:18:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1120_$","typeString":"type(library AddressUpgradeable)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:1","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":808,"src":"3388:29:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":169,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3436:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":173,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":154,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3325:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":177,"nodeType":"ExpressionStatement","src":"3325:201:1"},{"expression":{"id":180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":178,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3536:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":181,"nodeType":"ExpressionStatement","src":"3536:16:1"},{"condition":{"id":182,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3566:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":188,"nodeType":"IfStatement","src":"3562:65:1","trueBody":{"id":187,"nodeType":"Block","src":"3582:45:1","statements":[{"expression":{"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":183,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3596:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":186,"nodeType":"ExpressionStatement","src":"3596:20:1"}]}},{"id":189,"nodeType":"PlaceholderStatement","src":"3636:1:1"},{"condition":{"id":190,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3651:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":200,"nodeType":"IfStatement","src":"3647:99:1","trueBody":{"id":199,"nodeType":"Block","src":"3667:79:1","statements":[{"expression":{"id":193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":191,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3681:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":194,"nodeType":"ExpressionStatement","src":"3681:21:1"},{"eventCall":{"arguments":[{"hexValue":"31","id":196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":195,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"3721:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":198,"nodeType":"EmitStatement","src":"3716:19:1"}]}}]},"documentation":{"id":147,"nodeType":"StructuredDocumentation","src":"2842:399:1","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":202,"name":"initializer","nameLocation":"3255:11:1","nodeType":"ModifierDefinition","parameters":{"id":148,"nodeType":"ParameterList","parameters":[],"src":"3266:2:1"},"src":"3246:506:1","virtual":false,"visibility":"internal"},{"body":{"id":234,"nodeType":"Block","src":"4863:255:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:1","subExpression":{"id":208,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"4882:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":210,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4899:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":211,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"4914:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":207,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4873:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":216,"nodeType":"ExpressionStatement","src":"4873:99:1"},{"expression":{"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":217,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4982:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":218,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"4997:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":220,"nodeType":"ExpressionStatement","src":"4982:22:1"},{"expression":{"id":223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":221,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5014:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":224,"nodeType":"ExpressionStatement","src":"5014:20:1"},{"id":225,"nodeType":"PlaceholderStatement","src":"5044:1:1"},{"expression":{"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":226,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5055:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":229,"nodeType":"ExpressionStatement","src":"5055:21:1"},{"eventCall":{"arguments":[{"id":231,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":205,"src":"5103:7:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":230,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"5091:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":233,"nodeType":"EmitStatement","src":"5086:25:1"}]},"documentation":{"id":203,"nodeType":"StructuredDocumentation","src":"3758:1062:1","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":235,"name":"reinitializer","nameLocation":"4834:13:1","nodeType":"ModifierDefinition","parameters":{"id":206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":205,"mutability":"mutable","name":"version","nameLocation":"4854:7:1","nodeType":"VariableDeclaration","scope":235,"src":"4848:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":204,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:1"},"src":"4825:293:1","virtual":false,"visibility":"internal"},{"body":{"id":244,"nodeType":"Block","src":"5356:97:1","statements":[{"expression":{"arguments":[{"id":239,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"5374:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":238,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5366:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":242,"nodeType":"ExpressionStatement","src":"5366:69:1"},{"id":243,"nodeType":"PlaceholderStatement","src":"5445:1:1"}]},"documentation":{"id":236,"nodeType":"StructuredDocumentation","src":"5124:199:1","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":245,"name":"onlyInitializing","nameLocation":"5337:16:1","nodeType":"ModifierDefinition","parameters":{"id":237,"nodeType":"ParameterList","parameters":[],"src":"5353:2:1"},"src":"5328:125:1","virtual":false,"visibility":"internal"},{"body":{"id":280,"nodeType":"Block","src":"5988:231:1","statements":[{"expression":{"arguments":[{"id":251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:1","subExpression":{"id":250,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6007:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":249,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5998:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":254,"nodeType":"ExpressionStatement","src":"5998:66:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":255,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6078:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":257,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":256,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6094:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:1","memberName":"max","nodeType":"MemberAccess","src":"6094:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":279,"nodeType":"IfStatement","src":"6074:139:1","trueBody":{"id":278,"nodeType":"Block","src":"6111:102:1","statements":[{"expression":{"id":268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":262,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6125:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":264,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":263,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6140:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:1","memberName":"max","nodeType":"MemberAccess","src":"6140:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":269,"nodeType":"ExpressionStatement","src":"6125:30:1"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":272,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":271,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6186:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:1","memberName":"max","nodeType":"MemberAccess","src":"6186:15:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":270,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"6174:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":277,"nodeType":"EmitStatement","src":"6169:33:1"}]}}]},"documentation":{"id":246,"nodeType":"StructuredDocumentation","src":"5459:475:1","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":281,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:1","nodeType":"FunctionDefinition","parameters":{"id":247,"nodeType":"ParameterList","parameters":[],"src":"5968:2:1"},"returnParameters":{"id":248,"nodeType":"ParameterList","parameters":[],"src":"5988:0:1"},"scope":300,"src":"5939:280:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":289,"nodeType":"Block","src":"6393:36:1","statements":[{"expression":{"id":287,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"6410:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":286,"id":288,"nodeType":"Return","src":"6403:19:1"}]},"documentation":{"id":282,"nodeType":"StructuredDocumentation","src":"6225:99:1","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":290,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:1","nodeType":"FunctionDefinition","parameters":{"id":283,"nodeType":"ParameterList","parameters":[],"src":"6360:2:1"},"returnParameters":{"id":286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":290,"src":"6386:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":284,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:1"},"scope":300,"src":"6329:100:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":298,"nodeType":"Block","src":"6601:37:1","statements":[{"expression":{"id":296,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6618:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":295,"id":297,"nodeType":"Return","src":"6611:20:1"}]},"documentation":{"id":291,"nodeType":"StructuredDocumentation","src":"6435:105:1","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":299,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:1","nodeType":"FunctionDefinition","parameters":{"id":292,"nodeType":"ParameterList","parameters":[],"src":"6569:2:1"},"returnParameters":{"id":295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":299,"src":"6595:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":293,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:1"},"scope":300,"src":"6545:93:1","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":301,"src":"2394:4246:1","usedErrors":[]}],"src":"113:6528:1"},"id":1},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","exportedSymbols":{"IERC20Upgradeable":[378]},"id":379,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":302,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"131:70:2","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":378,"linearizedBaseContracts":[378],"name":"IERC20Upgradeable","nameLocation":"212:17:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":304,"nodeType":"StructuredDocumentation","src":"236:158:2","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":312,"name":"Transfer","nameLocation":"405:8:2","nodeType":"EventDefinition","parameters":{"id":311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":306,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"430:4:2","nodeType":"VariableDeclaration","scope":312,"src":"414:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":305,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":308,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"452:2:2","nodeType":"VariableDeclaration","scope":312,"src":"436:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":307,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":310,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"464:5:2","nodeType":"VariableDeclaration","scope":312,"src":"456:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"413:57:2"},"src":"399:72:2"},{"anonymous":false,"documentation":{"id":313,"nodeType":"StructuredDocumentation","src":"477:148:2","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":321,"name":"Approval","nameLocation":"636:8:2","nodeType":"EventDefinition","parameters":{"id":320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":315,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"661:5:2","nodeType":"VariableDeclaration","scope":321,"src":"645:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":317,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"684:7:2","nodeType":"VariableDeclaration","scope":321,"src":"668:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"668:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":319,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"701:5:2","nodeType":"VariableDeclaration","scope":321,"src":"693:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":318,"name":"uint256","nodeType":"ElementaryTypeName","src":"693:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"644:63:2"},"src":"630:78:2"},{"documentation":{"id":322,"nodeType":"StructuredDocumentation","src":"714:66:2","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":327,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"794:11:2","nodeType":"FunctionDefinition","parameters":{"id":323,"nodeType":"ParameterList","parameters":[],"src":"805:2:2"},"returnParameters":{"id":326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":327,"src":"831:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":324,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"830:9:2"},"scope":378,"src":"785:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"846:72:2","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":335,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"932:9:2","nodeType":"FunctionDefinition","parameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"account","nameLocation":"950:7:2","nodeType":"VariableDeclaration","scope":335,"src":"942:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":329,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"941:17:2"},"returnParameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":335,"src":"982:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":332,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"981:9:2"},"scope":378,"src":"923:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":336,"nodeType":"StructuredDocumentation","src":"997:202:2","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":345,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:2","nodeType":"FunctionDefinition","parameters":{"id":341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"to","nameLocation":"1230:2:2","nodeType":"VariableDeclaration","scope":345,"src":"1222:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":337,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":340,"mutability":"mutable","name":"amount","nameLocation":"1242:6:2","nodeType":"VariableDeclaration","scope":345,"src":"1234:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":339,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:28:2"},"returnParameters":{"id":344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":345,"src":"1268:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":342,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:2"},"scope":378,"src":"1204:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":346,"nodeType":"StructuredDocumentation","src":"1280:264:2","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":355,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:2","nodeType":"FunctionDefinition","parameters":{"id":351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"owner","nameLocation":"1576:5:2","nodeType":"VariableDeclaration","scope":355,"src":"1568:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":347,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":350,"mutability":"mutable","name":"spender","nameLocation":"1591:7:2","nodeType":"VariableDeclaration","scope":355,"src":"1583:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":349,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:2"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":355,"src":"1623:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":352,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:2"},"scope":378,"src":"1549:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"1638:642:2","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":365,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2294:7:2","nodeType":"FunctionDefinition","parameters":{"id":361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"spender","nameLocation":"2310:7:2","nodeType":"VariableDeclaration","scope":365,"src":"2302:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":360,"mutability":"mutable","name":"amount","nameLocation":"2327:6:2","nodeType":"VariableDeclaration","scope":365,"src":"2319:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint256","nodeType":"ElementaryTypeName","src":"2319:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:33:2"},"returnParameters":{"id":364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":365,"src":"2353:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":362,"name":"bool","nodeType":"ElementaryTypeName","src":"2353:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2352:6:2"},"scope":378,"src":"2285:74:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":366,"nodeType":"StructuredDocumentation","src":"2365:287:2","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":377,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2666:12:2","nodeType":"FunctionDefinition","parameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":368,"mutability":"mutable","name":"from","nameLocation":"2687:4:2","nodeType":"VariableDeclaration","scope":377,"src":"2679:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":367,"name":"address","nodeType":"ElementaryTypeName","src":"2679:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":370,"mutability":"mutable","name":"to","nameLocation":"2701:2:2","nodeType":"VariableDeclaration","scope":377,"src":"2693:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":369,"name":"address","nodeType":"ElementaryTypeName","src":"2693:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"amount","nameLocation":"2713:6:2","nodeType":"VariableDeclaration","scope":377,"src":"2705:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":371,"name":"uint256","nodeType":"ElementaryTypeName","src":"2705:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2678:42:2"},"returnParameters":{"id":376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":377,"src":"2739:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":374,"name":"bool","nodeType":"ElementaryTypeName","src":"2739:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2738:6:2"},"scope":378,"src":"2657:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":379,"src":"202:2545:2","usedErrors":[]}],"src":"106:2642:2"},"id":2},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","exportedSymbols":{"IERC20PermitUpgradeable":[414]},"id":415,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":380,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"123:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20PermitUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"148:480:3","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":414,"linearizedBaseContracts":[414],"name":"IERC20PermitUpgradeable","nameLocation":"639:23:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"669:792:3","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":399,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1475:6:3","nodeType":"FunctionDefinition","parameters":{"id":397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"owner","nameLocation":"1499:5:3","nodeType":"VariableDeclaration","scope":399,"src":"1491:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":383,"name":"address","nodeType":"ElementaryTypeName","src":"1491:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":386,"mutability":"mutable","name":"spender","nameLocation":"1522:7:3","nodeType":"VariableDeclaration","scope":399,"src":"1514:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"1514:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":388,"mutability":"mutable","name":"value","nameLocation":"1547:5:3","nodeType":"VariableDeclaration","scope":399,"src":"1539:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":387,"name":"uint256","nodeType":"ElementaryTypeName","src":"1539:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"deadline","nameLocation":"1570:8:3","nodeType":"VariableDeclaration","scope":399,"src":"1562:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"1562:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":392,"mutability":"mutable","name":"v","nameLocation":"1594:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1588:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":391,"name":"uint8","nodeType":"ElementaryTypeName","src":"1588:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":394,"mutability":"mutable","name":"r","nameLocation":"1613:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1605:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1605:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":396,"mutability":"mutable","name":"s","nameLocation":"1632:1:3","nodeType":"VariableDeclaration","scope":399,"src":"1624:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1624:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1481:158:3"},"returnParameters":{"id":398,"nodeType":"ParameterList","parameters":[],"src":"1648:0:3"},"scope":414,"src":"1466:183:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":400,"nodeType":"StructuredDocumentation","src":"1655:294:3","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":407,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"1963:6:3","nodeType":"FunctionDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":402,"mutability":"mutable","name":"owner","nameLocation":"1978:5:3","nodeType":"VariableDeclaration","scope":407,"src":"1970:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":401,"name":"address","nodeType":"ElementaryTypeName","src":"1970:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1969:15:3"},"returnParameters":{"id":406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":407,"src":"2008:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":404,"name":"uint256","nodeType":"ElementaryTypeName","src":"2008:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2007:9:3"},"scope":414,"src":"1954:63:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":408,"nodeType":"StructuredDocumentation","src":"2023:128:3","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":413,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"2218:16:3","nodeType":"FunctionDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[],"src":"2234:2:3"},"returnParameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":413,"src":"2260:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":410,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2260:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2259:9:3"},"scope":414,"src":"2209:60:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":415,"src":"629:1642:3","usedErrors":[]}],"src":"123:2149:3"},"id":3},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"IERC20PermitUpgradeable":[414],"IERC20Upgradeable":[378],"SafeERC20Upgradeable":[790]},"id":791,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":416,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","file":"../IERC20Upgradeable.sol","id":417,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":379,"src":"140:34:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","file":"../extensions/IERC20PermitUpgradeable.sol","id":418,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":415,"src":"175:51:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../../utils/AddressUpgradeable.sol","id":419,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":791,"sourceUnit":1121,"src":"227:47:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20Upgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":420,"nodeType":"StructuredDocumentation","src":"276:457:4","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":790,"linearizedBaseContracts":[790],"name":"SafeERC20Upgradeable","nameLocation":"742:20:4","nodeType":"ContractDefinition","nodes":[{"global":false,"id":423,"libraryName":{"id":421,"name":"AddressUpgradeable","nameLocations":["775:18:4"],"nodeType":"IdentifierPath","referencedDeclaration":1120,"src":"775:18:4"},"nodeType":"UsingForDirective","src":"769:37:4","typeName":{"id":422,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":446,"nodeType":"Block","src":"1079:103:4","statements":[{"expression":{"arguments":[{"id":435,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"1109:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":438,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"1139:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1145:8:4","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":345,"src":"1139:14:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1154:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1139:23:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":441,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"1164:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"1168:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":436,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1116:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1120:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1116:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":434,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"1089:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1089:86:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":445,"nodeType":"ExpressionStatement","src":"1089:86:4"}]},"documentation":{"id":424,"nodeType":"StructuredDocumentation","src":"812:179:4","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":447,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1005:12:4","nodeType":"FunctionDefinition","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":427,"mutability":"mutable","name":"token","nameLocation":"1036:5:4","nodeType":"VariableDeclaration","scope":447,"src":"1018:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":426,"nodeType":"UserDefinedTypeName","pathNode":{"id":425,"name":"IERC20Upgradeable","nameLocations":["1018:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1018:17:4"},"referencedDeclaration":378,"src":"1018:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":429,"mutability":"mutable","name":"to","nameLocation":"1051:2:4","nodeType":"VariableDeclaration","scope":447,"src":"1043:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":428,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"value","nameLocation":"1063:5:4","nodeType":"VariableDeclaration","scope":447,"src":"1055:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"1055:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1017:52:4"},"returnParameters":{"id":433,"nodeType":"ParameterList","parameters":[],"src":"1079:0:4"},"scope":790,"src":"996:186:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":473,"nodeType":"Block","src":"1522:113:4","statements":[{"expression":{"arguments":[{"id":461,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"1552:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":464,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"1582:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1588:12:4","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":377,"src":"1582:18:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1601:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1582:27:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":467,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"1611:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":468,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":455,"src":"1617:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":457,"src":"1621:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":462,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1559:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1563:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1559:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1559:68:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":460,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"1532:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1532:96:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":472,"nodeType":"ExpressionStatement","src":"1532:96:4"}]},"documentation":{"id":448,"nodeType":"StructuredDocumentation","src":"1188:228:4","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":474,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1430:16:4","nodeType":"FunctionDefinition","parameters":{"id":458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":451,"mutability":"mutable","name":"token","nameLocation":"1465:5:4","nodeType":"VariableDeclaration","scope":474,"src":"1447:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":450,"nodeType":"UserDefinedTypeName","pathNode":{"id":449,"name":"IERC20Upgradeable","nameLocations":["1447:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1447:17:4"},"referencedDeclaration":378,"src":"1447:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":453,"mutability":"mutable","name":"from","nameLocation":"1480:4:4","nodeType":"VariableDeclaration","scope":474,"src":"1472:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":452,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":455,"mutability":"mutable","name":"to","nameLocation":"1494:2:4","nodeType":"VariableDeclaration","scope":474,"src":"1486:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":454,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":457,"mutability":"mutable","name":"value","nameLocation":"1506:5:4","nodeType":"VariableDeclaration","scope":474,"src":"1498:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1446:66:4"},"returnParameters":{"id":459,"nodeType":"ParameterList","parameters":[],"src":"1522:0:4"},"scope":790,"src":"1421:214:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":517,"nodeType":"Block","src":"1982:497:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"2231:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2240:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2231:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2230:12:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":494,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2271:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2263:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:4","typeDescriptions":{}}},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":496,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2278:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":490,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2247:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2253:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"2247:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2247:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2290:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2247:44:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2246:46:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2230:62:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2306:56:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":485,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2209:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:163:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":504,"nodeType":"ExpressionStatement","src":"2209:163:4"},{"expression":{"arguments":[{"id":506,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2402:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":509,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"2432:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2438:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"2432:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2446:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2432:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":512,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"2456:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"2465:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":507,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2409:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2413:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2409:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:62:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":505,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"2382:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2382:90:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":516,"nodeType":"ExpressionStatement","src":"2382:90:4"}]},"documentation":{"id":475,"nodeType":"StructuredDocumentation","src":"1641:249:4","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":518,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1904:11:4","nodeType":"FunctionDefinition","parameters":{"id":483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"token","nameLocation":"1934:5:4","nodeType":"VariableDeclaration","scope":518,"src":"1916:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":477,"nodeType":"UserDefinedTypeName","pathNode":{"id":476,"name":"IERC20Upgradeable","nameLocations":["1916:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"1916:17:4"},"referencedDeclaration":378,"src":"1916:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"spender","nameLocation":"1949:7:4","nodeType":"VariableDeclaration","scope":518,"src":"1941:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":479,"name":"address","nodeType":"ElementaryTypeName","src":"1941:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"value","nameLocation":"1966:5:4","nodeType":"VariableDeclaration","scope":518,"src":"1958:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"1958:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1915:57:4"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"1982:0:4"},"scope":790,"src":"1895:584:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":554,"nodeType":"Block","src":"2767:194:4","statements":[{"assignments":[530],"declarations":[{"constant":false,"id":530,"mutability":"mutable","name":"oldAllowance","nameLocation":"2785:12:4","nodeType":"VariableDeclaration","scope":554,"src":"2777:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":529,"name":"uint256","nodeType":"ElementaryTypeName","src":"2777:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":539,"initialValue":{"arguments":[{"arguments":[{"id":535,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2824:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2816:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"2816:7:4","typeDescriptions":{}}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2816:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":537,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2831:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":531,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2800:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2806:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"2800:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2800:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2777:62:4"},{"expression":{"arguments":[{"id":541,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2869:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":544,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2899:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2905:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"2899:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2913:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2899:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":547,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2923:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":548,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"2932:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"2947:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":542,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2876:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2880:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2876:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2876:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":540,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"2849:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2849:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":553,"nodeType":"ExpressionStatement","src":"2849:105:4"}]},"documentation":{"id":519,"nodeType":"StructuredDocumentation","src":"2485:180:4","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":555,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2679:21:4","nodeType":"FunctionDefinition","parameters":{"id":527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"token","nameLocation":"2719:5:4","nodeType":"VariableDeclaration","scope":555,"src":"2701:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":521,"nodeType":"UserDefinedTypeName","pathNode":{"id":520,"name":"IERC20Upgradeable","nameLocations":["2701:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"2701:17:4"},"referencedDeclaration":378,"src":"2701:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":524,"mutability":"mutable","name":"spender","nameLocation":"2734:7:4","nodeType":"VariableDeclaration","scope":555,"src":"2726:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":523,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":526,"mutability":"mutable","name":"value","nameLocation":"2751:5:4","nodeType":"VariableDeclaration","scope":555,"src":"2743:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":525,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2700:57:4"},"returnParameters":{"id":528,"nodeType":"ParameterList","parameters":[],"src":"2767:0:4"},"scope":790,"src":"2670:291:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":599,"nodeType":"Block","src":"3249:321:4","statements":[{"id":598,"nodeType":"UncheckedBlock","src":"3259:305:4","statements":[{"assignments":[567],"declarations":[{"constant":false,"id":567,"mutability":"mutable","name":"oldAllowance","nameLocation":"3291:12:4","nodeType":"VariableDeclaration","scope":598,"src":"3283:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":566,"name":"uint256","nodeType":"ElementaryTypeName","src":"3283:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":576,"initialValue":{"arguments":[{"arguments":[{"id":572,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3330:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$790","typeString":"library SafeERC20Upgradeable"}],"id":571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3322:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"3322:7:4","typeDescriptions":{}}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3322:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":574,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"3337:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":568,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3306:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3312:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":355,"src":"3306:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3306:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3283:62:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":578,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"3367:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"3383:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3367:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3390:43:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":577,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3359:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":583,"nodeType":"ExpressionStatement","src":"3359:75:4"},{"expression":{"arguments":[{"id":585,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3468:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":588,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3498:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3504:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"3498:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3512:8:4","memberName":"selector","nodeType":"MemberAccess","src":"3498:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":591,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"3522:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":592,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"3531:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":593,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"3546:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3531:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":586,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3475:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3479:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3475:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3475:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":584,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"3448:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3448:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":597,"nodeType":"ExpressionStatement","src":"3448:105:4"}]}]},"documentation":{"id":556,"nodeType":"StructuredDocumentation","src":"2967:180:4","text":" @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":600,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"3161:21:4","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":559,"mutability":"mutable","name":"token","nameLocation":"3201:5:4","nodeType":"VariableDeclaration","scope":600,"src":"3183:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":558,"nodeType":"UserDefinedTypeName","pathNode":{"id":557,"name":"IERC20Upgradeable","nameLocations":["3183:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3183:17:4"},"referencedDeclaration":378,"src":"3183:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":561,"mutability":"mutable","name":"spender","nameLocation":"3216:7:4","nodeType":"VariableDeclaration","scope":600,"src":"3208:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":560,"name":"address","nodeType":"ElementaryTypeName","src":"3208:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":563,"mutability":"mutable","name":"value","nameLocation":"3233:5:4","nodeType":"VariableDeclaration","scope":600,"src":"3225:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":562,"name":"uint256","nodeType":"ElementaryTypeName","src":"3225:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3182:57:4"},"returnParameters":{"id":565,"nodeType":"ParameterList","parameters":[],"src":"3249:0:4"},"scope":790,"src":"3152:418:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":646,"nodeType":"Block","src":"3977:333:4","statements":[{"assignments":[612],"declarations":[{"constant":false,"id":612,"mutability":"mutable","name":"approvalCall","nameLocation":"4000:12:4","nodeType":"VariableDeclaration","scope":646,"src":"3987:25:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":611,"name":"bytes","nodeType":"ElementaryTypeName","src":"3987:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":621,"initialValue":{"arguments":[{"expression":{"expression":{"id":615,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4038:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4044:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"4038:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4052:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4038:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":618,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"4062:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"4071:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":613,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4015:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4019:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4015:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4015:62:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3987:90:4"},{"condition":{"id":626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4092:45:4","subExpression":{"arguments":[{"id":623,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4117:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"id":624,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"4124:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":622,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"4093:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20Upgradeable,bytes memory) returns (bool)"}},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4093:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":645,"nodeType":"IfStatement","src":"4088:216:4","trueBody":{"id":644,"nodeType":"Block","src":"4139:165:4","statements":[{"expression":{"arguments":[{"id":628,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4173:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":631,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4203:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"id":632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4209:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":365,"src":"4203:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4217:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4203:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":634,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"4227:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":629,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4180:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4184:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4180:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4180:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":627,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"4153:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4153:86:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":638,"nodeType":"ExpressionStatement","src":"4153:86:4"},{"expression":{"arguments":[{"id":640,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"4273:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},{"id":641,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"4280:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":639,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"4253:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$378_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4253:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":643,"nodeType":"ExpressionStatement","src":"4253:40:4"}]}}]},"documentation":{"id":601,"nodeType":"StructuredDocumentation","src":"3576:308:4","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT."},"id":647,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"3898:12:4","nodeType":"FunctionDefinition","parameters":{"id":609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"token","nameLocation":"3929:5:4","nodeType":"VariableDeclaration","scope":647,"src":"3911:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":603,"nodeType":"UserDefinedTypeName","pathNode":{"id":602,"name":"IERC20Upgradeable","nameLocations":["3911:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"3911:17:4"},"referencedDeclaration":378,"src":"3911:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":606,"mutability":"mutable","name":"spender","nameLocation":"3944:7:4","nodeType":"VariableDeclaration","scope":647,"src":"3936:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":605,"name":"address","nodeType":"ElementaryTypeName","src":"3936:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":608,"mutability":"mutable","name":"value","nameLocation":"3961:5:4","nodeType":"VariableDeclaration","scope":647,"src":"3953:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":607,"name":"uint256","nodeType":"ElementaryTypeName","src":"3953:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3910:57:4"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[],"src":"3977:0:4"},"scope":790,"src":"3889:421:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":703,"nodeType":"Block","src":"4688:257:4","statements":[{"assignments":[669],"declarations":[{"constant":false,"id":669,"mutability":"mutable","name":"nonceBefore","nameLocation":"4706:11:4","nodeType":"VariableDeclaration","scope":703,"src":"4698:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":668,"name":"uint256","nodeType":"ElementaryTypeName","src":"4698:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":674,"initialValue":{"arguments":[{"id":672,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4733:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":670,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4720:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4726:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":407,"src":"4720:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4720:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4698:41:4"},{"expression":{"arguments":[{"id":678,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4762:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":679,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"4769:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"4778:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":681,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":659,"src":"4785:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":682,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":661,"src":"4795:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":683,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"4798:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":684,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"4801:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":675,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4749:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4755:6:4","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":399,"src":"4749:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:54:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":686,"nodeType":"ExpressionStatement","src":"4749:54:4"},{"assignments":[688],"declarations":[{"constant":false,"id":688,"mutability":"mutable","name":"nonceAfter","nameLocation":"4821:10:4","nodeType":"VariableDeclaration","scope":703,"src":"4813:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"4813:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":693,"initialValue":{"arguments":[{"id":691,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"4847:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":689,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"4834:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4840:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":407,"src":"4834:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4813:40:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":695,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"4871:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":696,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"4885:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4899:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4885:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4871:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4902:35:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":694,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4863:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4863:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":702,"nodeType":"ExpressionStatement","src":"4863:75:4"}]},"documentation":{"id":648,"nodeType":"StructuredDocumentation","src":"4316:141:4","text":" @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n Revert on invalid signature."},"id":704,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"4471:10:4","nodeType":"FunctionDefinition","parameters":{"id":666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"token","nameLocation":"4515:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4491:29:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"},"typeName":{"id":650,"nodeType":"UserDefinedTypeName","pathNode":{"id":649,"name":"IERC20PermitUpgradeable","nameLocations":["4491:23:4"],"nodeType":"IdentifierPath","referencedDeclaration":414,"src":"4491:23:4"},"referencedDeclaration":414,"src":"4491:23:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$414","typeString":"contract IERC20PermitUpgradeable"}},"visibility":"internal"},{"constant":false,"id":653,"mutability":"mutable","name":"owner","nameLocation":"4538:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4530:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":652,"name":"address","nodeType":"ElementaryTypeName","src":"4530:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":655,"mutability":"mutable","name":"spender","nameLocation":"4561:7:4","nodeType":"VariableDeclaration","scope":704,"src":"4553:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":654,"name":"address","nodeType":"ElementaryTypeName","src":"4553:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":657,"mutability":"mutable","name":"value","nameLocation":"4586:5:4","nodeType":"VariableDeclaration","scope":704,"src":"4578:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":656,"name":"uint256","nodeType":"ElementaryTypeName","src":"4578:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":659,"mutability":"mutable","name":"deadline","nameLocation":"4609:8:4","nodeType":"VariableDeclaration","scope":704,"src":"4601:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":658,"name":"uint256","nodeType":"ElementaryTypeName","src":"4601:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":661,"mutability":"mutable","name":"v","nameLocation":"4633:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4627:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":660,"name":"uint8","nodeType":"ElementaryTypeName","src":"4627:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":663,"mutability":"mutable","name":"r","nameLocation":"4652:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4644:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4644:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":665,"mutability":"mutable","name":"s","nameLocation":"4671:1:4","nodeType":"VariableDeclaration","scope":704,"src":"4663:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4663:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4481:197:4"},"returnParameters":{"id":667,"nodeType":"ParameterList","parameters":[],"src":"4688:0:4"},"scope":790,"src":"4462:483:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":740,"nodeType":"Block","src":"5409:572:4","statements":[{"assignments":[714],"declarations":[{"constant":false,"id":714,"mutability":"mutable","name":"returndata","nameLocation":"5771:10:4","nodeType":"VariableDeclaration","scope":740,"src":"5758:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":713,"name":"bytes","nodeType":"ElementaryTypeName","src":"5758:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":723,"initialValue":{"arguments":[{"id":720,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":710,"src":"5812:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5818:34:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":717,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"5792:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5784:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":715,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:4","typeDescriptions":{}}},"id":718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5799:12:4","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":880,"src":"5784:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5758:95:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":725,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"5871:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5882:6:4","memberName":"length","nodeType":"MemberAccess","src":"5871:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5892:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5871:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":731,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"5908:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5921:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":732,"name":"bool","nodeType":"ElementaryTypeName","src":"5921:4:4","typeDescriptions":{}}}],"id":734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5920:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":729,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5897:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5901:6:4","memberName":"decode","nodeType":"MemberAccess","src":"5897:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5897:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5871:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5929:44:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5863:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5863:111:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":739,"nodeType":"ExpressionStatement","src":"5863:111:4"}]},"documentation":{"id":705,"nodeType":"StructuredDocumentation","src":"4951:372:4","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":741,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"5337:19:4","nodeType":"FunctionDefinition","parameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":708,"mutability":"mutable","name":"token","nameLocation":"5375:5:4","nodeType":"VariableDeclaration","scope":741,"src":"5357:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":707,"nodeType":"UserDefinedTypeName","pathNode":{"id":706,"name":"IERC20Upgradeable","nameLocations":["5357:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"5357:17:4"},"referencedDeclaration":378,"src":"5357:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":710,"mutability":"mutable","name":"data","nameLocation":"5395:4:4","nodeType":"VariableDeclaration","scope":741,"src":"5382:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":709,"name":"bytes","nodeType":"ElementaryTypeName","src":"5382:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5356:44:4"},"returnParameters":{"id":712,"nodeType":"ParameterList","parameters":[],"src":"5409:0:4"},"scope":790,"src":"5328:653:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":788,"nodeType":"Block","src":"6582:516:4","statements":[{"assignments":[753,755],"declarations":[{"constant":false,"id":753,"mutability":"mutable","name":"success","nameLocation":"6883:7:4","nodeType":"VariableDeclaration","scope":788,"src":"6878:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":752,"name":"bool","nodeType":"ElementaryTypeName","src":"6878:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":755,"mutability":"mutable","name":"returndata","nameLocation":"6905:10:4","nodeType":"VariableDeclaration","scope":788,"src":"6892:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":754,"name":"bytes","nodeType":"ElementaryTypeName","src":"6892:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":763,"initialValue":{"arguments":[{"id":761,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"6939:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":758,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"6927:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6919:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":756,"name":"address","nodeType":"ElementaryTypeName","src":"6919:7:4","typeDescriptions":{}}},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6934:4:4","memberName":"call","nodeType":"MemberAccess","src":"6919:19:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6877:67:4"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":764,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"6973:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":765,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6985:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6996:6:4","memberName":"length","nodeType":"MemberAccess","src":"6985:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7006:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6985:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":771,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"7022:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7035:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":772,"name":"bool","nodeType":"ElementaryTypeName","src":"7035:4:4","typeDescriptions":{}}}],"id":774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7034:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":769,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7011:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7015:6:4","memberName":"decode","nodeType":"MemberAccess","src":"7011:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7011:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6985:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":777,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6984:58:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:69:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"arguments":[{"id":783,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":745,"src":"7084:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}],"id":782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7076:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":781,"name":"address","nodeType":"ElementaryTypeName","src":"7076:7:4","typeDescriptions":{}}},"id":784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7076:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":779,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"7046:18:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1120_$","typeString":"type(library AddressUpgradeable)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7065:10:4","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":808,"src":"7046:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7046:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:118:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":751,"id":787,"nodeType":"Return","src":"6954:137:4"}]},"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"5987:490:4","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead."},"id":789,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"6491:23:4","nodeType":"FunctionDefinition","parameters":{"id":748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":745,"mutability":"mutable","name":"token","nameLocation":"6533:5:4","nodeType":"VariableDeclaration","scope":789,"src":"6515:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"},"typeName":{"id":744,"nodeType":"UserDefinedTypeName","pathNode":{"id":743,"name":"IERC20Upgradeable","nameLocations":["6515:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":378,"src":"6515:17:4"},"referencedDeclaration":378,"src":"6515:17:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$378","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":747,"mutability":"mutable","name":"data","nameLocation":"6553:4:4","nodeType":"VariableDeclaration","scope":789,"src":"6540:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":746,"name":"bytes","nodeType":"ElementaryTypeName","src":"6540:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6514:44:4"},"returnParameters":{"id":751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":789,"src":"6576:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":749,"name":"bool","nodeType":"ElementaryTypeName","src":"6576:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6575:6:4"},"scope":790,"src":"6482:616:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":791,"src":"734:6366:4","usedErrors":[]}],"src":"115:6986:4"},"id":4},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120]},"id":1121,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":792,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":793,"nodeType":"StructuredDocumentation","src":"126:67:5","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1120,"linearizedBaseContracts":[1120],"name":"AddressUpgradeable","nameLocation":"202:18:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":807,"nodeType":"Block","src":"1489:254:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":801,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"1713:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:5","memberName":"code","nodeType":"MemberAccess","src":"1713:12:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:5","memberName":"length","nodeType":"MemberAccess","src":"1713:19:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":800,"id":806,"nodeType":"Return","src":"1706:30:5"}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"227:1191:5","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":808,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:5","nodeType":"FunctionDefinition","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"account","nameLocation":"1451:7:5","nodeType":"VariableDeclaration","scope":808,"src":"1443:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":795,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:5"},"returnParameters":{"id":800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":808,"src":"1483:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":798,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:5"},"scope":1120,"src":"1423:320:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"2729:241:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":819,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2755:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}],"id":818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":817,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:5","typeDescriptions":{}}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:5","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":822,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2772:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":816,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2739:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":826,"nodeType":"ExpressionStatement","src":"2739:73:5"},{"assignments":[828,null],"declarations":[{"constant":false,"id":828,"mutability":"mutable","name":"success","nameLocation":"2829:7:5","nodeType":"VariableDeclaration","scope":841,"src":"2824:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":827,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":835,"initialValue":{"arguments":[{"hexValue":"","id":833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":829,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"2842:9:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:5","memberName":"call","nodeType":"MemberAccess","src":"2842:14:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":831,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2864:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:5"},{"expression":{"arguments":[{"id":837,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"2893:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":836,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2885:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":840,"nodeType":"ExpressionStatement","src":"2885:78:5"}]},"documentation":{"id":809,"nodeType":"StructuredDocumentation","src":"1749:904:5","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:5","nodeType":"FunctionDefinition","parameters":{"id":814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:5","nodeType":"VariableDeclaration","scope":842,"src":"2677:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":810,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:5","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":813,"mutability":"mutable","name":"amount","nameLocation":"2712:6:5","nodeType":"VariableDeclaration","scope":842,"src":"2704:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":812,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:5"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[],"src":"2729:0:5"},"scope":1120,"src":"2658:312:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":859,"nodeType":"Block","src":"3801:96:5","statements":[{"expression":{"arguments":[{"id":853,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"3840:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":854,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"3848:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":852,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"3818:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":851,"id":858,"nodeType":"Return","src":"3811:79:5"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"2976:731:5","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":860,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:5","nodeType":"FunctionDefinition","parameters":{"id":848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"target","nameLocation":"3742:6:5","nodeType":"VariableDeclaration","scope":860,"src":"3734:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"3763:4:5","nodeType":"VariableDeclaration","scope":860,"src":"3750:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:5"},"returnParameters":{"id":851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":860,"src":"3787:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":849,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:5"},"scope":1120,"src":"3712:185:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":879,"nodeType":"Block","src":"4266:76:5","statements":[{"expression":{"arguments":[{"id":873,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"4305:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":874,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":865,"src":"4313:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":876,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"4322:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":872,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"4283:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":871,"id":878,"nodeType":"Return","src":"4276:59:5"}]},"documentation":{"id":861,"nodeType":"StructuredDocumentation","src":"3903:211:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":880,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:5","nodeType":"FunctionDefinition","parameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":863,"mutability":"mutable","name":"target","nameLocation":"4158:6:5","nodeType":"VariableDeclaration","scope":880,"src":"4150:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":862,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":865,"mutability":"mutable","name":"data","nameLocation":"4187:4:5","nodeType":"VariableDeclaration","scope":880,"src":"4174:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":864,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":867,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:5","nodeType":"VariableDeclaration","scope":880,"src":"4201:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":866,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:5"},"returnParameters":{"id":871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":880,"src":"4252:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":869,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:5"},"scope":1120,"src":"4119:223:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":899,"nodeType":"Block","src":"4817:111:5","statements":[{"expression":{"arguments":[{"id":893,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"4856:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":894,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"4864:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"4870:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":892,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[900,944],"referencedDeclaration":944,"src":"4834:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":891,"id":898,"nodeType":"Return","src":"4827:94:5"}]},"documentation":{"id":881,"nodeType":"StructuredDocumentation","src":"4348:351:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":900,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:5","nodeType":"FunctionDefinition","parameters":{"id":888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"target","nameLocation":"4743:6:5","nodeType":"VariableDeclaration","scope":900,"src":"4735:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":882,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":885,"mutability":"mutable","name":"data","nameLocation":"4764:4:5","nodeType":"VariableDeclaration","scope":900,"src":"4751:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":884,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":887,"mutability":"mutable","name":"value","nameLocation":"4778:5:5","nodeType":"VariableDeclaration","scope":900,"src":"4770:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":886,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:5"},"returnParameters":{"id":891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":900,"src":"4803:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":889,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:5"},"scope":1120,"src":"4704:224:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":943,"nodeType":"Block","src":"5355:267:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":917,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5381:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1120","typeString":"library AddressUpgradeable"}],"id":916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":915,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:5","typeDescriptions":{}}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:5","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":920,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"5398:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":914,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5365:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":924,"nodeType":"ExpressionStatement","src":"5365:81:5"},{"assignments":[926,928],"declarations":[{"constant":false,"id":926,"mutability":"mutable","name":"success","nameLocation":"5462:7:5","nodeType":"VariableDeclaration","scope":943,"src":"5457:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":925,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":928,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:5","nodeType":"VariableDeclaration","scope":943,"src":"5471:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":927,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":935,"initialValue":{"arguments":[{"id":933,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":905,"src":"5524:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":929,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"5498:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:5","memberName":"call","nodeType":"MemberAccess","src":"5498:11:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"5517:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:5","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:5"},{"expression":{"arguments":[{"id":937,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"5573:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":938,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"5581:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":939,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"5590:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":940,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"5602:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":936,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"5546:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":913,"id":942,"nodeType":"Return","src":"5539:76:5"}]},"documentation":{"id":901,"nodeType":"StructuredDocumentation","src":"4934:237:5","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":944,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:5","nodeType":"FunctionDefinition","parameters":{"id":910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"target","nameLocation":"5224:6:5","nodeType":"VariableDeclaration","scope":944,"src":"5216:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":905,"mutability":"mutable","name":"data","nameLocation":"5253:4:5","nodeType":"VariableDeclaration","scope":944,"src":"5240:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":904,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":907,"mutability":"mutable","name":"value","nameLocation":"5275:5:5","nodeType":"VariableDeclaration","scope":944,"src":"5267:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":906,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:5","nodeType":"VariableDeclaration","scope":944,"src":"5290:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":908,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:5"},"returnParameters":{"id":913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":912,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":944,"src":"5341:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":911,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:5"},"scope":1120,"src":"5176:446:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":960,"nodeType":"Block","src":"5899:97:5","statements":[{"expression":{"arguments":[{"id":955,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":947,"src":"5935:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":956,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"5943:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":954,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[961,990],"referencedDeclaration":990,"src":"5916:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":953,"id":959,"nodeType":"Return","src":"5909:80:5"}]},"documentation":{"id":945,"nodeType":"StructuredDocumentation","src":"5628:166:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":961,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:5","nodeType":"FunctionDefinition","parameters":{"id":950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":947,"mutability":"mutable","name":"target","nameLocation":"5835:6:5","nodeType":"VariableDeclaration","scope":961,"src":"5827:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":946,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":949,"mutability":"mutable","name":"data","nameLocation":"5856:4:5","nodeType":"VariableDeclaration","scope":961,"src":"5843:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":948,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:5"},"returnParameters":{"id":953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":961,"src":"5885:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":951,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:5"},"scope":1120,"src":"5799:197:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":989,"nodeType":"Block","src":"6338:168:5","statements":[{"assignments":[974,976],"declarations":[{"constant":false,"id":974,"mutability":"mutable","name":"success","nameLocation":"6354:7:5","nodeType":"VariableDeclaration","scope":989,"src":"6349:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":973,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":976,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:5","nodeType":"VariableDeclaration","scope":989,"src":"6363:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":975,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":981,"initialValue":{"arguments":[{"id":979,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"6408:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":977,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"6390:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:5","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:5","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:5"},{"expression":{"arguments":[{"id":983,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"6457:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":984,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"6465:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":985,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"6474:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":986,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"6486:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":982,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"6430:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":972,"id":988,"nodeType":"Return","src":"6423:76:5"}]},"documentation":{"id":962,"nodeType":"StructuredDocumentation","src":"6002:173:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":990,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:5","nodeType":"FunctionDefinition","parameters":{"id":969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":964,"mutability":"mutable","name":"target","nameLocation":"6225:6:5","nodeType":"VariableDeclaration","scope":990,"src":"6217:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":963,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":966,"mutability":"mutable","name":"data","nameLocation":"6254:4:5","nodeType":"VariableDeclaration","scope":990,"src":"6241:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":965,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":968,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:5","nodeType":"VariableDeclaration","scope":990,"src":"6268:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":967,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:5"},"returnParameters":{"id":972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":990,"src":"6324:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":970,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:5"},"scope":1120,"src":"6180:326:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1006,"nodeType":"Block","src":"6782:101:5","statements":[{"expression":{"arguments":[{"id":1001,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"6820:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1002,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":995,"src":"6828:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":1000,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[1007,1036],"referencedDeclaration":1036,"src":"6799:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":999,"id":1005,"nodeType":"Return","src":"6792:84:5"}]},"documentation":{"id":991,"nodeType":"StructuredDocumentation","src":"6512:168:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1007,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:5","nodeType":"FunctionDefinition","parameters":{"id":996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":993,"mutability":"mutable","name":"target","nameLocation":"6723:6:5","nodeType":"VariableDeclaration","scope":1007,"src":"6715:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":992,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":995,"mutability":"mutable","name":"data","nameLocation":"6744:4:5","nodeType":"VariableDeclaration","scope":1007,"src":"6731:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":994,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:5"},"returnParameters":{"id":999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1007,"src":"6768:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":997,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:5"},"scope":1120,"src":"6685:198:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1035,"nodeType":"Block","src":"7224:170:5","statements":[{"assignments":[1020,1022],"declarations":[{"constant":false,"id":1020,"mutability":"mutable","name":"success","nameLocation":"7240:7:5","nodeType":"VariableDeclaration","scope":1035,"src":"7235:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1019,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1022,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:5","nodeType":"VariableDeclaration","scope":1035,"src":"7249:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1021,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1027,"initialValue":{"arguments":[{"id":1025,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"7296:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1023,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"7276:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:5","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:5","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:5"},{"expression":{"arguments":[{"id":1029,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"7345:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1030,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"7353:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1031,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"7362:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1032,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1014,"src":"7374:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1028,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"7318:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1018,"id":1034,"nodeType":"Return","src":"7311:76:5"}]},"documentation":{"id":1008,"nodeType":"StructuredDocumentation","src":"6889:175:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1036,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:5","nodeType":"FunctionDefinition","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1010,"mutability":"mutable","name":"target","nameLocation":"7116:6:5","nodeType":"VariableDeclaration","scope":1036,"src":"7108:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1009,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1012,"mutability":"mutable","name":"data","nameLocation":"7145:4:5","nodeType":"VariableDeclaration","scope":1036,"src":"7132:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1011,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1014,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:5","nodeType":"VariableDeclaration","scope":1036,"src":"7159:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1013,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:5"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1036,"src":"7210:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1016,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:5"},"scope":1120,"src":"7069:325:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1074,"nodeType":"Block","src":"7876:434:5","statements":[{"condition":{"id":1050,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"7890:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1072,"nodeType":"Block","src":"8246:58:5","statements":[{"expression":{"arguments":[{"id":1068,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"8268:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1069,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"8280:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1067,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"8260:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1071,"nodeType":"ExpressionStatement","src":"8260:33:5"}]},"id":1073,"nodeType":"IfStatement","src":"7886:418:5","trueBody":{"id":1066,"nodeType":"Block","src":"7899:341:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1051,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"7917:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:5","memberName":"length","nodeType":"MemberAccess","src":"7917:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1063,"nodeType":"IfStatement","src":"7913:286:5","trueBody":{"id":1062,"nodeType":"Block","src":"7941:258:5","statements":[{"expression":{"arguments":[{"arguments":[{"id":1057,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1039,"src":"8143:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1056,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"8132:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":1055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8124:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1061,"nodeType":"ExpressionStatement","src":"8124:60:5"}]}},{"expression":{"id":1064,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"8219:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1049,"id":1065,"nodeType":"Return","src":"8212:17:5"}]}}]},"documentation":{"id":1037,"nodeType":"StructuredDocumentation","src":"7400:277:5","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":1075,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:5","nodeType":"FunctionDefinition","parameters":{"id":1046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1039,"mutability":"mutable","name":"target","nameLocation":"7735:6:5","nodeType":"VariableDeclaration","scope":1075,"src":"7727:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1038,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1041,"mutability":"mutable","name":"success","nameLocation":"7756:7:5","nodeType":"VariableDeclaration","scope":1075,"src":"7751:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1040,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1043,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:5","nodeType":"VariableDeclaration","scope":1075,"src":"7773:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1042,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1045,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:5","nodeType":"VariableDeclaration","scope":1075,"src":"7806:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1044,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:5"},"returnParameters":{"id":1049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1075,"src":"7862:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1047,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:5"},"scope":1120,"src":"7682:628:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1098,"nodeType":"Block","src":"8691:135:5","statements":[{"condition":{"id":1087,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"8705:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1096,"nodeType":"Block","src":"8762:58:5","statements":[{"expression":{"arguments":[{"id":1092,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"8784:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1093,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"8796:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1091,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1119,"src":"8776:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1095,"nodeType":"ExpressionStatement","src":"8776:33:5"}]},"id":1097,"nodeType":"IfStatement","src":"8701:119:5","trueBody":{"id":1090,"nodeType":"Block","src":"8714:42:5","statements":[{"expression":{"id":1088,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"8735:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1086,"id":1089,"nodeType":"Return","src":"8728:17:5"}]}}]},"documentation":{"id":1076,"nodeType":"StructuredDocumentation","src":"8316:210:5","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":1099,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:5","nodeType":"FunctionDefinition","parameters":{"id":1083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1078,"mutability":"mutable","name":"success","nameLocation":"8571:7:5","nodeType":"VariableDeclaration","scope":1099,"src":"8566:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1077,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1080,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:5","nodeType":"VariableDeclaration","scope":1099,"src":"8588:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1079,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1082,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:5","nodeType":"VariableDeclaration","scope":1099,"src":"8621:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1081,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:5"},"returnParameters":{"id":1086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1099,"src":"8677:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1084,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:5"},"scope":1120,"src":"8531:295:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1118,"nodeType":"Block","src":"8915:457:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1106,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"8991:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:5","memberName":"length","nodeType":"MemberAccess","src":"8991:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1116,"nodeType":"Block","src":"9321:45:5","statements":[{"expression":{"arguments":[{"id":1113,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"9342:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1112,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9335:6:5","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1115,"nodeType":"ExpressionStatement","src":"9335:20:5"}]},"id":1117,"nodeType":"IfStatement","src":"8987:379:5","trueBody":{"id":1111,"nodeType":"Block","src":"9014:301:5","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:5","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:5","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:5"},"nodeType":"YulFunctionCall","src":"9213:17:5"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:5","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:5","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:5"},"nodeType":"YulFunctionCall","src":"9254:19:5"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:5"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:5"},"nodeType":"YulFunctionCall","src":"9247:44:5"},"nodeType":"YulExpressionStatement","src":"9247:44:5"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1101,"isOffset":false,"isSlot":false,"src":"9219:10:5","valueSize":1},{"declaration":1101,"isOffset":false,"isSlot":false,"src":"9262:10:5","valueSize":1}],"id":1110,"nodeType":"InlineAssembly","src":"9163:142:5"}]}}]},"id":1119,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:5","nodeType":"FunctionDefinition","parameters":{"id":1104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1101,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:5","nodeType":"VariableDeclaration","scope":1119,"src":"8849:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1100,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1103,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:5","nodeType":"VariableDeclaration","scope":1119,"src":"8874:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1102,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:5"},"returnParameters":{"id":1105,"nodeType":"ParameterList","parameters":[],"src":"8915:0:5"},"scope":1120,"src":"8832:540:5","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1121,"src":"194:9180:5","usedErrors":[]}],"src":"101:9274:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300]},"id":1163,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1122,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:6"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1123,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1163,"sourceUnit":301,"src":"110:42:6","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1125,"name":"Initializable","nameLocations":["691:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":300,"src":"691:13:6"},"id":1126,"nodeType":"InheritanceSpecifier","src":"691:13:6"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1124,"nodeType":"StructuredDocumentation","src":"154:496:6","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1162,"linearizedBaseContracts":[1162,300],"name":"ContextUpgradeable","nameLocation":"669:18:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":1131,"nodeType":"Block","src":"763:7:6","statements":[]},"id":1132,"implemented":true,"kind":"function","modifiers":[{"id":1129,"kind":"modifierInvocation","modifierName":{"id":1128,"name":"onlyInitializing","nameLocations":["746:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"746:16:6"},"nodeType":"ModifierInvocation","src":"746:16:6"}],"name":"__Context_init","nameLocation":"720:14:6","nodeType":"FunctionDefinition","parameters":{"id":1127,"nodeType":"ParameterList","parameters":[],"src":"734:2:6"},"returnParameters":{"id":1130,"nodeType":"ParameterList","parameters":[],"src":"763:0:6"},"scope":1162,"src":"711:59:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1137,"nodeType":"Block","src":"838:7:6","statements":[]},"id":1138,"implemented":true,"kind":"function","modifiers":[{"id":1135,"kind":"modifierInvocation","modifierName":{"id":1134,"name":"onlyInitializing","nameLocations":["821:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":245,"src":"821:16:6"},"nodeType":"ModifierInvocation","src":"821:16:6"}],"name":"__Context_init_unchained","nameLocation":"785:24:6","nodeType":"FunctionDefinition","parameters":{"id":1133,"nodeType":"ParameterList","parameters":[],"src":"809:2:6"},"returnParameters":{"id":1136,"nodeType":"ParameterList","parameters":[],"src":"838:0:6"},"scope":1162,"src":"776:69:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1146,"nodeType":"Block","src":"912:34:6","statements":[{"expression":{"expression":{"id":1143,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"929:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"933:6:6","memberName":"sender","nodeType":"MemberAccess","src":"929:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1142,"id":1145,"nodeType":"Return","src":"922:17:6"}]},"id":1147,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"859:10:6","nodeType":"FunctionDefinition","parameters":{"id":1139,"nodeType":"ParameterList","parameters":[],"src":"869:2:6"},"returnParameters":{"id":1142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1147,"src":"903:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1140,"name":"address","nodeType":"ElementaryTypeName","src":"903:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"902:9:6"},"scope":1162,"src":"850:96:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1155,"nodeType":"Block","src":"1019:32:6","statements":[{"expression":{"expression":{"id":1152,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1036:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1040:4:6","memberName":"data","nodeType":"MemberAccess","src":"1036:8:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1151,"id":1154,"nodeType":"Return","src":"1029:15:6"}]},"id":1156,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"961:8:6","nodeType":"FunctionDefinition","parameters":{"id":1148,"nodeType":"ParameterList","parameters":[],"src":"969:2:6"},"returnParameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1156,"src":"1003:14:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1149,"name":"bytes","nodeType":"ElementaryTypeName","src":"1003:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1002:16:6"},"scope":1162,"src":"952:99:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":1157,"nodeType":"StructuredDocumentation","src":"1057:254:6","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1161,"mutability":"mutable","name":"__gap","nameLocation":"1336:5:6","nodeType":"VariableDeclaration","scope":1162,"src":"1316:25:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"1316:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1160,"length":{"hexValue":"3530","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1324:2:6","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1316:11:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1163,"src":"651:693:6","usedErrors":[]}],"src":"86:1259:6"},"id":6},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[2623],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":1392,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1164,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:7"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","file":"./math/MathUpgradeable.sol","id":1165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1392,"sourceUnit":2624,"src":"126:36:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol","file":"./math/SignedMathUpgradeable.sol","id":1166,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1392,"sourceUnit":2729,"src":"163:42:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"StringsUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1167,"nodeType":"StructuredDocumentation","src":"207:34:7","text":" @dev String operations."},"fullyImplemented":true,"id":1391,"linearizedBaseContracts":[1391],"name":"StringsUpgradeable","nameLocation":"250:18:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1170,"mutability":"constant","name":"_SYMBOLS","nameLocation":"300:8:7","nodeType":"VariableDeclaration","scope":1391,"src":"275:54:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1168,"name":"bytes16","nodeType":"ElementaryTypeName","src":"275:7:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":1173,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"358:15:7","nodeType":"VariableDeclaration","scope":1391,"src":"335:43:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1171,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"376:2:7","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":1220,"nodeType":"Block","src":"551:636:7","statements":[{"id":1219,"nodeType":"UncheckedBlock","src":"561:620:7","statements":[{"assignments":[1182],"declarations":[{"constant":false,"id":1182,"mutability":"mutable","name":"length","nameLocation":"593:6:7","nodeType":"VariableDeclaration","scope":1219,"src":"585:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"585:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1189,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"624:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1183,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2623,"src":"602:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$2623_$","typeString":"type(library MathUpgradeable)"}},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"618:5:7","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":2460,"src":"602:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"602:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"633:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"602:32:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"585:49:7"},{"assignments":[1191],"declarations":[{"constant":false,"id":1191,"mutability":"mutable","name":"buffer","nameLocation":"662:6:7","nodeType":"VariableDeclaration","scope":1219,"src":"648:20:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1190,"name":"string","nodeType":"ElementaryTypeName","src":"648:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1196,"initialValue":{"arguments":[{"id":1194,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"682:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"671:10:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1192,"name":"string","nodeType":"ElementaryTypeName","src":"675:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"671:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"648:41:7"},{"assignments":[1198],"declarations":[{"constant":false,"id":1198,"mutability":"mutable","name":"ptr","nameLocation":"711:3:7","nodeType":"VariableDeclaration","scope":1219,"src":"703:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1197,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1199,"nodeType":"VariableDeclarationStatement","src":"703:11:7"},{"AST":{"nodeType":"YulBlock","src":"784:67:7","statements":[{"nodeType":"YulAssignment","src":"802:35:7","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"813:6:7"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"825:2:7","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"829:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"821:3:7"},"nodeType":"YulFunctionCall","src":"821:15:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"809:3:7"},"nodeType":"YulFunctionCall","src":"809:28:7"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"802:3:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1191,"isOffset":false,"isSlot":false,"src":"813:6:7","valueSize":1},{"declaration":1182,"isOffset":false,"isSlot":false,"src":"829:6:7","valueSize":1},{"declaration":1198,"isOffset":false,"isSlot":false,"src":"802:3:7","valueSize":1}],"id":1200,"nodeType":"InlineAssembly","src":"775:76:7"},{"body":{"id":1215,"nodeType":"Block","src":"877:267:7","statements":[{"expression":{"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"895:5:7","subExpression":{"id":1202,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"895:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1204,"nodeType":"ExpressionStatement","src":"895:5:7"},{"AST":{"nodeType":"YulBlock","src":"978:84:7","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1008:3:7"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1022:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"1029:2:7","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"1018:3:7"},"nodeType":"YulFunctionCall","src":"1018:14:7"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"1034:8:7"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"1013:4:7"},"nodeType":"YulFunctionCall","src":"1013:30:7"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"1000:7:7"},"nodeType":"YulFunctionCall","src":"1000:44:7"},"nodeType":"YulExpressionStatement","src":"1000:44:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1170,"isOffset":false,"isSlot":false,"src":"1034:8:7","valueSize":1},{"declaration":1198,"isOffset":false,"isSlot":false,"src":"1008:3:7","valueSize":1},{"declaration":1176,"isOffset":false,"isSlot":false,"src":"1022:5:7","valueSize":1}],"id":1205,"nodeType":"InlineAssembly","src":"969:93:7"},{"expression":{"id":1208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"1079:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1088:2:7","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1079:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1209,"nodeType":"ExpressionStatement","src":"1079:11:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"1112:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1121:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1112:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1214,"nodeType":"IfStatement","src":"1108:21:7","trueBody":{"id":1213,"nodeType":"Break","src":"1124:5:7"}}]},"condition":{"hexValue":"74727565","id":1201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"871:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1216,"nodeType":"WhileStatement","src":"864:280:7"},{"expression":{"id":1217,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1191,"src":"1164:6:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1180,"id":1218,"nodeType":"Return","src":"1157:13:7"}]}]},"documentation":{"id":1174,"nodeType":"StructuredDocumentation","src":"385:90:7","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":1221,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"489:8:7","nodeType":"FunctionDefinition","parameters":{"id":1177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1176,"mutability":"mutable","name":"value","nameLocation":"506:5:7","nodeType":"VariableDeclaration","scope":1221,"src":"498:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1175,"name":"uint256","nodeType":"ElementaryTypeName","src":"498:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"497:15:7"},"returnParameters":{"id":1180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1221,"src":"536:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1178,"name":"string","nodeType":"ElementaryTypeName","src":"536:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"535:15:7"},"scope":1391,"src":"480:707:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1248,"nodeType":"Block","src":"1357:114:7","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1224,"src":"1398:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1406:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1398:9:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1416:2:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1398:20:7","trueExpression":{"hexValue":"2d","id":1236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1410:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1224,"src":"1455:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1240,"name":"SignedMathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"1429:21:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMathUpgradeable_$2728_$","typeString":"type(library SignedMathUpgradeable)"}},"id":1241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1451:3:7","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":2727,"src":"1429:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1429:32:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1239,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[1221,1249],"referencedDeclaration":1221,"src":"1420:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1231,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1381:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1385:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"1381:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1381:82:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1374:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1229,"name":"string","nodeType":"ElementaryTypeName","src":"1374:6:7","typeDescriptions":{}}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1374:90:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1228,"id":1247,"nodeType":"Return","src":"1367:97:7"}]},"documentation":{"id":1222,"nodeType":"StructuredDocumentation","src":"1193:89:7","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":1249,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1296:8:7","nodeType":"FunctionDefinition","parameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1224,"mutability":"mutable","name":"value","nameLocation":"1312:5:7","nodeType":"VariableDeclaration","scope":1249,"src":"1305:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1223,"name":"int256","nodeType":"ElementaryTypeName","src":"1305:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1304:14:7"},"returnParameters":{"id":1228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1249,"src":"1342:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1226,"name":"string","nodeType":"ElementaryTypeName","src":"1342:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1341:15:7"},"scope":1391,"src":"1287:184:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1268,"nodeType":"Block","src":"1650:111:7","statements":[{"id":1267,"nodeType":"UncheckedBlock","src":"1660:95:7","statements":[{"expression":{"arguments":[{"id":1258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"1703:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1261,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"1733:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1259,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2623,"src":"1710:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$2623_$","typeString":"type(library MathUpgradeable)"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:7","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":2583,"src":"1710:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1710:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1742:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1710:33:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1257,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1269,1345,1365],"referencedDeclaration":1345,"src":"1691:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1691:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1256,"id":1266,"nodeType":"Return","src":"1684:60:7"}]}]},"documentation":{"id":1250,"nodeType":"StructuredDocumentation","src":"1477:94:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":1269,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1585:11:7","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1252,"mutability":"mutable","name":"value","nameLocation":"1605:5:7","nodeType":"VariableDeclaration","scope":1269,"src":"1597:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1251,"name":"uint256","nodeType":"ElementaryTypeName","src":"1597:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1596:15:7"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1269,"src":"1635:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1254,"name":"string","nodeType":"ElementaryTypeName","src":"1635:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1634:15:7"},"scope":1391,"src":"1576:185:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1344,"nodeType":"Block","src":"1974:347:7","statements":[{"assignments":[1280],"declarations":[{"constant":false,"id":1280,"mutability":"mutable","name":"buffer","nameLocation":"1997:6:7","nodeType":"VariableDeclaration","scope":1344,"src":"1984:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1279,"name":"bytes","nodeType":"ElementaryTypeName","src":"1984:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1289,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2016:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1284,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"2020:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2016:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2029:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2016:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2006:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1281,"name":"bytes","nodeType":"ElementaryTypeName","src":"2010:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2006:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1984:47:7"},{"expression":{"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1290,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2041:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1292,"indexExpression":{"hexValue":"30","id":1291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2048:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2041:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2053:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2041:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1295,"nodeType":"ExpressionStatement","src":"2041:15:7"},{"expression":{"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1296,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2066:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1298,"indexExpression":{"hexValue":"31","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2073:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2066:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2078:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2066:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1301,"nodeType":"ExpressionStatement","src":"2066:15:7"},{"body":{"id":1330,"nodeType":"Block","src":"2136:83:7","statements":[{"expression":{"id":1324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1316,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2150:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1318,"indexExpression":{"id":1317,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2157:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2150:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1319,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"2162:8:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1323,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2171:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:3:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2171:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2162:21:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2150:33:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1325,"nodeType":"ExpressionStatement","src":"2150:33:7"},{"expression":{"id":1328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2197:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2207:1:7","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2197:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1329,"nodeType":"ExpressionStatement","src":"2197:11:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1310,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2124:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2128:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2124:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1331,"initializationExpression":{"assignments":[1303],"declarations":[{"constant":false,"id":1303,"mutability":"mutable","name":"i","nameLocation":"2104:1:7","nodeType":"VariableDeclaration","scope":1331,"src":"2096:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1309,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2108:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1305,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"2112:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2108:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2121:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2108:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2096:26:7"},"loopExpression":{"expression":{"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2131:3:7","subExpression":{"id":1313,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"2133:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1315,"nodeType":"ExpressionStatement","src":"2131:3:7"},"nodeType":"ForStatement","src":"2091:128:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2236:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2245:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2248:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":1332,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2228:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2228:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1338,"nodeType":"ExpressionStatement","src":"2228:55:7"},{"expression":{"arguments":[{"id":1341,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"2307:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2300:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1339,"name":"string","nodeType":"ElementaryTypeName","src":"2300:6:7","typeDescriptions":{}}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1278,"id":1343,"nodeType":"Return","src":"2293:21:7"}]},"documentation":{"id":1270,"nodeType":"StructuredDocumentation","src":"1767:112:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":1345,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1893:11:7","nodeType":"FunctionDefinition","parameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"value","nameLocation":"1913:5:7","nodeType":"VariableDeclaration","scope":1345,"src":"1905:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"1905:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"length","nameLocation":"1928:6:7","nodeType":"VariableDeclaration","scope":1345,"src":"1920:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1273,"name":"uint256","nodeType":"ElementaryTypeName","src":"1920:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1904:31:7"},"returnParameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1345,"src":"1959:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1276,"name":"string","nodeType":"ElementaryTypeName","src":"1959:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1958:15:7"},"scope":1391,"src":"1884:437:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1364,"nodeType":"Block","src":"2546:76:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1358,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"2591:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2583:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1356,"name":"uint160","nodeType":"ElementaryTypeName","src":"2583:7:7","typeDescriptions":{}}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2583:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2575:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1354,"name":"uint256","nodeType":"ElementaryTypeName","src":"2575:7:7","typeDescriptions":{}}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2575:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1361,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"2599:15:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1353,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1269,1345,1365],"referencedDeclaration":1345,"src":"2563:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1352,"id":1363,"nodeType":"Return","src":"2556:59:7"}]},"documentation":{"id":1346,"nodeType":"StructuredDocumentation","src":"2327:141:7","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":1365,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2482:11:7","nodeType":"FunctionDefinition","parameters":{"id":1349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1348,"mutability":"mutable","name":"addr","nameLocation":"2502:4:7","nodeType":"VariableDeclaration","scope":1365,"src":"2494:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1347,"name":"address","nodeType":"ElementaryTypeName","src":"2494:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2493:14:7"},"returnParameters":{"id":1352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1365,"src":"2531:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1350,"name":"string","nodeType":"ElementaryTypeName","src":"2531:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2530:15:7"},"scope":1391,"src":"2473:149:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1389,"nodeType":"Block","src":"2777:66:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1378,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"2810:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2804:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1376,"name":"bytes","nodeType":"ElementaryTypeName","src":"2804:5:7","typeDescriptions":{}}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2804:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1375,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2794:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2794:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1384,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1370,"src":"2833:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2827:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1382,"name":"bytes","nodeType":"ElementaryTypeName","src":"2827:5:7","typeDescriptions":{}}},"id":1385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2827:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1381,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2817:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2817:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2794:42:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1374,"id":1388,"nodeType":"Return","src":"2787:49:7"}]},"documentation":{"id":1366,"nodeType":"StructuredDocumentation","src":"2628:66:7","text":" @dev Returns true if the two strings are equal."},"id":1390,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2708:5:7","nodeType":"FunctionDefinition","parameters":{"id":1371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1368,"mutability":"mutable","name":"a","nameLocation":"2728:1:7","nodeType":"VariableDeclaration","scope":1390,"src":"2714:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1367,"name":"string","nodeType":"ElementaryTypeName","src":"2714:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1370,"mutability":"mutable","name":"b","nameLocation":"2745:1:7","nodeType":"VariableDeclaration","scope":1390,"src":"2731:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1369,"name":"string","nodeType":"ElementaryTypeName","src":"2731:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2713:34:7"},"returnParameters":{"id":1374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1390,"src":"2771:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1372,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:7"},"scope":1391,"src":"2699:144:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1392,"src":"242:2603:7","usedErrors":[]}],"src":"101:2745:7"},"id":7},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","exportedSymbols":{"ECDSAUpgradeable":[1757],"MathUpgradeable":[2623],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":1758,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1393,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:8"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol","file":"../StringsUpgradeable.sol","id":1394,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1758,"sourceUnit":1392,"src":"137:35:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSAUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1395,"nodeType":"StructuredDocumentation","src":"174:205:8","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":1757,"linearizedBaseContracts":[1757],"name":"ECDSAUpgradeable","nameLocation":"388:16:8","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSAUpgradeable.RecoverError","id":1401,"members":[{"id":1396,"name":"NoError","nameLocation":"439:7:8","nodeType":"EnumValue","src":"439:7:8"},{"id":1397,"name":"InvalidSignature","nameLocation":"456:16:8","nodeType":"EnumValue","src":"456:16:8"},{"id":1398,"name":"InvalidSignatureLength","nameLocation":"482:22:8","nodeType":"EnumValue","src":"482:22:8"},{"id":1399,"name":"InvalidSignatureS","nameLocation":"514:17:8","nodeType":"EnumValue","src":"514:17:8"},{"id":1400,"name":"InvalidSignatureV","nameLocation":"541:17:8","nodeType":"EnumValue","src":"541:17:8"}],"name":"RecoverError","nameLocation":"416:12:8","nodeType":"EnumDefinition","src":"411:175:8"},{"body":{"id":1444,"nodeType":"Block","src":"646:457:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1407,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"660:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1408,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"669:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"682:7:8","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":1396,"src":"669:20:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"660:29:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1413,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"756:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1414,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"765:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"778:16:8","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"765:29:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"756:38:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1422,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"865:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1423,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"874:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"887:22:8","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":1398,"src":"874:35:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"865:44:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1431,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"987:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1432,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"996:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1009:17:8","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":1399,"src":"996:30:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"src":"987:39:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1440,"nodeType":"IfStatement","src":"983:114:8","trueBody":{"id":1439,"nodeType":"Block","src":"1028:69:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265202773272076616c7565","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1049:36:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""},"value":"ECDSA: invalid signature 's' value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""}],"id":1435,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1042:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1042:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1438,"nodeType":"ExpressionStatement","src":"1042:44:8"}]}},"id":1441,"nodeType":"IfStatement","src":"861:236:8","trueBody":{"id":1430,"nodeType":"Block","src":"911:66:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265206c656e677468","id":1427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"932:33:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""},"value":"ECDSA: invalid signature length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""}],"id":1426,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"925:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"925:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1429,"nodeType":"ExpressionStatement","src":"925:41:8"}]}},"id":1442,"nodeType":"IfStatement","src":"752:345:8","trueBody":{"id":1421,"nodeType":"Block","src":"796:59:8","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"817:26:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""},"value":"ECDSA: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""}],"id":1417,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"810:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"810:34:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1420,"nodeType":"ExpressionStatement","src":"810:34:8"}]}},"id":1443,"nodeType":"IfStatement","src":"656:441:8","trueBody":{"id":1412,"nodeType":"Block","src":"691:55:8","statements":[{"functionReturnParameters":1406,"id":1411,"nodeType":"Return","src":"705:7:8"}]}}]},"id":1445,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"601:11:8","nodeType":"FunctionDefinition","parameters":{"id":1405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1404,"mutability":"mutable","name":"error","nameLocation":"626:5:8","nodeType":"VariableDeclaration","scope":1445,"src":"613:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1403,"nodeType":"UserDefinedTypeName","pathNode":{"id":1402,"name":"RecoverError","nameLocations":["613:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"613:12:8"},"referencedDeclaration":1401,"src":"613:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"612:20:8"},"returnParameters":{"id":1406,"nodeType":"ParameterList","parameters":[],"src":"646:0:8"},"scope":1757,"src":"592:511:8","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":1490,"nodeType":"Block","src":"2271:626:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1458,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"2285:9:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2295:6:8","memberName":"length","nodeType":"MemberAccess","src":"2285:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":1460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2305:2:8","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2285:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1488,"nodeType":"Block","src":"2810:81:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2840:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2832:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1480,"name":"address","nodeType":"ElementaryTypeName","src":"2832:7:8","typeDescriptions":{}}},"id":1483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1484,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"2844:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2857:22:8","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":1398,"src":"2844:35:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1486,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2831:49:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1457,"id":1487,"nodeType":"Return","src":"2824:56:8"}]},"id":1489,"nodeType":"IfStatement","src":"2281:610:8","trueBody":{"id":1479,"nodeType":"Block","src":"2309:495:8","statements":[{"assignments":[1463],"declarations":[{"constant":false,"id":1463,"mutability":"mutable","name":"r","nameLocation":"2331:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2323:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2323:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1464,"nodeType":"VariableDeclarationStatement","src":"2323:9:8"},{"assignments":[1466],"declarations":[{"constant":false,"id":1466,"mutability":"mutable","name":"s","nameLocation":"2354:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2346:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1465,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2346:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1467,"nodeType":"VariableDeclarationStatement","src":"2346:9:8"},{"assignments":[1469],"declarations":[{"constant":false,"id":1469,"mutability":"mutable","name":"v","nameLocation":"2375:1:8","nodeType":"VariableDeclaration","scope":1479,"src":"2369:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1468,"name":"uint8","nodeType":"ElementaryTypeName","src":"2369:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1470,"nodeType":"VariableDeclarationStatement","src":"2369:7:8"},{"AST":{"nodeType":"YulBlock","src":"2577:171:8","statements":[{"nodeType":"YulAssignment","src":"2595:32:8","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2610:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2621:4:8","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:8"},"nodeType":"YulFunctionCall","src":"2606:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2600:5:8"},"nodeType":"YulFunctionCall","src":"2600:27:8"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"2595:1:8"}]},{"nodeType":"YulAssignment","src":"2644:32:8","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2659:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2670:4:8","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2655:3:8"},"nodeType":"YulFunctionCall","src":"2655:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2649:5:8"},"nodeType":"YulFunctionCall","src":"2649:27:8"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"2644:1:8"}]},{"nodeType":"YulAssignment","src":"2693:41:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2703:1:8","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2716:9:8"},{"kind":"number","nodeType":"YulLiteral","src":"2727:4:8","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2712:3:8"},"nodeType":"YulFunctionCall","src":"2712:20:8"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2706:5:8"},"nodeType":"YulFunctionCall","src":"2706:27:8"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"2698:4:8"},"nodeType":"YulFunctionCall","src":"2698:36:8"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"2693:1:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1463,"isOffset":false,"isSlot":false,"src":"2595:1:8","valueSize":1},{"declaration":1466,"isOffset":false,"isSlot":false,"src":"2644:1:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2610:9:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2659:9:8","valueSize":1},{"declaration":1450,"isOffset":false,"isSlot":false,"src":"2716:9:8","valueSize":1},{"declaration":1469,"isOffset":false,"isSlot":false,"src":"2693:1:8","valueSize":1}],"id":1471,"nodeType":"InlineAssembly","src":"2568:180:8"},{"expression":{"arguments":[{"id":1473,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1448,"src":"2779:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1474,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"2785:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1475,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"2788:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1476,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2791:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1472,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"2768:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2768:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1457,"id":1478,"nodeType":"Return","src":"2761:32:8"}]}}]},"documentation":{"id":1446,"nodeType":"StructuredDocumentation","src":"1109:1053:8","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature` or error string. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n _Available since v4.3._"},"id":1491,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2176:10:8","nodeType":"FunctionDefinition","parameters":{"id":1451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1448,"mutability":"mutable","name":"hash","nameLocation":"2195:4:8","nodeType":"VariableDeclaration","scope":1491,"src":"2187:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1447,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2187:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1450,"mutability":"mutable","name":"signature","nameLocation":"2214:9:8","nodeType":"VariableDeclaration","scope":1491,"src":"2201:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1449,"name":"bytes","nodeType":"ElementaryTypeName","src":"2201:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2186:38:8"},"returnParameters":{"id":1457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1491,"src":"2248:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1452,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1491,"src":"2257:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1455,"nodeType":"UserDefinedTypeName","pathNode":{"id":1454,"name":"RecoverError","nameLocations":["2257:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"2257:12:8"},"referencedDeclaration":1401,"src":"2257:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"2247:23:8"},"scope":1757,"src":"2167:730:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1517,"nodeType":"Block","src":"3770:140:8","statements":[{"assignments":[1502,1505],"declarations":[{"constant":false,"id":1502,"mutability":"mutable","name":"recovered","nameLocation":"3789:9:8","nodeType":"VariableDeclaration","scope":1517,"src":"3781:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1501,"name":"address","nodeType":"ElementaryTypeName","src":"3781:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1505,"mutability":"mutable","name":"error","nameLocation":"3813:5:8","nodeType":"VariableDeclaration","scope":1517,"src":"3800:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1504,"nodeType":"UserDefinedTypeName","pathNode":{"id":1503,"name":"RecoverError","nameLocations":["3800:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"3800:12:8"},"referencedDeclaration":1401,"src":"3800:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1510,"initialValue":{"arguments":[{"id":1507,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1494,"src":"3833:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1508,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1496,"src":"3839:9:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1506,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1491,"src":"3822:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3822:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"3780:69:8"},{"expression":{"arguments":[{"id":1512,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1505,"src":"3871:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1511,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"3859:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1514,"nodeType":"ExpressionStatement","src":"3859:18:8"},{"expression":{"id":1515,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"3894:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1500,"id":1516,"nodeType":"Return","src":"3887:16:8"}]},"documentation":{"id":1492,"nodeType":"StructuredDocumentation","src":"2903:775:8","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it."},"id":1518,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3692:7:8","nodeType":"FunctionDefinition","parameters":{"id":1497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1494,"mutability":"mutable","name":"hash","nameLocation":"3708:4:8","nodeType":"VariableDeclaration","scope":1518,"src":"3700:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1493,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3700:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1496,"mutability":"mutable","name":"signature","nameLocation":"3727:9:8","nodeType":"VariableDeclaration","scope":1518,"src":"3714:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1495,"name":"bytes","nodeType":"ElementaryTypeName","src":"3714:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3699:38:8"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1499,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1518,"src":"3761:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1498,"name":"address","nodeType":"ElementaryTypeName","src":"3761:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3760:9:8"},"scope":1757,"src":"3683:227:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1564,"nodeType":"Block","src":"4267:203:8","statements":[{"assignments":[1534],"declarations":[{"constant":false,"id":1534,"mutability":"mutable","name":"s","nameLocation":"4285:1:8","nodeType":"VariableDeclaration","scope":1564,"src":"4277:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4277:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1541,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1535,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"4289:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":1538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4302:66:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":1537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4294:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4294:7:8","typeDescriptions":{}}},"id":1539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4294:75:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4289:80:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4277:92:8"},{"assignments":[1543],"declarations":[{"constant":false,"id":1543,"mutability":"mutable","name":"v","nameLocation":"4385:1:8","nodeType":"VariableDeclaration","scope":1564,"src":"4379:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1542,"name":"uint8","nodeType":"ElementaryTypeName","src":"4379:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1556,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1548,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"4404:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4396:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1546,"name":"uint256","nodeType":"ElementaryTypeName","src":"4396:7:8","typeDescriptions":{}}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4396:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4411:3:8","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4396:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1552,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4395:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":1553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4418:2:8","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4395:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4389:5:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1544,"name":"uint8","nodeType":"ElementaryTypeName","src":"4389:5:8","typeDescriptions":{}}},"id":1555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4389:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4379:42:8"},{"expression":{"arguments":[{"id":1558,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"4449:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1559,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"4455:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1560,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"4458:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1561,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1534,"src":"4461:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1557,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"4438:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1532,"id":1563,"nodeType":"Return","src":"4431:32:8"}]},"documentation":{"id":1519,"nodeType":"StructuredDocumentation","src":"3916:243:8","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n _Available since v4.3._"},"id":1565,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4173:10:8","nodeType":"FunctionDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1521,"mutability":"mutable","name":"hash","nameLocation":"4192:4:8","nodeType":"VariableDeclaration","scope":1565,"src":"4184:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1520,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4184:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1523,"mutability":"mutable","name":"r","nameLocation":"4206:1:8","nodeType":"VariableDeclaration","scope":1565,"src":"4198:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4198:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1525,"mutability":"mutable","name":"vs","nameLocation":"4217:2:8","nodeType":"VariableDeclaration","scope":1565,"src":"4209:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1524,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4209:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4183:37:8"},"returnParameters":{"id":1532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1565,"src":"4244:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1527,"name":"address","nodeType":"ElementaryTypeName","src":"4244:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1565,"src":"4253:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1530,"nodeType":"UserDefinedTypeName","pathNode":{"id":1529,"name":"RecoverError","nameLocations":["4253:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"4253:12:8"},"referencedDeclaration":1401,"src":"4253:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"4243:23:8"},"scope":1757,"src":"4164:306:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1594,"nodeType":"Block","src":"4721:136:8","statements":[{"assignments":[1578,1581],"declarations":[{"constant":false,"id":1578,"mutability":"mutable","name":"recovered","nameLocation":"4740:9:8","nodeType":"VariableDeclaration","scope":1594,"src":"4732:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1577,"name":"address","nodeType":"ElementaryTypeName","src":"4732:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"error","nameLocation":"4764:5:8","nodeType":"VariableDeclaration","scope":1594,"src":"4751:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1580,"nodeType":"UserDefinedTypeName","pathNode":{"id":1579,"name":"RecoverError","nameLocations":["4751:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"4751:12:8"},"referencedDeclaration":1401,"src":"4751:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1587,"initialValue":{"arguments":[{"id":1583,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"4784:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1584,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1570,"src":"4790:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1585,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1572,"src":"4793:2:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1582,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1565,"src":"4773:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4773:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"4731:65:8"},{"expression":{"arguments":[{"id":1589,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"4818:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1588,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"4806:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4806:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1591,"nodeType":"ExpressionStatement","src":"4806:18:8"},{"expression":{"id":1592,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"4841:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1576,"id":1593,"nodeType":"Return","src":"4834:16:8"}]},"documentation":{"id":1566,"nodeType":"StructuredDocumentation","src":"4476:154:8","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n _Available since v4.2._"},"id":1595,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4644:7:8","nodeType":"FunctionDefinition","parameters":{"id":1573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1568,"mutability":"mutable","name":"hash","nameLocation":"4660:4:8","nodeType":"VariableDeclaration","scope":1595,"src":"4652:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4652:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1570,"mutability":"mutable","name":"r","nameLocation":"4674:1:8","nodeType":"VariableDeclaration","scope":1595,"src":"4666:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4666:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1572,"mutability":"mutable","name":"vs","nameLocation":"4685:2:8","nodeType":"VariableDeclaration","scope":1595,"src":"4677:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1571,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4677:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4651:37:8"},"returnParameters":{"id":1576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1595,"src":"4712:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"4712:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4711:9:8"},"scope":1757,"src":"4635:222:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1658,"nodeType":"Block","src":"5142:1345:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1614,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"6038:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6030:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1612,"name":"uint256","nodeType":"ElementaryTypeName","src":"6030:7:8","typeDescriptions":{}}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6030:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":1616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6043:66:8","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6030:79:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1627,"nodeType":"IfStatement","src":"6026:161:8","trueBody":{"id":1626,"nodeType":"Block","src":"6111:76:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6141:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6133:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1618,"name":"address","nodeType":"ElementaryTypeName","src":"6133:7:8","typeDescriptions":{}}},"id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6133:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1622,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6145:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6158:17:8","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":1399,"src":"6145:30:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6132:44:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1625,"nodeType":"Return","src":"6125:51:8"}]}},{"assignments":[1629],"declarations":[{"constant":false,"id":1629,"mutability":"mutable","name":"signer","nameLocation":"6289:6:8","nodeType":"VariableDeclaration","scope":1658,"src":"6281:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1628,"name":"address","nodeType":"ElementaryTypeName","src":"6281:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1636,"initialValue":{"arguments":[{"id":1631,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1598,"src":"6308:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1632,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1600,"src":"6314:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1633,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"6317:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1634,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"6320:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1630,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6298:9:8","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6281:41:8"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1637,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"6336:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6354:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6346:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"6346:7:8","typeDescriptions":{}}},"id":1641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6346:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6336:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1652,"nodeType":"IfStatement","src":"6332:101:8","trueBody":{"id":1651,"nodeType":"Block","src":"6358:75:8","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6388:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6380:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1643,"name":"address","nodeType":"ElementaryTypeName","src":"6380:7:8","typeDescriptions":{}}},"id":1646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6380:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1647,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6392:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6405:16:8","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"6392:29:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1649,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6379:43:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1650,"nodeType":"Return","src":"6372:50:8"}]}},{"expression":{"components":[{"id":1653,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"6451:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1654,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"6459:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$1401_$","typeString":"type(enum ECDSAUpgradeable.RecoverError)"}},"id":1655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6472:7:8","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":1396,"src":"6459:20:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"id":1656,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6450:30:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"functionReturnParameters":1611,"id":1657,"nodeType":"Return","src":"6443:37:8"}]},"documentation":{"id":1596,"nodeType":"StructuredDocumentation","src":"4863:163:8","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately.\n _Available since v4.3._"},"id":1659,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5040:10:8","nodeType":"FunctionDefinition","parameters":{"id":1605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1598,"mutability":"mutable","name":"hash","nameLocation":"5059:4:8","nodeType":"VariableDeclaration","scope":1659,"src":"5051:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1597,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5051:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1600,"mutability":"mutable","name":"v","nameLocation":"5071:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5065:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1599,"name":"uint8","nodeType":"ElementaryTypeName","src":"5065:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1602,"mutability":"mutable","name":"r","nameLocation":"5082:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5074:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5074:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1604,"mutability":"mutable","name":"s","nameLocation":"5093:1:8","nodeType":"VariableDeclaration","scope":1659,"src":"5085:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5085:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5050:45:8"},"returnParameters":{"id":1611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1659,"src":"5119:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1606,"name":"address","nodeType":"ElementaryTypeName","src":"5119:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1659,"src":"5128:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1609,"nodeType":"UserDefinedTypeName","pathNode":{"id":1608,"name":"RecoverError","nameLocations":["5128:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"5128:12:8"},"referencedDeclaration":1401,"src":"5128:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"src":"5118:23:8"},"scope":1757,"src":"5031:1456:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1691,"nodeType":"Block","src":"6714:138:8","statements":[{"assignments":[1674,1677],"declarations":[{"constant":false,"id":1674,"mutability":"mutable","name":"recovered","nameLocation":"6733:9:8","nodeType":"VariableDeclaration","scope":1691,"src":"6725:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1673,"name":"address","nodeType":"ElementaryTypeName","src":"6725:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"error","nameLocation":"6757:5:8","nodeType":"VariableDeclaration","scope":1691,"src":"6744:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"},"typeName":{"id":1676,"nodeType":"UserDefinedTypeName","pathNode":{"id":1675,"name":"RecoverError","nameLocations":["6744:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":1401,"src":"6744:12:8"},"referencedDeclaration":1401,"src":"6744:12:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}},"visibility":"internal"}],"id":1684,"initialValue":{"arguments":[{"id":1679,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1662,"src":"6777:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1680,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"6783:1:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1681,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"6786:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1682,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"6789:1:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1678,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[1491,1565,1659],"referencedDeclaration":1659,"src":"6766:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSAUpgradeable.RecoverError)"}},"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6766:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$1401_$","typeString":"tuple(address,enum ECDSAUpgradeable.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"6724:67:8"},{"expression":{"arguments":[{"id":1686,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"6813:5:8","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$1401","typeString":"enum ECDSAUpgradeable.RecoverError"}],"id":1685,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1445,"src":"6801:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$1401_$returns$__$","typeString":"function (enum ECDSAUpgradeable.RecoverError) pure"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6801:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1688,"nodeType":"ExpressionStatement","src":"6801:18:8"},{"expression":{"id":1689,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"6836:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1672,"id":1690,"nodeType":"Return","src":"6829:16:8"}]},"documentation":{"id":1660,"nodeType":"StructuredDocumentation","src":"6493:122:8","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":1692,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6629:7:8","nodeType":"FunctionDefinition","parameters":{"id":1669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1662,"mutability":"mutable","name":"hash","nameLocation":"6645:4:8","nodeType":"VariableDeclaration","scope":1692,"src":"6637:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6637:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1664,"mutability":"mutable","name":"v","nameLocation":"6657:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6651:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1663,"name":"uint8","nodeType":"ElementaryTypeName","src":"6651:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1666,"mutability":"mutable","name":"r","nameLocation":"6668:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6660:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6660:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1668,"mutability":"mutable","name":"s","nameLocation":"6679:1:8","nodeType":"VariableDeclaration","scope":1692,"src":"6671:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6671:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6636:45:8"},"returnParameters":{"id":1672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1692,"src":"6705:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"6705:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6704:9:8"},"scope":1757,"src":"6620:232:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1701,"nodeType":"Block","src":"7228:310:8","statements":[{"AST":{"nodeType":"YulBlock","src":"7384:148:8","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7405:4:8","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nodeType":"YulLiteral","src":"7411:34:8","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7398:6:8"},"nodeType":"YulFunctionCall","src":"7398:48:8"},"nodeType":"YulExpressionStatement","src":"7398:48:8"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7466:4:8","type":"","value":"0x1c"},{"name":"hash","nodeType":"YulIdentifier","src":"7472:4:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7459:6:8"},"nodeType":"YulFunctionCall","src":"7459:18:8"},"nodeType":"YulExpressionStatement","src":"7459:18:8"},{"nodeType":"YulAssignment","src":"7490:32:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7511:4:8","type":"","value":"0x00"},{"kind":"number","nodeType":"YulLiteral","src":"7517:4:8","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"7501:9:8"},"nodeType":"YulFunctionCall","src":"7501:21:8"},"variableNames":[{"name":"message","nodeType":"YulIdentifier","src":"7490:7:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1695,"isOffset":false,"isSlot":false,"src":"7472:4:8","valueSize":1},{"declaration":1698,"isOffset":false,"isSlot":false,"src":"7490:7:8","valueSize":1}],"id":1700,"nodeType":"InlineAssembly","src":"7375:157:8"}]},"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"6858:279:8","text":" @dev Returns an Ethereum Signed Message, created from a `hash`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":1702,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7151:22:8","nodeType":"FunctionDefinition","parameters":{"id":1696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1695,"mutability":"mutable","name":"hash","nameLocation":"7182:4:8","nodeType":"VariableDeclaration","scope":1702,"src":"7174:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7174:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7173:14:8"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1698,"mutability":"mutable","name":"message","nameLocation":"7219:7:8","nodeType":"VariableDeclaration","scope":1702,"src":"7211:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7211:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7210:17:8"},"scope":1757,"src":"7142:396:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1723,"nodeType":"Block","src":"7903:127:8","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":1713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7947:32:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"expression":{"id":1716,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"8009:1:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8011:6:8","memberName":"length","nodeType":"MemberAccess","src":"8009:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1714,"name":"StringsUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1391,"src":"7981:18:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StringsUpgradeable_$1391_$","typeString":"type(library StringsUpgradeable)"}},"id":1715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8000:8:8","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1221,"src":"7981:27:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7981:37:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1719,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"8020:1:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1711,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7930:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7934:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"7930:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7930:92:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1710,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7920:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7920:103:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1709,"id":1722,"nodeType":"Return","src":"7913:110:8"}]},"documentation":{"id":1703,"nodeType":"StructuredDocumentation","src":"7544:274:8","text":" @dev Returns an Ethereum Signed Message, created from `s`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":1724,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7832:22:8","nodeType":"FunctionDefinition","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1705,"mutability":"mutable","name":"s","nameLocation":"7868:1:8","nodeType":"VariableDeclaration","scope":1724,"src":"7855:14:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1704,"name":"bytes","nodeType":"ElementaryTypeName","src":"7855:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7854:16:8"},"returnParameters":{"id":1709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1724,"src":"7894:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7894:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7893:9:8"},"scope":1757,"src":"7823:207:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1735,"nodeType":"Block","src":"8476:290:8","statements":[{"AST":{"nodeType":"YulBlock","src":"8538:222:8","statements":[{"nodeType":"YulVariableDeclaration","src":"8552:22:8","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8569:4:8","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8563:5:8"},"nodeType":"YulFunctionCall","src":"8563:11:8"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"8556:3:8","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8594:3:8"},{"hexValue":"1901","kind":"string","nodeType":"YulLiteral","src":"8599:10:8","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8587:6:8"},"nodeType":"YulFunctionCall","src":"8587:23:8"},"nodeType":"YulExpressionStatement","src":"8587:23:8"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8634:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8639:4:8","type":"","value":"0x02"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8630:3:8"},"nodeType":"YulFunctionCall","src":"8630:14:8"},{"name":"domainSeparator","nodeType":"YulIdentifier","src":"8646:15:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8623:6:8"},"nodeType":"YulFunctionCall","src":"8623:39:8"},"nodeType":"YulExpressionStatement","src":"8623:39:8"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8686:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8691:4:8","type":"","value":"0x22"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8682:3:8"},"nodeType":"YulFunctionCall","src":"8682:14:8"},{"name":"structHash","nodeType":"YulIdentifier","src":"8698:10:8"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8675:6:8"},"nodeType":"YulFunctionCall","src":"8675:34:8"},"nodeType":"YulExpressionStatement","src":"8675:34:8"},{"nodeType":"YulAssignment","src":"8722:28:8","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8740:3:8"},{"kind":"number","nodeType":"YulLiteral","src":"8745:4:8","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"8730:9:8"},"nodeType":"YulFunctionCall","src":"8730:20:8"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"8722:4:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1732,"isOffset":false,"isSlot":false,"src":"8722:4:8","valueSize":1},{"declaration":1727,"isOffset":false,"isSlot":false,"src":"8646:15:8","valueSize":1},{"declaration":1729,"isOffset":false,"isSlot":false,"src":"8698:10:8","valueSize":1}],"id":1734,"nodeType":"InlineAssembly","src":"8529:231:8"}]},"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"8036:328:8","text":" @dev Returns an Ethereum Signed Typed Data, created from a\n `domainSeparator` and a `structHash`. This produces hash corresponding\n to the one signed with the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n JSON-RPC method as part of EIP-712.\n See {recover}."},"id":1736,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"8378:15:8","nodeType":"FunctionDefinition","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"domainSeparator","nameLocation":"8402:15:8","nodeType":"VariableDeclaration","scope":1736,"src":"8394:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1726,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8394:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"structHash","nameLocation":"8427:10:8","nodeType":"VariableDeclaration","scope":1736,"src":"8419:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8419:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8393:45:8"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1732,"mutability":"mutable","name":"data","nameLocation":"8470:4:8","nodeType":"VariableDeclaration","scope":1736,"src":"8462:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8462:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8461:14:8"},"scope":1757,"src":"8369:397:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1755,"nodeType":"Block","src":"9081:80:8","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":1749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9125:10:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":1750,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"9137:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1751,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"9148:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1747,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9108:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9112:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"9108:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9108:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1746,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9098:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9098:56:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1745,"id":1754,"nodeType":"Return","src":"9091:63:8"}]},"documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"8772:193:8","text":" @dev Returns an Ethereum Signed Data with intended validator, created from a\n `validator` and `data` according to the version 0 of EIP-191.\n See {recover}."},"id":1756,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"8979:31:8","nodeType":"FunctionDefinition","parameters":{"id":1742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1739,"mutability":"mutable","name":"validator","nameLocation":"9019:9:8","nodeType":"VariableDeclaration","scope":1756,"src":"9011:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1738,"name":"address","nodeType":"ElementaryTypeName","src":"9011:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1741,"mutability":"mutable","name":"data","nameLocation":"9043:4:8","nodeType":"VariableDeclaration","scope":1756,"src":"9030:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1740,"name":"bytes","nodeType":"ElementaryTypeName","src":"9030:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9010:38:8"},"returnParameters":{"id":1745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1756,"src":"9072:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1743,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9072:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9071:9:8"},"scope":1757,"src":"8970:191:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1758,"src":"380:8783:8","usedErrors":[]}],"src":"112:9052:8"},"id":8},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[2623]},"id":2624,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1759,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"MathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1760,"nodeType":"StructuredDocumentation","src":"128:73:9","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2623,"linearizedBaseContracts":[2623],"name":"MathUpgradeable","nameLocation":"210:15:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"MathUpgradeable.Rounding","id":1764,"members":[{"id":1761,"name":"Down","nameLocation":"256:4:9","nodeType":"EnumValue","src":"256:4:9"},{"id":1762,"name":"Up","nameLocation":"298:2:9","nodeType":"EnumValue","src":"298:2:9"},{"id":1763,"name":"Zero","nameLocation":"329:4:9","nodeType":"EnumValue","src":"329:4:9"}],"name":"Rounding","nameLocation":"237:8:9","nodeType":"EnumDefinition","src":"232:122:9"},{"body":{"id":1781,"nodeType":"Block","src":"491:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1774,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"508:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1775,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1769,"src":"512:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"508:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1778,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1769,"src":"520:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"508:13:9","trueExpression":{"id":1777,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"516:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1773,"id":1780,"nodeType":"Return","src":"501:20:9"}]},"documentation":{"id":1765,"nodeType":"StructuredDocumentation","src":"360:59:9","text":" @dev Returns the largest of two numbers."},"id":1782,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"433:3:9","nodeType":"FunctionDefinition","parameters":{"id":1770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1767,"mutability":"mutable","name":"a","nameLocation":"445:1:9","nodeType":"VariableDeclaration","scope":1782,"src":"437:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1766,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1769,"mutability":"mutable","name":"b","nameLocation":"456:1:9","nodeType":"VariableDeclaration","scope":1782,"src":"448:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1768,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"436:22:9"},"returnParameters":{"id":1773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1782,"src":"482:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1771,"name":"uint256","nodeType":"ElementaryTypeName","src":"482:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"481:9:9"},"scope":2623,"src":"424:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1799,"nodeType":"Block","src":"666:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1792,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"683:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1793,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"687:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"683:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1796,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"695:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"683:13:9","trueExpression":{"id":1795,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"691:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1791,"id":1798,"nodeType":"Return","src":"676:20:9"}]},"documentation":{"id":1783,"nodeType":"StructuredDocumentation","src":"534:60:9","text":" @dev Returns the smallest of two numbers."},"id":1800,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"608:3:9","nodeType":"FunctionDefinition","parameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1785,"mutability":"mutable","name":"a","nameLocation":"620:1:9","nodeType":"VariableDeclaration","scope":1800,"src":"612:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1784,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1787,"mutability":"mutable","name":"b","nameLocation":"631:1:9","nodeType":"VariableDeclaration","scope":1800,"src":"623:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1786,"name":"uint256","nodeType":"ElementaryTypeName","src":"623:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"611:22:9"},"returnParameters":{"id":1791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1800,"src":"657:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1789,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"656:9:9"},"scope":2623,"src":"599:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1822,"nodeType":"Block","src":"887:82:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1810,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"942:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1811,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"946:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"942:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1813,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"941:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1814,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"952:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1815,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"956:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"951:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"961:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"951:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1809,"id":1821,"nodeType":"Return","src":"934:28:9"}]},"documentation":{"id":1801,"nodeType":"StructuredDocumentation","src":"709:102:9","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":1823,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"825:7:9","nodeType":"FunctionDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1803,"mutability":"mutable","name":"a","nameLocation":"841:1:9","nodeType":"VariableDeclaration","scope":1823,"src":"833:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1802,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1805,"mutability":"mutable","name":"b","nameLocation":"852:1:9","nodeType":"VariableDeclaration","scope":1823,"src":"844:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"844:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"832:22:9"},"returnParameters":{"id":1809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1808,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1823,"src":"878:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1807,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"877:9:9"},"scope":2623,"src":"816:153:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1847,"nodeType":"Block","src":"1239:123:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1833,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"1327:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1332:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1327:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1837,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1826,"src":"1341:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1341:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1840,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1340:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1841,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"1350:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1354:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1340:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1327:28:9","trueExpression":{"hexValue":"30","id":1836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1336:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1832,"id":1846,"nodeType":"Return","src":"1320:35:9"}]},"documentation":{"id":1824,"nodeType":"StructuredDocumentation","src":"975:188:9","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":1848,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1177:7:9","nodeType":"FunctionDefinition","parameters":{"id":1829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"a","nameLocation":"1193:1:9","nodeType":"VariableDeclaration","scope":1848,"src":"1185:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1825,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1828,"mutability":"mutable","name":"b","nameLocation":"1204:1:9","nodeType":"VariableDeclaration","scope":1848,"src":"1196:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1196:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1184:22:9"},"returnParameters":{"id":1832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1848,"src":"1230:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1830,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:9"},"scope":2623,"src":"1168:194:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1970,"nodeType":"Block","src":"1776:4115:9","statements":[{"id":1969,"nodeType":"UncheckedBlock","src":"1786:4099:9","statements":[{"assignments":[1861],"declarations":[{"constant":false,"id":1861,"mutability":"mutable","name":"prod0","nameLocation":"2115:5:9","nodeType":"VariableDeclaration","scope":1969,"src":"2107:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1860,"name":"uint256","nodeType":"ElementaryTypeName","src":"2107:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1862,"nodeType":"VariableDeclarationStatement","src":"2107:13:9"},{"assignments":[1864],"declarations":[{"constant":false,"id":1864,"mutability":"mutable","name":"prod1","nameLocation":"2187:5:9","nodeType":"VariableDeclaration","scope":1969,"src":"2179:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1863,"name":"uint256","nodeType":"ElementaryTypeName","src":"2179:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1865,"nodeType":"VariableDeclarationStatement","src":"2179:13:9"},{"AST":{"nodeType":"YulBlock","src":"2259:157:9","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:30:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2294:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2297:1:9"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2304:1:9","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2300:3:9"},"nodeType":"YulFunctionCall","src":"2300:6:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2287:6:9"},"nodeType":"YulFunctionCall","src":"2287:20:9"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2281:2:9","type":""}]},{"nodeType":"YulAssignment","src":"2324:18:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2337:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2340:1:9"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2333:3:9"},"nodeType":"YulFunctionCall","src":"2333:9:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2324:5:9"}]},{"nodeType":"YulAssignment","src":"2359:43:9","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2376:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2380:5:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2372:3:9"},"nodeType":"YulFunctionCall","src":"2372:14:9"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2391:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2395:5:9"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2388:2:9"},"nodeType":"YulFunctionCall","src":"2388:13:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2368:3:9"},"nodeType":"YulFunctionCall","src":"2368:34:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2359:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2324:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2380:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"2395:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"2359:5:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"2294:1:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"2337:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"2297:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"2340:1:9","valueSize":1}],"id":1866,"nodeType":"InlineAssembly","src":"2250:166:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1867,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2497:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2506:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2497:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1875,"nodeType":"IfStatement","src":"2493:368:9","trueBody":{"id":1874,"nodeType":"Block","src":"2509:352:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1870,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"2827:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1871,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"2835:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2827:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1859,"id":1873,"nodeType":"Return","src":"2820:26:9"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1877,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"2971:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1878,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2985:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2971:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":1880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2992:23:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":1876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2963:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2963:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1882,"nodeType":"ExpressionStatement","src":"2963:53:9"},{"assignments":[1884],"declarations":[{"constant":false,"id":1884,"mutability":"mutable","name":"remainder","nameLocation":"3280:9:9","nodeType":"VariableDeclaration","scope":1969,"src":"3272:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1883,"name":"uint256","nodeType":"ElementaryTypeName","src":"3272:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1885,"nodeType":"VariableDeclarationStatement","src":"3272:17:9"},{"AST":{"nodeType":"YulBlock","src":"3312:291:9","statements":[{"nodeType":"YulAssignment","src":"3381:38:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3401:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"3404:1:9"},{"name":"denominator","nodeType":"YulIdentifier","src":"3407:11:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3394:6:9"},"nodeType":"YulFunctionCall","src":"3394:25:9"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3381:9:9"}]},{"nodeType":"YulAssignment","src":"3501:41:9","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3514:5:9"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3524:9:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"3535:5:9"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3521:2:9"},"nodeType":"YulFunctionCall","src":"3521:20:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3510:3:9"},"nodeType":"YulFunctionCall","src":"3510:32:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3501:5:9"}]},{"nodeType":"YulAssignment","src":"3559:30:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3572:5:9"},{"name":"remainder","nodeType":"YulIdentifier","src":"3579:9:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3568:3:9"},"nodeType":"YulFunctionCall","src":"3568:21:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3559:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1855,"isOffset":false,"isSlot":false,"src":"3407:11:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3535:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3559:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"3572:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"3501:5:9","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"3514:5:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3381:9:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3524:9:9","valueSize":1},{"declaration":1884,"isOffset":false,"isSlot":false,"src":"3579:9:9","valueSize":1},{"declaration":1851,"isOffset":false,"isSlot":false,"src":"3401:1:9","valueSize":1},{"declaration":1853,"isOffset":false,"isSlot":false,"src":"3404:1:9","valueSize":1}],"id":1886,"nodeType":"InlineAssembly","src":"3303:300:9"},{"assignments":[1888],"declarations":[{"constant":false,"id":1888,"mutability":"mutable","name":"twos","nameLocation":"3918:4:9","nodeType":"VariableDeclaration","scope":1969,"src":"3910:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1887,"name":"uint256","nodeType":"ElementaryTypeName","src":"3910:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1896,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1889,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"3925:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3940:12:9","subExpression":{"id":1890,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"3941:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3955:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3940:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3939:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3925:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3910:47:9"},{"AST":{"nodeType":"YulBlock","src":"3980:362:9","statements":[{"nodeType":"YulAssignment","src":"4045:37:9","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4064:11:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4077:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4060:3:9"},"nodeType":"YulFunctionCall","src":"4060:22:9"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4045:11:9"}]},{"nodeType":"YulAssignment","src":"4149:25:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4162:5:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4169:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4158:3:9"},"nodeType":"YulFunctionCall","src":"4158:16:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4149:5:9"}]},{"nodeType":"YulAssignment","src":"4289:39:9","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4309:1:9","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4312:4:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4305:3:9"},"nodeType":"YulFunctionCall","src":"4305:12:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4319:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4301:3:9"},"nodeType":"YulFunctionCall","src":"4301:23:9"},{"kind":"number","nodeType":"YulLiteral","src":"4326:1:9","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4297:3:9"},"nodeType":"YulFunctionCall","src":"4297:31:9"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4289:4:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1855,"isOffset":false,"isSlot":false,"src":"4045:11:9","valueSize":1},{"declaration":1855,"isOffset":false,"isSlot":false,"src":"4064:11:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"4149:5:9","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"4162:5:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4077:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4169:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4289:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4312:4:9","valueSize":1},{"declaration":1888,"isOffset":false,"isSlot":false,"src":"4319:4:9","valueSize":1}],"id":1897,"nodeType":"InlineAssembly","src":"3971:371:9"},{"expression":{"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1898,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"4408:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1899,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"4417:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1900,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1888,"src":"4425:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4417:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4408:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1903,"nodeType":"ExpressionStatement","src":"4408:21:9"},{"assignments":[1905],"declarations":[{"constant":false,"id":1905,"mutability":"mutable","name":"inverse","nameLocation":"4755:7:9","nodeType":"VariableDeclaration","scope":1969,"src":"4747:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1904,"name":"uint256","nodeType":"ElementaryTypeName","src":"4747:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1912,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4766:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1907,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"4770:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4766:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4765:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4785:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4765:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4747:39:9"},{"expression":{"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1913,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5003:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5014:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1915,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5018:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1916,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5032:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5018:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5014:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1920,"nodeType":"ExpressionStatement","src":"5003:36:9"},{"expression":{"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1921,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5072:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5083:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1923,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5087:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1924,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5101:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5087:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5083:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1928,"nodeType":"ExpressionStatement","src":"5072:36:9"},{"expression":{"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1929,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5142:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5153:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1931,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5157:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1932,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5157:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5153:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1936,"nodeType":"ExpressionStatement","src":"5142:36:9"},{"expression":{"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1937,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5212:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5223:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1939,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5227:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1940,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5241:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5227:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5223:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1944,"nodeType":"ExpressionStatement","src":"5212:36:9"},{"expression":{"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1945,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5282:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5293:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1947,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5297:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1948,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5311:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5297:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5293:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1952,"nodeType":"ExpressionStatement","src":"5282:36:9"},{"expression":{"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1953,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5353:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5364:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1955,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"5368:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1956,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5382:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5368:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5364:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1960,"nodeType":"ExpressionStatement","src":"5353:36:9"},{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1961,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"5823:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1962,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"5832:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1963,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"5840:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5832:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5823:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"5823:24:9"},{"expression":{"id":1967,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"5868:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1859,"id":1968,"nodeType":"Return","src":"5861:13:9"}]}]},"documentation":{"id":1849,"nodeType":"StructuredDocumentation","src":"1368:305:9","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1971,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1687:6:9","nodeType":"FunctionDefinition","parameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"x","nameLocation":"1702:1:9","nodeType":"VariableDeclaration","scope":1971,"src":"1694:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1853,"mutability":"mutable","name":"y","nameLocation":"1713:1:9","nodeType":"VariableDeclaration","scope":1971,"src":"1705:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1855,"mutability":"mutable","name":"denominator","nameLocation":"1724:11:9","nodeType":"VariableDeclaration","scope":1971,"src":"1716:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1693:43:9"},"returnParameters":{"id":1859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1858,"mutability":"mutable","name":"result","nameLocation":"1768:6:9","nodeType":"VariableDeclaration","scope":1971,"src":"1760:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1857,"name":"uint256","nodeType":"ElementaryTypeName","src":"1760:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:16:9"},"scope":2623,"src":"1678:4213:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2014,"nodeType":"Block","src":"6133:189:9","statements":[{"assignments":[1987],"declarations":[{"constant":false,"id":1987,"mutability":"mutable","name":"result","nameLocation":"6151:6:9","nodeType":"VariableDeclaration","scope":2014,"src":"6143:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1986,"name":"uint256","nodeType":"ElementaryTypeName","src":"6143:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1993,"initialValue":{"arguments":[{"id":1989,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"6167:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1990,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"6170:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1991,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"6173:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1988,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1971,2015],"referencedDeclaration":1971,"src":"6160:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6160:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6143:42:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1994,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"6199:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1995,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"6211:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":1996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6220:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"6211:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"6199:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1999,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"6233:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2000,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"6236:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2001,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"6239:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1998,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"6226:6:9","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6226:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6254:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6226:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6199:56:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2011,"nodeType":"IfStatement","src":"6195:98:9","trueBody":{"id":2010,"nodeType":"Block","src":"6257:36:9","statements":[{"expression":{"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2006,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"6271:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6281:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6271:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2009,"nodeType":"ExpressionStatement","src":"6271:11:9"}]}},{"expression":{"id":2012,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"6309:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1985,"id":2013,"nodeType":"Return","src":"6302:13:9"}]},"documentation":{"id":1972,"nodeType":"StructuredDocumentation","src":"5897:121:9","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2015,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6032:6:9","nodeType":"FunctionDefinition","parameters":{"id":1982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1974,"mutability":"mutable","name":"x","nameLocation":"6047:1:9","nodeType":"VariableDeclaration","scope":2015,"src":"6039:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1973,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1976,"mutability":"mutable","name":"y","nameLocation":"6058:1:9","nodeType":"VariableDeclaration","scope":2015,"src":"6050:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1975,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1978,"mutability":"mutable","name":"denominator","nameLocation":"6069:11:9","nodeType":"VariableDeclaration","scope":2015,"src":"6061:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"6061:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1981,"mutability":"mutable","name":"rounding","nameLocation":"6091:8:9","nodeType":"VariableDeclaration","scope":2015,"src":"6082:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":1980,"nodeType":"UserDefinedTypeName","pathNode":{"id":1979,"name":"Rounding","nameLocations":["6082:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"6082:8:9"},"referencedDeclaration":1764,"src":"6082:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"6038:62:9"},"returnParameters":{"id":1985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"6124:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1983,"name":"uint256","nodeType":"ElementaryTypeName","src":"6124:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6123:9:9"},"scope":2623,"src":"6023:299:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2126,"nodeType":"Block","src":"6598:1585:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2023,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"6612:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6617:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6612:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2029,"nodeType":"IfStatement","src":"6608:45:9","trueBody":{"id":2028,"nodeType":"Block","src":"6620:33:9","statements":[{"expression":{"hexValue":"30","id":2026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6641:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2022,"id":2027,"nodeType":"Return","src":"6634:8:9"}]}},{"assignments":[2031],"declarations":[{"constant":false,"id":2031,"mutability":"mutable","name":"result","nameLocation":"7340:6:9","nodeType":"VariableDeclaration","scope":2126,"src":"7332:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"7332:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2040,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7349:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2034,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7360:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2033,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2295,2331],"referencedDeclaration":2295,"src":"7355:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7355:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7355:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2038,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7354:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7349:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7332:36:9"},{"id":2125,"nodeType":"UncheckedBlock","src":"7769:408:9","statements":[{"expression":{"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7793:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2042,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7803:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2043,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7812:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2044,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7816:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7812:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7803:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2047,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7827:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7802:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7793:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2051,"nodeType":"ExpressionStatement","src":"7793:35:9"},{"expression":{"id":2061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2052,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7842:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2053,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7852:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2054,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7861:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2055,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7865:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7861:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7852:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7851:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7876:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7851:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7842:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2062,"nodeType":"ExpressionStatement","src":"7842:35:9"},{"expression":{"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2063,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7891:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2064,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7901:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2065,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7910:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2066,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7914:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7910:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7901:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7900:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7925:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7900:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7891:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2073,"nodeType":"ExpressionStatement","src":"7891:35:9"},{"expression":{"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2074,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7940:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7950:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2076,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"7959:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2077,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7963:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7959:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7950:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2080,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7949:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7974:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7949:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7940:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2084,"nodeType":"ExpressionStatement","src":"7940:35:9"},{"expression":{"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2085,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7989:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2086,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7999:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2087,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8008:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2088,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8012:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8008:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7999:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7998:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8023:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7998:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7989:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2095,"nodeType":"ExpressionStatement","src":"7989:35:9"},{"expression":{"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2096,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8038:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2097,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8048:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2098,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8057:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2099,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8061:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8057:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8048:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8047:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8072:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8047:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8038:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2106,"nodeType":"ExpressionStatement","src":"8038:35:9"},{"expression":{"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2107,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8087:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8097:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2109,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8106:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2110,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8110:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8106:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8096:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8121:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8096:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8087:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2117,"nodeType":"ExpressionStatement","src":"8087:35:9"},{"expression":{"arguments":[{"id":2119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8147:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2120,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"8155:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2121,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"8159:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8155:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2118,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"8143:3:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8143:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2022,"id":2124,"nodeType":"Return","src":"8136:30:9"}]}]},"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"6328:208:9","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":2127,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6550:4:9","nodeType":"FunctionDefinition","parameters":{"id":2019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"a","nameLocation":"6563:1:9","nodeType":"VariableDeclaration","scope":2127,"src":"6555:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"6555:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6554:11:9"},"returnParameters":{"id":2022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2127,"src":"6589:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2020,"name":"uint256","nodeType":"ElementaryTypeName","src":"6589:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6588:9:9"},"scope":2623,"src":"6541:1642:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2162,"nodeType":"Block","src":"8359:161:9","statements":[{"id":2161,"nodeType":"UncheckedBlock","src":"8369:145:9","statements":[{"assignments":[2139],"declarations":[{"constant":false,"id":2139,"mutability":"mutable","name":"result","nameLocation":"8401:6:9","nodeType":"VariableDeclaration","scope":2161,"src":"8393:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2138,"name":"uint256","nodeType":"ElementaryTypeName","src":"8393:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2143,"initialValue":{"arguments":[{"id":2141,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"8415:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2140,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2127,2163],"referencedDeclaration":2127,"src":"8410:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8410:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8393:24:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2144,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8438:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2145,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2133,"src":"8448:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2146,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"8460:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8469:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"8460:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"8448:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2149,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8475:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2150,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"8484:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2152,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"8493:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8448:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8501:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8448:54:9","trueExpression":{"hexValue":"31","id":2155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8497:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8447:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8438:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2137,"id":2160,"nodeType":"Return","src":"8431:72:9"}]}]},"documentation":{"id":2128,"nodeType":"StructuredDocumentation","src":"8189:89:9","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":2163,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8292:4:9","nodeType":"FunctionDefinition","parameters":{"id":2134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2130,"mutability":"mutable","name":"a","nameLocation":"8305:1:9","nodeType":"VariableDeclaration","scope":2163,"src":"8297:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2129,"name":"uint256","nodeType":"ElementaryTypeName","src":"8297:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2133,"mutability":"mutable","name":"rounding","nameLocation":"8317:8:9","nodeType":"VariableDeclaration","scope":2163,"src":"8308:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2132,"nodeType":"UserDefinedTypeName","pathNode":{"id":2131,"name":"Rounding","nameLocations":["8308:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"8308:8:9"},"referencedDeclaration":1764,"src":"8308:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"8296:30:9"},"returnParameters":{"id":2137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2163,"src":"8350:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2135,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8349:9:9"},"scope":2623,"src":"8283:237:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2294,"nodeType":"Block","src":"8705:922:9","statements":[{"assignments":[2172],"declarations":[{"constant":false,"id":2172,"mutability":"mutable","name":"result","nameLocation":"8723:6:9","nodeType":"VariableDeclaration","scope":2294,"src":"8715:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"8715:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2174,"initialValue":{"hexValue":"30","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8732:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8715:18:9"},{"id":2291,"nodeType":"UncheckedBlock","src":"8743:855:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2175,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8771:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8780:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8771:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8786:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8771:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2189,"nodeType":"IfStatement","src":"8767:99:9","trueBody":{"id":2188,"nodeType":"Block","src":"8789:77:9","statements":[{"expression":{"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8807:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8817:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8807:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2183,"nodeType":"ExpressionStatement","src":"8807:13:9"},{"expression":{"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"8838:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8848:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8838:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2187,"nodeType":"ExpressionStatement","src":"8838:13:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8883:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8892:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8883:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8897:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8883:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2204,"nodeType":"IfStatement","src":"8879:96:9","trueBody":{"id":2203,"nodeType":"Block","src":"8900:75:9","statements":[{"expression":{"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8918:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8918:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2198,"nodeType":"ExpressionStatement","src":"8918:12:9"},{"expression":{"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"8948:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8958:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8948:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2202,"nodeType":"ExpressionStatement","src":"8948:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"8992:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9001:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8992:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9006:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8992:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2219,"nodeType":"IfStatement","src":"8988:96:9","trueBody":{"id":2218,"nodeType":"Block","src":"9009:75:9","statements":[{"expression":{"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9027:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9037:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9027:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2213,"nodeType":"ExpressionStatement","src":"9027:12:9"},{"expression":{"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2214,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9057:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9067:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9057:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"9057:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9101:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9110:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9101:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9115:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9101:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2234,"nodeType":"IfStatement","src":"9097:96:9","trueBody":{"id":2233,"nodeType":"Block","src":"9118:75:9","statements":[{"expression":{"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2225,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9136:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9146:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9136:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2228,"nodeType":"ExpressionStatement","src":"9136:12:9"},{"expression":{"id":2231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2229,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9166:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9176:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9166:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2232,"nodeType":"ExpressionStatement","src":"9166:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2235,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9210:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9219:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9210:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9223:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9210:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2249,"nodeType":"IfStatement","src":"9206:93:9","trueBody":{"id":2248,"nodeType":"Block","src":"9226:73:9","statements":[{"expression":{"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2240,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9244:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9254:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9244:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2243,"nodeType":"ExpressionStatement","src":"9244:11:9"},{"expression":{"id":2246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2244,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9273:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9283:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9273:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2247,"nodeType":"ExpressionStatement","src":"9273:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9316:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9325:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9316:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9329:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9316:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2264,"nodeType":"IfStatement","src":"9312:93:9","trueBody":{"id":2263,"nodeType":"Block","src":"9332:73:9","statements":[{"expression":{"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9350:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9360:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9350:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2258,"nodeType":"ExpressionStatement","src":"9350:11:9"},{"expression":{"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2259,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9379:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9389:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9379:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2262,"nodeType":"ExpressionStatement","src":"9379:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2265,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9422:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9431:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9422:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9435:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9422:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2279,"nodeType":"IfStatement","src":"9418:93:9","trueBody":{"id":2278,"nodeType":"Block","src":"9438:73:9","statements":[{"expression":{"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9456:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":2271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9466:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9456:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2273,"nodeType":"ExpressionStatement","src":"9456:11:9"},{"expression":{"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2274,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9485:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9495:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9485:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2277,"nodeType":"ExpressionStatement","src":"9485:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2280,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"9528:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9537:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9528:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9541:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9528:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2290,"nodeType":"IfStatement","src":"9524:64:9","trueBody":{"id":2289,"nodeType":"Block","src":"9544:44:9","statements":[{"expression":{"id":2287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2285,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9562:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9572:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9562:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2288,"nodeType":"ExpressionStatement","src":"9562:11:9"}]}}]},{"expression":{"id":2292,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"9614:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2170,"id":2293,"nodeType":"Return","src":"9607:13:9"}]},"documentation":{"id":2164,"nodeType":"StructuredDocumentation","src":"8526:113:9","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8653:4:9","nodeType":"FunctionDefinition","parameters":{"id":2167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2166,"mutability":"mutable","name":"value","nameLocation":"8666:5:9","nodeType":"VariableDeclaration","scope":2295,"src":"8658:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2165,"name":"uint256","nodeType":"ElementaryTypeName","src":"8658:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8657:15:9"},"returnParameters":{"id":2170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2295,"src":"8696:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2168,"name":"uint256","nodeType":"ElementaryTypeName","src":"8696:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8695:9:9"},"scope":2623,"src":"8644:983:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2330,"nodeType":"Block","src":"9860:165:9","statements":[{"id":2329,"nodeType":"UncheckedBlock","src":"9870:149:9","statements":[{"assignments":[2307],"declarations":[{"constant":false,"id":2307,"mutability":"mutable","name":"result","nameLocation":"9902:6:9","nodeType":"VariableDeclaration","scope":2329,"src":"9894:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"9894:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2311,"initialValue":{"arguments":[{"id":2309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9916:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2308,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2295,2331],"referencedDeclaration":2295,"src":"9911:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9911:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9894:28:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2312,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"9943:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2313,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"9953:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2314,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"9965:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9974:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"9965:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"9953:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9980:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2318,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"9985:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9994:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9953:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10006:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9953:54:9","trueExpression":{"hexValue":"31","id":2323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10002:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2326,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9952:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9943:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2305,"id":2328,"nodeType":"Return","src":"9936:72:9"}]}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"9633:142:9","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2331,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9789:4:9","nodeType":"FunctionDefinition","parameters":{"id":2302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"value","nameLocation":"9802:5:9","nodeType":"VariableDeclaration","scope":2331,"src":"9794:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2297,"name":"uint256","nodeType":"ElementaryTypeName","src":"9794:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2301,"mutability":"mutable","name":"rounding","nameLocation":"9818:8:9","nodeType":"VariableDeclaration","scope":2331,"src":"9809:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2300,"nodeType":"UserDefinedTypeName","pathNode":{"id":2299,"name":"Rounding","nameLocations":["9809:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"9809:8:9"},"referencedDeclaration":1764,"src":"9809:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"9793:34:9"},"returnParameters":{"id":2305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2331,"src":"9851:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2303,"name":"uint256","nodeType":"ElementaryTypeName","src":"9851:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9850:9:9"},"scope":2623,"src":"9780:245:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2459,"nodeType":"Block","src":"10212:854:9","statements":[{"assignments":[2340],"declarations":[{"constant":false,"id":2340,"mutability":"mutable","name":"result","nameLocation":"10230:6:9","nodeType":"VariableDeclaration","scope":2459,"src":"10222:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2339,"name":"uint256","nodeType":"ElementaryTypeName","src":"10222:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2342,"initialValue":{"hexValue":"30","id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10239:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10222:18:9"},{"id":2456,"nodeType":"UncheckedBlock","src":"10250:787:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10278:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10287:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10293:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10287:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10278:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2359,"nodeType":"IfStatement","src":"10274:103:9","trueBody":{"id":2358,"nodeType":"Block","src":"10297:80:9","statements":[{"expression":{"id":2352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10315:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10324:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10330:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10324:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10315:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2353,"nodeType":"ExpressionStatement","src":"10315:17:9"},{"expression":{"id":2356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2354,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10350:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10360:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10350:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2357,"nodeType":"ExpressionStatement","src":"10350:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2360,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10394:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10403:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10409:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10403:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10394:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2376,"nodeType":"IfStatement","src":"10390:103:9","trueBody":{"id":2375,"nodeType":"Block","src":"10413:80:9","statements":[{"expression":{"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2365,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10431:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10440:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10446:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10440:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10431:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2370,"nodeType":"ExpressionStatement","src":"10431:17:9"},{"expression":{"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2371,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10466:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10476:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10466:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2374,"nodeType":"ExpressionStatement","src":"10466:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10510:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10519:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10525:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10519:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10510:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2393,"nodeType":"IfStatement","src":"10506:103:9","trueBody":{"id":2392,"nodeType":"Block","src":"10529:80:9","statements":[{"expression":{"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2382,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10547:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10556:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10562:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10556:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10547:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2387,"nodeType":"ExpressionStatement","src":"10547:17:9"},{"expression":{"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2388,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10582:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10592:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10582:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2391,"nodeType":"ExpressionStatement","src":"10582:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10626:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10635:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10641:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10635:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10626:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2410,"nodeType":"IfStatement","src":"10622:100:9","trueBody":{"id":2409,"nodeType":"Block","src":"10644:78:9","statements":[{"expression":{"id":2403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10662:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10671:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10677:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10671:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10662:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2404,"nodeType":"ExpressionStatement","src":"10662:16:9"},{"expression":{"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2405,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10696:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10706:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10696:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2408,"nodeType":"ExpressionStatement","src":"10696:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10739:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10754:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10748:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10739:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2427,"nodeType":"IfStatement","src":"10735:100:9","trueBody":{"id":2426,"nodeType":"Block","src":"10757:78:9","statements":[{"expression":{"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10775:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10784:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10790:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10784:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10775:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2421,"nodeType":"ExpressionStatement","src":"10775:16:9"},{"expression":{"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2422,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10809:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10819:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10809:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2425,"nodeType":"ExpressionStatement","src":"10809:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10852:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10861:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10867:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10861:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10852:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2444,"nodeType":"IfStatement","src":"10848:100:9","trueBody":{"id":2443,"nodeType":"Block","src":"10870:78:9","statements":[{"expression":{"id":2437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2433,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10888:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10897:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10897:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10888:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2438,"nodeType":"ExpressionStatement","src":"10888:16:9"},{"expression":{"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2439,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"10922:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10932:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10922:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2442,"nodeType":"ExpressionStatement","src":"10922:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"10965:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10974:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10980:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10974:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10965:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2455,"nodeType":"IfStatement","src":"10961:66:9","trueBody":{"id":2454,"nodeType":"Block","src":"10983:44:9","statements":[{"expression":{"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2450,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"11001:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11011:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11001:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2453,"nodeType":"ExpressionStatement","src":"11001:11:9"}]}}]},{"expression":{"id":2457,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"11053:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2338,"id":2458,"nodeType":"Return","src":"11046:13:9"}]},"documentation":{"id":2332,"nodeType":"StructuredDocumentation","src":"10031:114:9","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2460,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10159:5:9","nodeType":"FunctionDefinition","parameters":{"id":2335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2334,"mutability":"mutable","name":"value","nameLocation":"10173:5:9","nodeType":"VariableDeclaration","scope":2460,"src":"10165:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2333,"name":"uint256","nodeType":"ElementaryTypeName","src":"10165:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10164:15:9"},"returnParameters":{"id":2338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2460,"src":"10203:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2336,"name":"uint256","nodeType":"ElementaryTypeName","src":"10203:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10202:9:9"},"scope":2623,"src":"10150:916:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2495,"nodeType":"Block","src":"11301:167:9","statements":[{"id":2494,"nodeType":"UncheckedBlock","src":"11311:151:9","statements":[{"assignments":[2472],"declarations":[{"constant":false,"id":2472,"mutability":"mutable","name":"result","nameLocation":"11343:6:9","nodeType":"VariableDeclaration","scope":2494,"src":"11335:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2471,"name":"uint256","nodeType":"ElementaryTypeName","src":"11335:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2476,"initialValue":{"arguments":[{"id":2474,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"11358:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2473,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2460,2496],"referencedDeclaration":2460,"src":"11352:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11352:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11335:29:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2477,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"11385:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2478,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2466,"src":"11395:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2479,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"11407:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11416:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"11407:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"11395:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11422:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2483,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"11428:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2485,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2463,"src":"11437:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11395:47:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11449:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11395:55:9","trueExpression":{"hexValue":"31","id":2488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11445:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2491,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11394:57:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11385:66:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2470,"id":2493,"nodeType":"Return","src":"11378:73:9"}]}]},"documentation":{"id":2461,"nodeType":"StructuredDocumentation","src":"11072:143:9","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2496,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11229:5:9","nodeType":"FunctionDefinition","parameters":{"id":2467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2463,"mutability":"mutable","name":"value","nameLocation":"11243:5:9","nodeType":"VariableDeclaration","scope":2496,"src":"11235:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2462,"name":"uint256","nodeType":"ElementaryTypeName","src":"11235:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2466,"mutability":"mutable","name":"rounding","nameLocation":"11259:8:9","nodeType":"VariableDeclaration","scope":2496,"src":"11250:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2465,"nodeType":"UserDefinedTypeName","pathNode":{"id":2464,"name":"Rounding","nameLocations":["11250:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"11250:8:9"},"referencedDeclaration":1764,"src":"11250:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"11234:34:9"},"returnParameters":{"id":2470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2496,"src":"11292:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2468,"name":"uint256","nodeType":"ElementaryTypeName","src":"11292:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11291:9:9"},"scope":2623,"src":"11220:248:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2582,"nodeType":"Block","src":"11782:600:9","statements":[{"assignments":[2505],"declarations":[{"constant":false,"id":2505,"mutability":"mutable","name":"result","nameLocation":"11800:6:9","nodeType":"VariableDeclaration","scope":2582,"src":"11792:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2504,"name":"uint256","nodeType":"ElementaryTypeName","src":"11792:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2507,"initialValue":{"hexValue":"30","id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11809:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11792:18:9"},{"id":2579,"nodeType":"UncheckedBlock","src":"11820:533:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11848:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11857:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11848:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11863:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11848:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2522,"nodeType":"IfStatement","src":"11844:98:9","trueBody":{"id":2521,"nodeType":"Block","src":"11866:76:9","statements":[{"expression":{"id":2515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11884:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11894:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11884:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2516,"nodeType":"ExpressionStatement","src":"11884:13:9"},{"expression":{"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2517,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"11915:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11925:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11915:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2520,"nodeType":"ExpressionStatement","src":"11915:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11959:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11959:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11973:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11959:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2537,"nodeType":"IfStatement","src":"11955:95:9","trueBody":{"id":2536,"nodeType":"Block","src":"11976:74:9","statements":[{"expression":{"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2528,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"11994:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12004:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11994:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2531,"nodeType":"ExpressionStatement","src":"11994:12:9"},{"expression":{"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2532,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12024:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12034:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12024:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2535,"nodeType":"ExpressionStatement","src":"12024:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2538,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12067:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12076:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12067:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12081:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12067:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2552,"nodeType":"IfStatement","src":"12063:95:9","trueBody":{"id":2551,"nodeType":"Block","src":"12084:74:9","statements":[{"expression":{"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2543,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12102:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12112:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12102:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2546,"nodeType":"ExpressionStatement","src":"12102:12:9"},{"expression":{"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2547,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12132:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12142:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12132:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2550,"nodeType":"ExpressionStatement","src":"12132:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12175:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12184:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12175:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12189:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12175:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2567,"nodeType":"IfStatement","src":"12171:95:9","trueBody":{"id":2566,"nodeType":"Block","src":"12192:74:9","statements":[{"expression":{"id":2560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12210:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12220:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12210:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2561,"nodeType":"ExpressionStatement","src":"12210:12:9"},{"expression":{"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2562,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12240:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12250:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12240:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2565,"nodeType":"ExpressionStatement","src":"12240:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"12283:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12292:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12283:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12283:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2578,"nodeType":"IfStatement","src":"12279:64:9","trueBody":{"id":2577,"nodeType":"Block","src":"12299:44:9","statements":[{"expression":{"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2573,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12317:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12327:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12317:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2576,"nodeType":"ExpressionStatement","src":"12317:11:9"}]}}]},{"expression":{"id":2580,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"12369:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2503,"id":2581,"nodeType":"Return","src":"12362:13:9"}]},"documentation":{"id":2497,"nodeType":"StructuredDocumentation","src":"11474:240:9","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":2583,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11728:6:9","nodeType":"FunctionDefinition","parameters":{"id":2500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2499,"mutability":"mutable","name":"value","nameLocation":"11743:5:9","nodeType":"VariableDeclaration","scope":2583,"src":"11735:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2498,"name":"uint256","nodeType":"ElementaryTypeName","src":"11735:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11734:15:9"},"returnParameters":{"id":2503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2583,"src":"11773:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2501,"name":"uint256","nodeType":"ElementaryTypeName","src":"11773:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11772:9:9"},"scope":2623,"src":"11719:663:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2621,"nodeType":"Block","src":"12619:174:9","statements":[{"id":2620,"nodeType":"UncheckedBlock","src":"12629:158:9","statements":[{"assignments":[2595],"declarations":[{"constant":false,"id":2595,"mutability":"mutable","name":"result","nameLocation":"12661:6:9","nodeType":"VariableDeclaration","scope":2620,"src":"12653:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2594,"name":"uint256","nodeType":"ElementaryTypeName","src":"12653:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2599,"initialValue":{"arguments":[{"id":2597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"12677:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2596,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[2583,2622],"referencedDeclaration":2583,"src":"12670:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12670:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12653:30:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2600,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"12704:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2601,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"12714:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2602,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"12726:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1764_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":2603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12735:2:9","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1762,"src":"12726:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"src":"12714:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2606,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"12747:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12757:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12747:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2609,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12746:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"12762:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12714:53:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12774:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12714:61:9","trueExpression":{"hexValue":"31","id":2614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2617,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12713:63:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12704:72:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2593,"id":2619,"nodeType":"Return","src":"12697:79:9"}]}]},"documentation":{"id":2584,"nodeType":"StructuredDocumentation","src":"12388:144:9","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2622,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12546:6:9","nodeType":"FunctionDefinition","parameters":{"id":2590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2586,"mutability":"mutable","name":"value","nameLocation":"12561:5:9","nodeType":"VariableDeclaration","scope":2622,"src":"12553:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2585,"name":"uint256","nodeType":"ElementaryTypeName","src":"12553:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2589,"mutability":"mutable","name":"rounding","nameLocation":"12577:8:9","nodeType":"VariableDeclaration","scope":2622,"src":"12568:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":2588,"nodeType":"UserDefinedTypeName","pathNode":{"id":2587,"name":"Rounding","nameLocations":["12568:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":1764,"src":"12568:8:9"},"referencedDeclaration":1764,"src":"12568:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1764","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"12552:34:9"},"returnParameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2622,"src":"12610:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"12610:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12609:9:9"},"scope":2623,"src":"12537:256:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2624,"src":"202:12593:9","usedErrors":[]}],"src":"103:12693:9"},"id":9},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol","exportedSymbols":{"SignedMathUpgradeable":[2728]},"id":2729,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2625,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2626,"nodeType":"StructuredDocumentation","src":"134:80:10","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2728,"linearizedBaseContracts":[2728],"name":"SignedMathUpgradeable","nameLocation":"223:21:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":2643,"nodeType":"Block","src":"386:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2636,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"403:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2637,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"407:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"403:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2640,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"415:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"403:13:10","trueExpression":{"id":2639,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"411:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2635,"id":2642,"nodeType":"Return","src":"396:20:10"}]},"documentation":{"id":2627,"nodeType":"StructuredDocumentation","src":"251:66:10","text":" @dev Returns the largest of two signed numbers."},"id":2644,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"331:3:10","nodeType":"FunctionDefinition","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2629,"mutability":"mutable","name":"a","nameLocation":"342:1:10","nodeType":"VariableDeclaration","scope":2644,"src":"335:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2628,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"b","nameLocation":"352:1:10","nodeType":"VariableDeclaration","scope":2644,"src":"345:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2630,"name":"int256","nodeType":"ElementaryTypeName","src":"345:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"334:20:10"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2644,"src":"378:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2633,"name":"int256","nodeType":"ElementaryTypeName","src":"378:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"377:8:10"},"scope":2728,"src":"322:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2661,"nodeType":"Block","src":"565:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2654,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"582:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2655,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"586:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"582:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2658,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"594:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"582:13:10","trueExpression":{"id":2657,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"590:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2653,"id":2660,"nodeType":"Return","src":"575:20:10"}]},"documentation":{"id":2645,"nodeType":"StructuredDocumentation","src":"429:67:10","text":" @dev Returns the smallest of two signed numbers."},"id":2662,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"510:3:10","nodeType":"FunctionDefinition","parameters":{"id":2650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2647,"mutability":"mutable","name":"a","nameLocation":"521:1:10","nodeType":"VariableDeclaration","scope":2662,"src":"514:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2646,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2649,"mutability":"mutable","name":"b","nameLocation":"531:1:10","nodeType":"VariableDeclaration","scope":2662,"src":"524:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2648,"name":"int256","nodeType":"ElementaryTypeName","src":"524:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"513:20:10"},"returnParameters":{"id":2653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2662,"src":"557:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2651,"name":"int256","nodeType":"ElementaryTypeName","src":"557:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"556:8:10"},"scope":2728,"src":"501:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2705,"nodeType":"Block","src":"807:162:10","statements":[{"assignments":[2673],"declarations":[{"constant":false,"id":2673,"mutability":"mutable","name":"x","nameLocation":"876:1:10","nodeType":"VariableDeclaration","scope":2705,"src":"869:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2672,"name":"int256","nodeType":"ElementaryTypeName","src":"869:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2686,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2674,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"881:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2675,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"885:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2678,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"892:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2679,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"896:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"892:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2681,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"891:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"902:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"891:12:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2684,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"890:14:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"880:24:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"869:35:10"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2687,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"921:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2692,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2673,"src":"941:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"933:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2690,"name":"uint256","nodeType":"ElementaryTypeName","src":"933:7:10","typeDescriptions":{}}},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":2694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"947:3:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"933:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"926:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2688,"name":"int256","nodeType":"ElementaryTypeName","src":"926:6:10","typeDescriptions":{}}},"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"926:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2697,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"955:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2698,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"959:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"955:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"954:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"926:35:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2702,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"925:37:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"921:41:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2671,"id":2704,"nodeType":"Return","src":"914:48:10"}]},"documentation":{"id":2663,"nodeType":"StructuredDocumentation","src":"608:126:10","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":2706,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"748:7:10","nodeType":"FunctionDefinition","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"a","nameLocation":"763:1:10","nodeType":"VariableDeclaration","scope":2706,"src":"756:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2664,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2667,"mutability":"mutable","name":"b","nameLocation":"773:1:10","nodeType":"VariableDeclaration","scope":2706,"src":"766:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2666,"name":"int256","nodeType":"ElementaryTypeName","src":"766:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"755:20:10"},"returnParameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2706,"src":"799:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2669,"name":"int256","nodeType":"ElementaryTypeName","src":"799:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"798:8:10"},"scope":2728,"src":"739:230:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2726,"nodeType":"Block","src":"1113:158:10","statements":[{"id":2725,"nodeType":"UncheckedBlock","src":"1123:142:10","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2716,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1238:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":2717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1243:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1238:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1251:2:10","subExpression":{"id":2720,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1252:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1238:15:10","trueExpression":{"id":2719,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2709,"src":"1247:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1230:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2714,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:10","typeDescriptions":{}}},"id":2723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1230:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2713,"id":2724,"nodeType":"Return","src":"1223:31:10"}]}]},"documentation":{"id":2707,"nodeType":"StructuredDocumentation","src":"975:78:10","text":" @dev Returns the absolute unsigned value of a signed value."},"id":2727,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1067:3:10","nodeType":"FunctionDefinition","parameters":{"id":2710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2709,"mutability":"mutable","name":"n","nameLocation":"1078:1:10","nodeType":"VariableDeclaration","scope":2727,"src":"1071:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2708,"name":"int256","nodeType":"ElementaryTypeName","src":"1071:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1070:10:10"},"returnParameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2727,"src":"1104:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2711,"name":"uint256","nodeType":"ElementaryTypeName","src":"1104:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1103:9:10"},"scope":2728,"src":"1058:213:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2729,"src":"215:1058:10","usedErrors":[]}],"src":"109:1165:10"},"id":10},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[2806]},"id":2807,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2730,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2731,"nodeType":"StructuredDocumentation","src":"131:70:11","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2806,"linearizedBaseContracts":[2806],"name":"IERC20","nameLocation":"212:6:11","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2732,"nodeType":"StructuredDocumentation","src":"225:158:11","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":2740,"name":"Transfer","nameLocation":"394:8:11","nodeType":"EventDefinition","parameters":{"id":2739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2734,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:11","nodeType":"VariableDeclaration","scope":2740,"src":"403:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2733,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2736,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:11","nodeType":"VariableDeclaration","scope":2740,"src":"425:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2735,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2738,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:11","nodeType":"VariableDeclaration","scope":2740,"src":"445:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2737,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:11"},"src":"388:72:11"},{"anonymous":false,"documentation":{"id":2741,"nodeType":"StructuredDocumentation","src":"466:148:11","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":2749,"name":"Approval","nameLocation":"625:8:11","nodeType":"EventDefinition","parameters":{"id":2748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2743,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:11","nodeType":"VariableDeclaration","scope":2749,"src":"634:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2742,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2745,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:11","nodeType":"VariableDeclaration","scope":2749,"src":"657:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2744,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2747,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:11","nodeType":"VariableDeclaration","scope":2749,"src":"682:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2746,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:11"},"src":"619:78:11"},{"documentation":{"id":2750,"nodeType":"StructuredDocumentation","src":"703:66:11","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":2755,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:11","nodeType":"FunctionDefinition","parameters":{"id":2751,"nodeType":"ParameterList","parameters":[],"src":"794:2:11"},"returnParameters":{"id":2754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2755,"src":"820:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2752,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:11"},"scope":2806,"src":"774:55:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2756,"nodeType":"StructuredDocumentation","src":"835:72:11","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":2763,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:11","nodeType":"FunctionDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2758,"mutability":"mutable","name":"account","nameLocation":"939:7:11","nodeType":"VariableDeclaration","scope":2763,"src":"931:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2757,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:11"},"returnParameters":{"id":2762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2763,"src":"971:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2760,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:11"},"scope":2806,"src":"912:68:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2764,"nodeType":"StructuredDocumentation","src":"986:202:11","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2773,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:11","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2766,"mutability":"mutable","name":"to","nameLocation":"1219:2:11","nodeType":"VariableDeclaration","scope":2773,"src":"1211:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2765,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2768,"mutability":"mutable","name":"amount","nameLocation":"1231:6:11","nodeType":"VariableDeclaration","scope":2773,"src":"1223:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2767,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:11"},"returnParameters":{"id":2772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2773,"src":"1257:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2770,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:11"},"scope":2806,"src":"1193:70:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2774,"nodeType":"StructuredDocumentation","src":"1269:264:11","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":2783,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:11","nodeType":"FunctionDefinition","parameters":{"id":2779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2776,"mutability":"mutable","name":"owner","nameLocation":"1565:5:11","nodeType":"VariableDeclaration","scope":2783,"src":"1557:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2775,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2778,"mutability":"mutable","name":"spender","nameLocation":"1580:7:11","nodeType":"VariableDeclaration","scope":2783,"src":"1572:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2777,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:11"},"returnParameters":{"id":2782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2783,"src":"1612:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:11"},"scope":2806,"src":"1538:83:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2784,"nodeType":"StructuredDocumentation","src":"1627:642:11","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2793,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:11","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2786,"mutability":"mutable","name":"spender","nameLocation":"2299:7:11","nodeType":"VariableDeclaration","scope":2793,"src":"2291:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2788,"mutability":"mutable","name":"amount","nameLocation":"2316:6:11","nodeType":"VariableDeclaration","scope":2793,"src":"2308:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2787,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:11"},"returnParameters":{"id":2792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2793,"src":"2342:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2790,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:11"},"scope":2806,"src":"2274:74:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2794,"nodeType":"StructuredDocumentation","src":"2354:287:11","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2805,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:11","nodeType":"FunctionDefinition","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2796,"mutability":"mutable","name":"from","nameLocation":"2685:4:11","nodeType":"VariableDeclaration","scope":2805,"src":"2677:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2795,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2798,"mutability":"mutable","name":"to","nameLocation":"2707:2:11","nodeType":"VariableDeclaration","scope":2805,"src":"2699:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2797,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2800,"mutability":"mutable","name":"amount","nameLocation":"2727:6:11","nodeType":"VariableDeclaration","scope":2805,"src":"2719:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2799,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:11"},"returnParameters":{"id":2804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2805,"src":"2758:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2802,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:11"},"scope":2806,"src":"2646:118:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2807,"src":"202:2564:11","usedErrors":[]}],"src":"106:2661:11"},"id":11},"contracts/Paycrest.sol":{"ast":{"absolutePath":"contracts/Paycrest.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ECDSAUpgradeable":[1757],"IERC20":[2806],"IERC20PermitUpgradeable":[414],"IERC20Upgradeable":[378],"IPaycrest":[4040],"MathUpgradeable":[2623],"Paycrest":[3599],"PaycrestSettingManager":[3849],"SafeERC20Upgradeable":[790],"SignedMathUpgradeable":[2728],"StringsUpgradeable":[1391]},"id":3600,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2808,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:12"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol","id":2809,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3600,"sourceUnit":1758,"src":"62:85:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","id":2810,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3600,"sourceUnit":791,"src":"148:88:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/PaycrestSettingManager.sol","file":"./PaycrestSettingManager.sol","id":2812,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3600,"sourceUnit":3850,"src":"237:68:12","symbolAliases":[{"foreign":{"id":2811,"name":"PaycrestSettingManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3849,"src":"245:22:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interface/IPaycrest.sol","file":"./interface/IPaycrest.sol","id":2815,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3600,"sourceUnit":4041,"src":"306:60:12","symbolAliases":[{"foreign":{"id":2813,"name":"IPaycrest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4040,"src":"314:9:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2814,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"325:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2816,"name":"IPaycrest","nameLocations":["388:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":4040,"src":"388:9:12"},"id":2817,"nodeType":"InheritanceSpecifier","src":"388:9:12"},{"baseName":{"id":2818,"name":"PaycrestSettingManager","nameLocations":["399:22:12"],"nodeType":"IdentifierPath","referencedDeclaration":3849,"src":"399:22:12"},"id":2819,"nodeType":"InheritanceSpecifier","src":"399:22:12"}],"canonicalName":"Paycrest","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3599,"linearizedBaseContracts":[3599,3849,131,1162,300,4040],"name":"Paycrest","nameLocation":"376:8:12","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2823,"libraryName":{"id":2820,"name":"SafeERC20Upgradeable","nameLocations":["435:20:12"],"nodeType":"IdentifierPath","referencedDeclaration":790,"src":"435:20:12"},"nodeType":"UsingForDirective","src":"429:38:12","typeName":{"id":2822,"nodeType":"UserDefinedTypeName","pathNode":{"id":2821,"name":"IERC20","nameLocations":["460:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":2806,"src":"460:6:12"},"referencedDeclaration":2806,"src":"460:6:12","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}}},{"global":false,"id":2826,"libraryName":{"id":2824,"name":"ECDSAUpgradeable","nameLocations":["478:16:12"],"nodeType":"IdentifierPath","referencedDeclaration":1757,"src":"478:16:12"},"nodeType":"UsingForDirective","src":"472:35:12","typeName":{"id":2825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"499:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"canonicalName":"Paycrest.fee","id":2833,"members":[{"constant":false,"id":2828,"mutability":"mutable","name":"protocolFee","nameLocation":"541:11:12","nodeType":"VariableDeclaration","scope":2833,"src":"533:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2827,"name":"uint256","nodeType":"ElementaryTypeName","src":"533:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2830,"mutability":"mutable","name":"liquidityProviderAmount","nameLocation":"570:23:12","nodeType":"VariableDeclaration","scope":2833,"src":"562:31:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2829,"name":"uint256","nodeType":"ElementaryTypeName","src":"562:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2832,"mutability":"mutable","name":"validatorsReward","nameLocation":"611:16:12","nodeType":"VariableDeclaration","scope":2833,"src":"603:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2831,"name":"uint256","nodeType":"ElementaryTypeName","src":"603:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"fee","nameLocation":"519:3:12","nodeType":"StructDefinition","scope":3599,"src":"512:122:12","visibility":"public"},{"constant":false,"id":2838,"mutability":"mutable","name":"order","nameLocation":"673:5:12","nodeType":"VariableDeclaration","scope":3599,"src":"639:39:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order)"},"typeName":{"id":2837,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"647:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"639:25:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2836,"nodeType":"UserDefinedTypeName","pathNode":{"id":2835,"name":"Order","nameLocations":["658:5:12"],"nodeType":"IdentifierPath","referencedDeclaration":3935,"src":"658:5:12"},"referencedDeclaration":3935,"src":"658:5:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage_ptr","typeString":"struct IPaycrest.Order"}}},"visibility":"private"},{"constant":false,"id":2842,"mutability":"mutable","name":"_nonce","nameLocation":"720:6:12","nodeType":"VariableDeclaration","scope":3599,"src":"684:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":2841,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":2839,"name":"address","nodeType":"ElementaryTypeName","src":"692:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"684:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2840,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":2846,"mutability":"mutable","name":"__gap","nameLocation":"752:5:12","nodeType":"VariableDeclaration","scope":3599,"src":"732:25:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":2843,"name":"uint256","nodeType":"ElementaryTypeName","src":"732:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2845,"length":{"hexValue":"3530","id":2844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"740:2:12","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"732:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"},{"body":{"id":2853,"nodeType":"Block","src":"830:39:12","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2850,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"840:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"840:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2852,"nodeType":"ExpressionStatement","src":"840:22:12"}]},"documentation":{"id":2847,"nodeType":"StructuredDocumentation","src":"763:48:12","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":2854,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2848,"nodeType":"ParameterList","parameters":[],"src":"827:2:12"},"returnParameters":{"id":2849,"nodeType":"ParameterList","parameters":[],"src":"830:0:12"},"scope":3599,"src":"816:53:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2882,"nodeType":"Block","src":"931:193:12","statements":[{"expression":{"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2861,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"945:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2863,"indexExpression":{"id":2862,"name":"_usdc","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"963:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"945:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"972:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"945:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2866,"nodeType":"ExpressionStatement","src":"945:31:12"},{"expression":{"id":2869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2867,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"989:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130305f303030","id":2868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"999:7:12","typeDescriptions":{"typeIdentifier":"t_rational_100000_by_1","typeString":"int_const 100000"},"value":"100_000"},"src":"989:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2870,"nodeType":"ExpressionStatement","src":"989:17:12"},{"expression":{"id":2873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2871,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"1017:18:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"35303030","id":2872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1038:4:12","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5000"},"src":"1017:25:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2874,"nodeType":"ExpressionStatement","src":"1017:25:12"},{"expression":{"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2875,"name":"validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"1058:19:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"353030","id":2876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1080:3:12","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"src":"1058:25:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":2878,"nodeType":"ExpressionStatement","src":"1058:25:12"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2879,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"1101:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1101:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2881,"nodeType":"ExpressionStatement","src":"1101:16:12"}]},"functionSelector":"c4d66de8","id":2883,"implemented":true,"kind":"function","modifiers":[{"id":2859,"kind":"modifierInvocation","modifierName":{"id":2858,"name":"initializer","nameLocations":["919:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":202,"src":"919:11:12"},"nodeType":"ModifierInvocation","src":"919:11:12"}],"name":"initialize","nameLocation":"884:10:12","nodeType":"FunctionDefinition","parameters":{"id":2857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2856,"mutability":"mutable","name":"_usdc","nameLocation":"903:5:12","nodeType":"VariableDeclaration","scope":2883,"src":"895:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2855,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"894:15:12"},"returnParameters":{"id":2860,"nodeType":"ParameterList","parameters":[],"src":"931:0:12"},"scope":3599,"src":"875:249:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2894,"nodeType":"Block","src":"1154:87:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2886,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1172:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1176:6:12","memberName":"sender","nodeType":"MemberAccess","src":"1172:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2888,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3624,"src":"1186:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1172:32:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7941676772656761746f72","id":2890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1206:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","typeString":"literal_string \"OnlyAggregator\""},"value":"OnlyAggregator"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","typeString":"literal_string \"OnlyAggregator\""}],"id":2885,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1164:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1164:59:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2892,"nodeType":"ExpressionStatement","src":"1164:59:12"},{"id":2893,"nodeType":"PlaceholderStatement","src":"1233:1:12"}]},"id":2895,"name":"onlyAggregator","nameLocation":"1139:14:12","nodeType":"ModifierDefinition","parameters":{"id":2884,"nodeType":"ParameterList","parameters":[],"src":"1154:0:12"},"src":"1130:111:12","virtual":false,"visibility":"internal"},{"baseFunctions":[3959],"body":{"id":2990,"nodeType":"Block","src":"1816:1125:12","statements":[{"expression":{"arguments":[{"id":2920,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"1871:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2921,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"1879:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2922,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"1888:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2923,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"1904:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2924,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"1925:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2919,"name":"_handler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3052,"src":"1862:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,address,address,bytes32) view"}},"id":2925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1862:80:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2926,"nodeType":"ExpressionStatement","src":"1862:80:12"},{"expression":{"arguments":[{"expression":{"id":2931,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2028:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2032:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2028:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2935,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2048:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_Paycrest_$3599","typeString":"contract Paycrest"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Paycrest_$3599","typeString":"contract Paycrest"}],"id":2934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2040:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2933,"name":"address","nodeType":"ElementaryTypeName","src":"2040:7:12","typeDescriptions":{}}},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2040:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2937,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2055:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2928,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"2007:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2927,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"2000:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2000:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2015:12:12","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2805,"src":"2000:27:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2000:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2939,"nodeType":"ExpressionStatement","src":"2000:63:12"},{"expression":{"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2129:21:12","subExpression":{"baseExpression":{"id":2940,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"2129:6:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2943,"indexExpression":{"expression":{"id":2941,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2136:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2140:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2136:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2129:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2945,"nodeType":"ExpressionStatement","src":"2129:21:12"},{"expression":{"id":2958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2946,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"2356:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":2950,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2387:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2391:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2387:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":2952,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2842,"src":"2399:6:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2955,"indexExpression":{"expression":{"id":2953,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2406:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2410:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2406:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2399:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2948,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2376:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2380:6:12","memberName":"encode","nodeType":"MemberAccess","src":"2376:10:12","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2947,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2366:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2366:53:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2356:63:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2959,"nodeType":"ExpressionStatement","src":"2356:63:12"},{"expression":{"id":2978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2960,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"2459:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":2962,"indexExpression":{"id":2961,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"2465:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2459:14:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2964,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2504:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2508:6:12","memberName":"sender","nodeType":"MemberAccess","src":"2504:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2966,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"2535:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2967,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"2575:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2968,"name":"_senderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2910,"src":"2619:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2969,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2649:5:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"66616c7365","id":2970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2681:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":2971,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"2715:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2974,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"2762:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2755:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":2972,"name":"uint64","nodeType":"ElementaryTypeName","src":"2755:6:12","typeDescriptions":{}}},"id":2975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2755:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":2976,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2792:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2963,"name":"Order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3935,"src":"2476:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Order_$3935_storage_ptr_$","typeString":"type(struct IPaycrest.Order storage pointer)"}},"id":2977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["2496:6:12","2528:5:12","2555:18:12","2608:9:12","2643:4:12","2668:11:12","2700:13:12","2743:10:12","2784:6:12"],"names":["seller","token","senderFeeRecipient","senderFee","rate","isFulfilled","refundAddress","currentBPS","amount"],"nodeType":"FunctionCall","src":"2476:334:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_memory_ptr","typeString":"struct IPaycrest.Order memory"}},"src":"2459:351:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":2979,"nodeType":"ExpressionStatement","src":"2459:351:12"},{"eventCall":{"arguments":[{"id":2981,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2898,"src":"2863:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2982,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2871:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2983,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2917,"src":"2880:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2984,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2889:5:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2985,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"2896:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2986,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"2914:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2987,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2914,"src":"2922:11:12","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":2980,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3871,"src":"2855:7:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes32,uint256,bytes32,bytes32,string memory)"}},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:79:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2989,"nodeType":"EmitStatement","src":"2850:84:12"}]},"documentation":{"id":2896,"nodeType":"StructuredDocumentation","src":"1442:40:12","text":"@dev See {createOrder-IPaycrest}. "},"functionSelector":"2654ec7e","id":2991,"implemented":true,"kind":"function","modifiers":[],"name":"createOrder","nameLocation":"1496:11:12","nodeType":"FunctionDefinition","parameters":{"id":2915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2898,"mutability":"mutable","name":"_token","nameLocation":"1525:6:12","nodeType":"VariableDeclaration","scope":2991,"src":"1517:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2897,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2900,"mutability":"mutable","name":"_amount","nameLocation":"1550:7:12","nodeType":"VariableDeclaration","scope":2991,"src":"1542:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2899,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2902,"mutability":"mutable","name":"_institutionCode","nameLocation":"1576:16:12","nodeType":"VariableDeclaration","scope":2991,"src":"1568:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1568:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2904,"mutability":"mutable","name":"_label","nameLocation":"1610:6:12","nodeType":"VariableDeclaration","scope":2991,"src":"1602:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1602:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2906,"mutability":"mutable","name":"_rate","nameLocation":"1633:5:12","nodeType":"VariableDeclaration","scope":2991,"src":"1626:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2905,"name":"uint96","nodeType":"ElementaryTypeName","src":"1626:6:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"1657:19:12","nodeType":"VariableDeclaration","scope":2991,"src":"1649:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2907,"name":"address","nodeType":"ElementaryTypeName","src":"1649:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2910,"mutability":"mutable","name":"_senderFee","nameLocation":"1694:10:12","nodeType":"VariableDeclaration","scope":2991,"src":"1686:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2909,"name":"uint256","nodeType":"ElementaryTypeName","src":"1686:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2912,"mutability":"mutable","name":"_refundAddress","nameLocation":"1722:14:12","nodeType":"VariableDeclaration","scope":2991,"src":"1714:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2911,"name":"address","nodeType":"ElementaryTypeName","src":"1714:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2914,"mutability":"mutable","name":"messageHash","nameLocation":"1763:11:12","nodeType":"VariableDeclaration","scope":2991,"src":"1747:27:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":2913,"name":"string","nodeType":"ElementaryTypeName","src":"1747:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1507:273:12"},"returnParameters":{"id":2918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2917,"mutability":"mutable","name":"orderId","nameLocation":"1807:7:12","nodeType":"VariableDeclaration","scope":2991,"src":"1799:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1799:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1798:17:12"},"scope":3599,"src":"1487:1454:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3051,"nodeType":"Block","src":"3091:415:12","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3005,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"3158:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3007,"indexExpression":{"id":3006,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"3176:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3158:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e4e6f74537570706f72746564","id":3008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3185:19:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","typeString":"literal_string \"TokenNotSupported\""},"value":"TokenNotSupported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","typeString":"literal_string \"TokenNotSupported\""}],"id":3004,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3150:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3150:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3010,"nodeType":"ExpressionStatement","src":"3150:55:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3012,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2995,"src":"3223:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3233:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3223:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416d6f756e7449735a65726f","id":3015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3236:14:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","typeString":"literal_string \"AmountIsZero\""},"value":"AmountIsZero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","typeString":"literal_string \"AmountIsZero\""}],"id":3011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3215:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3215:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3017,"nodeType":"ExpressionStatement","src":"3215:36:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3019,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2997,"src":"3269:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3295:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3287:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3020,"name":"address","nodeType":"ElementaryTypeName","src":"3287:7:12","typeDescriptions":{}}},"id":3023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3287:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3269:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5468726f775a65726f41646472657373","id":3025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3299:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""},"value":"ThrowZeroAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""}],"id":3018,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3261:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3261:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3027,"nodeType":"ExpressionStatement","src":"3261:57:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3029,"name":"_senderFeeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"3336:19:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3367:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3359:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3030,"name":"address","nodeType":"ElementaryTypeName","src":"3359:7:12","typeDescriptions":{}}},"id":3033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3336:33:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5468726f775a65726f41646472657373","id":3035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3371:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""},"value":"ThrowZeroAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","typeString":"literal_string \"ThrowZeroAddress\""}],"id":3028,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3328:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3328:62:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3037,"nodeType":"ExpressionStatement","src":"3328:62:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3039,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"3408:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3614_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3041,"indexExpression":{"id":3040,"name":"_institutionCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3001,"src":"3436:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3408:45:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3614_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"id":3042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3454:4:12","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":3611,"src":"3408:50:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3470:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3462:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3043,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3462:7:12","typeDescriptions":{}}},"id":3046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3408:64:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964496e737469747574696f6e436f6465","id":3048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3474:24:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","typeString":"literal_string \"InvalidInstitutionCode\""},"value":"InvalidInstitutionCode"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","typeString":"literal_string \"InvalidInstitutionCode\""}],"id":3038,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3400:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3400:99:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3050,"nodeType":"ExpressionStatement","src":"3400:99:12"}]},"id":3052,"implemented":true,"kind":"function","modifiers":[],"name":"_handler","nameLocation":"2956:8:12","nodeType":"FunctionDefinition","parameters":{"id":3002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2993,"mutability":"mutable","name":"_token","nameLocation":"2973:6:12","nodeType":"VariableDeclaration","scope":3052,"src":"2965:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2992,"name":"address","nodeType":"ElementaryTypeName","src":"2965:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2995,"mutability":"mutable","name":"_amount","nameLocation":"2989:7:12","nodeType":"VariableDeclaration","scope":3052,"src":"2981:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2994,"name":"uint256","nodeType":"ElementaryTypeName","src":"2981:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2997,"mutability":"mutable","name":"_refundAddress","nameLocation":"3006:14:12","nodeType":"VariableDeclaration","scope":3052,"src":"2998:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2996,"name":"address","nodeType":"ElementaryTypeName","src":"2998:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2999,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"3030:19:12","nodeType":"VariableDeclaration","scope":3052,"src":"3022:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2998,"name":"address","nodeType":"ElementaryTypeName","src":"3022:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3001,"mutability":"mutable","name":"_institutionCode","nameLocation":"3059:16:12","nodeType":"VariableDeclaration","scope":3052,"src":"3051:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3000,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3051:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2964:112:12"},"returnParameters":{"id":3003,"nodeType":"ParameterList","parameters":[],"src":"3091:0:12"},"scope":3599,"src":"2947:559:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[3982],"body":{"id":3179,"nodeType":"Block","src":"4048:1430:12","statements":[{"expression":{"arguments":[{"id":3082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4123:28:12","subExpression":{"expression":{"baseExpression":{"id":3078,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4124:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3080,"indexExpression":{"id":3079,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"4130:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4124:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4140:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3928,"src":"4124:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7264657246756c66696c6c6564","id":3083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4153:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""},"value":"OrderFulfilled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""}],"id":3077,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4115:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4115:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3085,"nodeType":"ExpressionStatement","src":"4115:55:12"},{"assignments":[3087],"declarations":[{"constant":false,"id":3087,"mutability":"mutable","name":"token","nameLocation":"4226:5:12","nodeType":"VariableDeclaration","scope":3179,"src":"4218:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3086,"name":"address","nodeType":"ElementaryTypeName","src":"4218:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3092,"initialValue":{"expression":{"baseExpression":{"id":3088,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4234:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3090,"indexExpression":{"id":3089,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"4240:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4234:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4250:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3920,"src":"4234:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4218:37:12"},{"expression":{"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3093,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4334:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3095,"indexExpression":{"id":3094,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"4340:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4334:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4350:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3932,"src":"4334:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3097,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"4364:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4334:44:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":3099,"nodeType":"ExpressionStatement","src":"4334:44:12"},{"assignments":[3102],"declarations":[{"constant":false,"id":3102,"mutability":"mutable","name":"_feeParams","nameLocation":"4531:10:12","nodeType":"VariableDeclaration","scope":3179,"src":"4520:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee"},"typeName":{"id":3101,"nodeType":"UserDefinedTypeName","pathNode":{"id":3100,"name":"fee","nameLocations":["4520:3:12"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"4520:3:12"},"referencedDeclaration":2833,"src":"4520:3:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_storage_ptr","typeString":"struct Paycrest.fee"}},"visibility":"internal"}],"id":3108,"initialValue":{"arguments":[{"id":3104,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"4562:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3105,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"4572:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3106,"name":"_isPartner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"4588:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3103,"name":"_calculateFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"4547:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint96_$_t_bool_$returns$_t_struct$_fee_$2833_memory_ptr_$","typeString":"function (bytes32,uint96,bool) view returns (struct Paycrest.fee memory)"}},"id":3107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4547:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"nodeType":"VariableDeclarationStatement","src":"4518:81:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":3114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3109,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4612:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3111,"indexExpression":{"id":3110,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"4618:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4612:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3112,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4628:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3932,"src":"4612:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4642:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4612:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3135,"nodeType":"IfStatement","src":"4609:296:12","trueBody":{"id":3134,"nodeType":"Block","src":"4645:260:12","statements":[{"expression":{"id":3120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3115,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4713:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3117,"indexExpression":{"id":3116,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"4719:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4713:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3118,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4729:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3928,"src":"4713:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4743:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4713:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3121,"nodeType":"ExpressionStatement","src":"4713:34:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3122,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"4765:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3124,"indexExpression":{"id":3123,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"4771:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4765:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4781:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3924,"src":"4765:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4793:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4765:29:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3133,"nodeType":"IfStatement","src":"4761:134:12","trueBody":{"id":3132,"nodeType":"Block","src":"4796:99:12","statements":[{"expression":{"arguments":[{"id":3129,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"4871:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3128,"name":"transferSenderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3268,"src":"4853:17:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":3130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4853:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3131,"nodeType":"ExpressionStatement","src":"4853:27:12"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3136,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"4927:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4938:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"4927:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4952:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4927:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3150,"nodeType":"IfStatement","src":"4923:154:12","trueBody":{"id":3149,"nodeType":"Block","src":"4955:122:12","statements":[{"expression":{"arguments":[{"id":3144,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3622,"src":"5029:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3145,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"5043:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5054:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"5043:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3141,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"5013:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3140,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5006:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5006:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5020:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5006:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5006:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3148,"nodeType":"ExpressionStatement","src":"5006:60:12"}]}},{"expression":{"arguments":[{"id":3155,"name":"_liquidityProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"5155:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3156,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"5175:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5186:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"5175:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3152,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"5139:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3151,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5132:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5132:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5146:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5132:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5132:78:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3159,"nodeType":"ExpressionStatement","src":"5132:78:12"},{"expression":{"arguments":[{"id":3161,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3062,"src":"5274:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":3162,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"5287:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3163,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"5294:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5305:16:12","memberName":"validatorsReward","nodeType":"MemberAccess","referencedDeclaration":2832,"src":"5294:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3160,"name":"rewardValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"5257:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address[] calldata,address,uint256)"}},"id":3165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5257:65:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3166,"nodeType":"ExpressionStatement","src":"5257:65:12"},{"eventCall":{"arguments":[{"id":3168,"name":"_splitOrderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"5368:13:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3169,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"5383:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3170,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3059,"src":"5393:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3171,"name":"_liquidityProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"5402:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3172,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"5422:14:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3167,"name":"Settled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3884,"src":"5360:7:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint96_$returns$__$","typeString":"function (bytes32,bytes32,bytes32,address,uint96)"}},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5360:77:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3174,"nodeType":"EmitStatement","src":"5355:82:12"},{"expression":{"components":[{"id":3175,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"5455:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3176,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"5465:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3177,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5454:17:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_address_$","typeString":"tuple(bytes32,address)"}},"functionReturnParameters":3076,"id":3178,"nodeType":"Return","src":"5447:24:12"}]},"documentation":{"id":3053,"nodeType":"StructuredDocumentation","src":"3713:35:12","text":"@dev See {settle-IPaycrest}. "},"functionSelector":"137764fb","id":3180,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":3071,"kind":"modifierInvocation","modifierName":{"id":3070,"name":"onlyAggregator","nameLocations":["4005:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":2895,"src":"4005:14:12"},"nodeType":"ModifierInvocation","src":"4005:16:12"}],"name":"settle","nameLocation":"3762:6:12","nodeType":"FunctionDefinition","parameters":{"id":3069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3055,"mutability":"mutable","name":"_splitOrderId","nameLocation":"3786:13:12","nodeType":"VariableDeclaration","scope":3180,"src":"3778:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3054,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3778:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3057,"mutability":"mutable","name":"_orderId","nameLocation":"3817:8:12","nodeType":"VariableDeclaration","scope":3180,"src":"3809:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3056,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3809:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3059,"mutability":"mutable","name":"_label","nameLocation":"3844:6:12","nodeType":"VariableDeclaration","scope":3180,"src":"3836:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3058,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3836:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3062,"mutability":"mutable","name":"_validators","nameLocation":"3879:11:12","nodeType":"VariableDeclaration","scope":3180,"src":"3860:30:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3060,"name":"address","nodeType":"ElementaryTypeName","src":"3860:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3061,"nodeType":"ArrayTypeName","src":"3860:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3064,"mutability":"mutable","name":"_liquidityProvider","nameLocation":"3909:18:12","nodeType":"VariableDeclaration","scope":3180,"src":"3901:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3063,"name":"address","nodeType":"ElementaryTypeName","src":"3901:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3066,"mutability":"mutable","name":"_settlePercent","nameLocation":"3945:14:12","nodeType":"VariableDeclaration","scope":3180,"src":"3938:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3065,"name":"uint64","nodeType":"ElementaryTypeName","src":"3938:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3068,"mutability":"mutable","name":"_isPartner","nameLocation":"3974:10:12","nodeType":"VariableDeclaration","scope":3180,"src":"3969:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3067,"name":"bool","nodeType":"ElementaryTypeName","src":"3969:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3768:226:12"},"returnParameters":{"id":3076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3180,"src":"4030:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3072,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4030:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3075,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3180,"src":"4039:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3074,"name":"address","nodeType":"ElementaryTypeName","src":"4039:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4029:18:12"},"scope":3599,"src":"3753:1725:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3231,"nodeType":"Block","src":"5594:392:12","statements":[{"assignments":[3191],"declarations":[{"constant":false,"id":3191,"mutability":"mutable","name":"length","nameLocation":"5612:6:12","nodeType":"VariableDeclaration","scope":3231,"src":"5604:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3190,"name":"uint256","nodeType":"ElementaryTypeName","src":"5604:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3194,"initialValue":{"expression":{"id":3192,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"5621:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5633:6:12","memberName":"length","nodeType":"MemberAccess","src":"5621:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5604:35:12"},{"assignments":[3196],"declarations":[{"constant":false,"id":3196,"mutability":"mutable","name":"_validatorReward","nameLocation":"5657:16:12","nodeType":"VariableDeclaration","scope":3231,"src":"5649:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3195,"name":"uint256","nodeType":"ElementaryTypeName","src":"5649:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3200,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3197,"name":"_validatorsRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"5676:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3198,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3191,"src":"5697:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5676:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5649:54:12"},{"body":{"id":3229,"nodeType":"Block","src":"5746:234:12","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3212,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"5783:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3214,"indexExpression":{"id":3213,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"5795:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5783:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3215,"name":"_validatorReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3196,"src":"5799:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3209,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"5767:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3208,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"5760:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5760:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5774:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"5760:22:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5760:56:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3217,"nodeType":"ExpressionStatement","src":"5760:56:12"},{"eventCall":{"arguments":[{"baseExpression":{"id":3219,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"5877:11:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3221,"indexExpression":{"id":3220,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"5889:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5877:14:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3222,"name":"_validatorReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3196,"src":"5893:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3218,"name":"RewardValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"5861:15:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5861:49:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3224,"nodeType":"EmitStatement","src":"5856:54:12"},{"id":3228,"nodeType":"UncheckedBlock","src":"5924:46:12","statements":[{"expression":{"id":3226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5952:3:12","subExpression":{"id":3225,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"5952:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3227,"nodeType":"ExpressionStatement","src":"5952:3:12"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3205,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"5732:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3206,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3191,"src":"5736:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5732:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3230,"initializationExpression":{"assignments":[3202],"declarations":[{"constant":false,"id":3202,"mutability":"mutable","name":"i","nameLocation":"5725:1:12","nodeType":"VariableDeclaration","scope":3230,"src":"5717:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3201,"name":"uint256","nodeType":"ElementaryTypeName","src":"5717:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3204,"initialValue":{"hexValue":"30","id":3203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5729:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5717:13:12"},"nodeType":"ForStatement","src":"5713:267:12"}]},"id":3232,"implemented":true,"kind":"function","modifiers":[],"name":"rewardValidators","nameLocation":"5493:16:12","nodeType":"FunctionDefinition","parameters":{"id":3188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3183,"mutability":"mutable","name":"_validators","nameLocation":"5529:11:12","nodeType":"VariableDeclaration","scope":3232,"src":"5510:30:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3181,"name":"address","nodeType":"ElementaryTypeName","src":"5510:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3182,"nodeType":"ArrayTypeName","src":"5510:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3185,"mutability":"mutable","name":"token","nameLocation":"5550:5:12","nodeType":"VariableDeclaration","scope":3232,"src":"5542:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3184,"name":"address","nodeType":"ElementaryTypeName","src":"5542:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3187,"mutability":"mutable","name":"_validatorsRewards","nameLocation":"5565:18:12","nodeType":"VariableDeclaration","scope":3232,"src":"5557:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3186,"name":"uint256","nodeType":"ElementaryTypeName","src":"5557:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:75:12"},"returnParameters":{"id":3189,"nodeType":"ParameterList","parameters":[],"src":"5594:0:12"},"scope":3599,"src":"5484:502:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3267,"nodeType":"Block","src":"6046:289:12","statements":[{"assignments":[3238],"declarations":[{"constant":false,"id":3238,"mutability":"mutable","name":"recipient","nameLocation":"6064:9:12","nodeType":"VariableDeclaration","scope":3267,"src":"6056:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3237,"name":"address","nodeType":"ElementaryTypeName","src":"6056:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3243,"initialValue":{"expression":{"baseExpression":{"id":3239,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6076:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3241,"indexExpression":{"id":3240,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"6082:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6076:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6092:18:12","memberName":"senderFeeRecipient","nodeType":"MemberAccess","referencedDeclaration":3922,"src":"6076:34:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6056:54:12"},{"assignments":[3245],"declarations":[{"constant":false,"id":3245,"mutability":"mutable","name":"_fee","nameLocation":"6128:4:12","nodeType":"VariableDeclaration","scope":3267,"src":"6120:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3244,"name":"uint256","nodeType":"ElementaryTypeName","src":"6120:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3250,"initialValue":{"expression":{"baseExpression":{"id":3246,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6135:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3248,"indexExpression":{"id":3247,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"6141:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6135:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6151:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3924,"src":"6135:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6120:40:12"},{"expression":{"arguments":[{"id":3258,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3238,"src":"6240:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3259,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"6251:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":3252,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6208:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3254,"indexExpression":{"id":3253,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"6214:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6208:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6224:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3920,"src":"6208:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3251,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"6201:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6201:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6231:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"6201:38:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6201:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3261,"nodeType":"ExpressionStatement","src":"6201:55:12"},{"eventCall":{"arguments":[{"id":3263,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3238,"src":"6312:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3264,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"6323:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3262,"name":"TransferSenderFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3898,"src":"6294:17:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6294:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3266,"nodeType":"EmitStatement","src":"6289:39:12"}]},"id":3268,"implemented":true,"kind":"function","modifiers":[],"name":"transferSenderFee","nameLocation":"6001:17:12","nodeType":"FunctionDefinition","parameters":{"id":3235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3234,"mutability":"mutable","name":"_orderId","nameLocation":"6027:8:12","nodeType":"VariableDeclaration","scope":3268,"src":"6019:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3233,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6019:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6018:18:12"},"returnParameters":{"id":3236,"nodeType":"ParameterList","parameters":[],"src":"6046:0:12"},"scope":3599,"src":"5992:343:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3992],"body":{"id":3327,"nodeType":"Block","src":"6472:455:12","statements":[{"expression":{"arguments":[{"id":3285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6547:28:12","subExpression":{"expression":{"baseExpression":{"id":3281,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6548:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3283,"indexExpression":{"id":3282,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"6554:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6548:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3284,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6564:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3928,"src":"6548:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7264657246756c66696c6c6564","id":3286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6577:16:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""},"value":"OrderFulfilled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","typeString":"literal_string \"OrderFulfilled\""}],"id":3280,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6539:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6539:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3288,"nodeType":"ExpressionStatement","src":"6539:55:12"},{"expression":{"id":3294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3289,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6634:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3291,"indexExpression":{"id":3290,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"6640:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6634:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6650:11:12","memberName":"isFulfilled","nodeType":"MemberAccess","referencedDeclaration":3928,"src":"6634:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6664:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6634:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3295,"nodeType":"ExpressionStatement","src":"6634:34:12"},{"expression":{"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3296,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6678:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3298,"indexExpression":{"id":3297,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"6684:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6678:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6694:10:12","memberName":"currentBPS","nodeType":"MemberAccess","referencedDeclaration":3932,"src":"6678:26:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6707:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6678:30:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":3302,"nodeType":"ExpressionStatement","src":"6678:30:12"},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":3310,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6788:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3312,"indexExpression":{"id":3311,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"6794:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6788:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3313,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6804:13:12","memberName":"refundAddress","nodeType":"MemberAccess","referencedDeclaration":3930,"src":"6788:29:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":3314,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6819:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3316,"indexExpression":{"id":3315,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"6825:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6819:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6835:6:12","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3934,"src":"6819:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":3304,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"6756:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3306,"indexExpression":{"id":3305,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"6762:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6756:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3307,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6772:5:12","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3920,"src":"6756:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3303,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"6749:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6749:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6779:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"6749:38:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6749:93:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3319,"nodeType":"ExpressionStatement","src":"6749:93:12"},{"eventCall":{"arguments":[{"id":3321,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"6882:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3322,"name":"_label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"6892:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3320,"name":"Refunded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3891,"src":"6873:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6873:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3324,"nodeType":"EmitStatement","src":"6868:31:12"},{"expression":{"hexValue":"74727565","id":3325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6916:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3279,"id":3326,"nodeType":"Return","src":"6909:11:12"}]},"documentation":{"id":3269,"nodeType":"StructuredDocumentation","src":"6341:35:12","text":"@dev See {refund-IPaycrest}. "},"functionSelector":"e4683a79","id":3328,"implemented":true,"kind":"function","modifiers":[{"arguments":[],"id":3276,"kind":"modifierInvocation","modifierName":{"id":3275,"name":"onlyAggregator","nameLocations":["6441:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":2895,"src":"6441:14:12"},"nodeType":"ModifierInvocation","src":"6441:16:12"}],"name":"refund","nameLocation":"6390:6:12","nodeType":"FunctionDefinition","parameters":{"id":3274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3271,"mutability":"mutable","name":"_orderId","nameLocation":"6405:8:12","nodeType":"VariableDeclaration","scope":3328,"src":"6397:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6397:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3273,"mutability":"mutable","name":"_label","nameLocation":"6423:6:12","nodeType":"VariableDeclaration","scope":3328,"src":"6415:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3272,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6415:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6396:34:12"},"returnParameters":{"id":3279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3328,"src":"6466:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3277,"name":"bool","nodeType":"ElementaryTypeName","src":"6466:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6465:6:12"},"scope":3599,"src":"6381:546:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3430,"nodeType":"Block","src":"7060:1316:12","statements":[{"assignments":[3341],"declarations":[{"constant":false,"id":3341,"mutability":"mutable","name":"amount","nameLocation":"7138:6:12","nodeType":"VariableDeclaration","scope":3430,"src":"7130:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3340,"name":"uint256","nodeType":"ElementaryTypeName","src":"7130:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3346,"initialValue":{"expression":{"baseExpression":{"id":3342,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"7147:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3344,"indexExpression":{"id":3343,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"7153:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7147:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7163:6:12","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3934,"src":"7147:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7130:39:12"},{"expression":{"id":3354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3347,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"7217:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3348,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"7226:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"baseExpression":{"id":3349,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"7235:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3351,"indexExpression":{"id":3350,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"7241:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7235:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"id":3352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7251:9:12","memberName":"senderFee","nodeType":"MemberAccess","referencedDeclaration":3924,"src":"7235:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7226:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7217:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3355,"nodeType":"ExpressionStatement","src":"7217:43:12"},{"expression":{"id":3365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3356,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"7339:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7350:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7339:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3359,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3341,"src":"7377:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3360,"name":"_settlePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3332,"src":"7386:14:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"7377:23:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3362,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7376:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3363,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"7404:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7376:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7339:72:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3366,"nodeType":"ExpressionStatement","src":"7339:72:12"},{"expression":{"id":3377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3367,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"7479:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7490:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7479:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3370,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"7505:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7516:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7505:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3372,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"7542:18:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7505:55:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3374,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7504:57:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3375,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"7564:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7504:67:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7479:92:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3378,"nodeType":"ExpressionStatement","src":"7479:92:12"},{"expression":{"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3379,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"7669:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7680:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7669:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3382,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"7707:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7718:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"7707:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":3384,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"7744:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7755:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7744:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7707:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3387,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7706:61:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7669:98:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3389,"nodeType":"ExpressionStatement","src":"7669:98:12"},{"expression":{"id":3400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3390,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"7840:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7851:16:12","memberName":"validatorsReward","nodeType":"MemberAccess","referencedDeclaration":2832,"src":"7840:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3393,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"7871:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7882:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"7871:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3395,"name":"validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"7896:19:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7871:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7870:46:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3398,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"7919:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7870:56:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7840:86:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3401,"nodeType":"ExpressionStatement","src":"7840:86:12"},{"condition":{"id":3402,"name":"_isPartner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3334,"src":"8123:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3428,"nodeType":"Block","src":"8266:104:12","statements":[{"expression":{"id":3426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3417,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"8280:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3419,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8291:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"8280:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3420,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"8306:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8317:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"8306:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":3422,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"8331:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8342:16:12","memberName":"validatorsReward","nodeType":"MemberAccess","referencedDeclaration":2832,"src":"8331:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8306:52:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3425,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8305:54:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8280:79:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3427,"nodeType":"ExpressionStatement","src":"8280:79:12"}]},"id":3429,"nodeType":"IfStatement","src":"8119:251:12","trueBody":{"id":3416,"nodeType":"Block","src":"8135:125:12","statements":[{"expression":{"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3403,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"8149:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8160:23:12","memberName":"liquidityProviderAmount","nodeType":"MemberAccess","referencedDeclaration":2830,"src":"8149:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":3406,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"8187:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8198:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"8187:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8149:60:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3409,"nodeType":"ExpressionStatement","src":"8149:60:12"},{"expression":{"id":3414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3410,"name":"_feeParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"8223:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee memory"}},"id":3412,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8234:11:12","memberName":"protocolFee","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"8223:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8248:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8223:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3415,"nodeType":"ExpressionStatement","src":"8223:26:12"}]}}]},"id":3431,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateFees","nameLocation":"6942:14:12","nodeType":"FunctionDefinition","parameters":{"id":3335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3330,"mutability":"mutable","name":"_orderId","nameLocation":"6965:8:12","nodeType":"VariableDeclaration","scope":3431,"src":"6957:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3329,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6957:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3332,"mutability":"mutable","name":"_settlePercent","nameLocation":"6982:14:12","nodeType":"VariableDeclaration","scope":3431,"src":"6975:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3331,"name":"uint96","nodeType":"ElementaryTypeName","src":"6975:6:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3334,"mutability":"mutable","name":"_isPartner","nameLocation":"7003:10:12","nodeType":"VariableDeclaration","scope":3431,"src":"6998:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3333,"name":"bool","nodeType":"ElementaryTypeName","src":"6998:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6956:58:12"},"returnParameters":{"id":3339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3338,"mutability":"mutable","name":"_feeParams","nameLocation":"7047:10:12","nodeType":"VariableDeclaration","scope":3431,"src":"7036:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_memory_ptr","typeString":"struct Paycrest.fee"},"typeName":{"id":3337,"nodeType":"UserDefinedTypeName","pathNode":{"id":3336,"name":"fee","nameLocations":["7036:3:12"],"nodeType":"IdentifierPath","referencedDeclaration":2833,"src":"7036:3:12"},"referencedDeclaration":2833,"src":"7036:3:12","typeDescriptions":{"typeIdentifier":"t_struct$_fee_$2833_storage_ptr","typeString":"struct Paycrest.fee"}},"visibility":"internal"}],"src":"7035:24:12"},"scope":3599,"src":"6933:1443:12","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[4009],"body":{"id":3444,"nodeType":"Block","src":"8699:39:12","statements":[{"expression":{"baseExpression":{"id":3440,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2838,"src":"8716:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Order_$3935_storage_$","typeString":"mapping(bytes32 => struct IPaycrest.Order storage ref)"}},"id":3442,"indexExpression":{"id":3441,"name":"_orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"8722:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8716:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage","typeString":"struct IPaycrest.Order storage ref"}},"functionReturnParameters":3439,"id":3443,"nodeType":"Return","src":"8709:22:12"}]},"documentation":{"id":3432,"nodeType":"StructuredDocumentation","src":"8577:41:12","text":"@dev See {getOrderInfo-IPaycrest}. "},"functionSelector":"768c6ec0","id":3445,"implemented":true,"kind":"function","modifiers":[],"name":"getOrderInfo","nameLocation":"8632:12:12","nodeType":"FunctionDefinition","parameters":{"id":3435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3434,"mutability":"mutable","name":"_orderId","nameLocation":"8653:8:12","nodeType":"VariableDeclaration","scope":3445,"src":"8645:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3433,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8645:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8644:18:12"},"returnParameters":{"id":3439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3445,"src":"8685:12:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_memory_ptr","typeString":"struct IPaycrest.Order"},"typeName":{"id":3437,"nodeType":"UserDefinedTypeName","pathNode":{"id":3436,"name":"Order","nameLocations":["8685:5:12"],"nodeType":"IdentifierPath","referencedDeclaration":3935,"src":"8685:5:12"},"referencedDeclaration":3935,"src":"8685:5:12","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage_ptr","typeString":"struct IPaycrest.Order"}},"visibility":"internal"}],"src":"8684:14:12"},"scope":3599,"src":"8623:115:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4000],"body":{"id":3457,"nodeType":"Block","src":"8864:49:12","statements":[{"expression":{"baseExpression":{"id":3453,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"8881:17:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3455,"indexExpression":{"id":3454,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3448,"src":"8899:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8881:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3452,"id":3456,"nodeType":"Return","src":"8874:32:12"}]},"documentation":{"id":3446,"nodeType":"StructuredDocumentation","src":"8744:45:12","text":"@dev See {isTokenSupported-IPaycrest}. "},"functionSelector":"75151b63","id":3458,"implemented":true,"kind":"function","modifiers":[],"name":"isTokenSupported","nameLocation":"8803:16:12","nodeType":"FunctionDefinition","parameters":{"id":3449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3448,"mutability":"mutable","name":"_token","nameLocation":"8828:6:12","nodeType":"VariableDeclaration","scope":3458,"src":"8820:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3447,"name":"address","nodeType":"ElementaryTypeName","src":"8820:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8819:16:12"},"returnParameters":{"id":3452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3458,"src":"8858:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3450,"name":"bool","nodeType":"ElementaryTypeName","src":"8858:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8857:6:12"},"scope":3599,"src":"8794:119:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3471,"nodeType":"Block","src":"9080:57:12","statements":[{"expression":{"baseExpression":{"id":3467,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"9097:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3614_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3469,"indexExpression":{"id":3468,"name":"code","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"9125:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9097:33:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3614_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"functionReturnParameters":3466,"id":3470,"nodeType":"Return","src":"9090:40:12"}]},"documentation":{"id":3459,"nodeType":"StructuredDocumentation","src":"8919:56:12","text":"@dev See {getSupportedInstitutionName-IPaycrest}. "},"functionSelector":"87490d86","id":3472,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInstitutionName","nameLocation":"8989:27:12","nodeType":"FunctionDefinition","parameters":{"id":3462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3461,"mutability":"mutable","name":"code","nameLocation":"9025:4:12","nodeType":"VariableDeclaration","scope":3472,"src":"9017:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3460,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9017:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9016:14:12"},"returnParameters":{"id":3466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3465,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3472,"src":"9054:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3614_memory_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"},"typeName":{"id":3464,"nodeType":"UserDefinedTypeName","pathNode":{"id":3463,"name":"InstitutionByCode","nameLocations":["9054:17:12"],"nodeType":"IdentifierPath","referencedDeclaration":3614,"src":"9054:17:12"},"referencedDeclaration":3614,"src":"9054:17:12","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3614_storage_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"}},"visibility":"internal"}],"src":"9053:26:12"},"scope":3599,"src":"8980:157:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3530,"nodeType":"Block","src":"9240:390:12","statements":[{"assignments":[3485],"declarations":[{"constant":false,"id":3485,"mutability":"mutable","name":"institutions","nameLocation":"9271:12:12","nodeType":"VariableDeclaration","scope":3530,"src":"9250:33:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3483,"nodeType":"UserDefinedTypeName","pathNode":{"id":3482,"name":"Institution","nameLocations":["9250:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3609,"src":"9250:11:12"},"referencedDeclaration":3609,"src":"9250:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3484,"nodeType":"ArrayTypeName","src":"9250:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"id":3489,"initialValue":{"baseExpression":{"id":3486,"name":"supportedInstitutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3644,"src":"9286:21:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution storage ref[] storage ref)"}},"id":3488,"indexExpression":{"id":3487,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3474,"src":"9308:8:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9286:31:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_storage_$dyn_storage","typeString":"struct PaycrestSettingManager.Institution storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9250:67:12"},{"assignments":[3491],"declarations":[{"constant":false,"id":3491,"mutability":"mutable","name":"length","nameLocation":"9335:6:12","nodeType":"VariableDeclaration","scope":3530,"src":"9327:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3490,"name":"uint256","nodeType":"ElementaryTypeName","src":"9327:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3494,"initialValue":{"expression":{"id":3492,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3485,"src":"9344:12:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9357:6:12","memberName":"length","nodeType":"MemberAccess","src":"9344:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9327:36:12"},{"assignments":[3499],"declarations":[{"constant":false,"id":3499,"mutability":"mutable","name":"result","nameLocation":"9394:6:12","nodeType":"VariableDeclaration","scope":3530,"src":"9373:27:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3497,"nodeType":"UserDefinedTypeName","pathNode":{"id":3496,"name":"Institution","nameLocations":["9373:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3609,"src":"9373:11:12"},"referencedDeclaration":3609,"src":"9373:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3498,"nodeType":"ArrayTypeName","src":"9373:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"id":3506,"initialValue":{"arguments":[{"id":3504,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3491,"src":"9421:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9403:17:12","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct PaycrestSettingManager.Institution memory[] memory)"},"typeName":{"baseType":{"id":3501,"nodeType":"UserDefinedTypeName","pathNode":{"id":3500,"name":"Institution","nameLocations":["9407:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3609,"src":"9407:11:12"},"referencedDeclaration":3609,"src":"9407:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3502,"nodeType":"ArrayTypeName","src":"9407:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}}},"id":3505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9403:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9373:55:12"},{"body":{"id":3526,"nodeType":"Block","src":"9481:111:12","statements":[{"expression":{"id":3520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3514,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3499,"src":"9495:6:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3516,"indexExpression":{"id":3515,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"9502:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9495:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3517,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3485,"src":"9507:12:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3519,"indexExpression":{"id":3518,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"9520:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9507:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"src":"9495:27:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3521,"nodeType":"ExpressionStatement","src":"9495:27:12"},{"id":3525,"nodeType":"UncheckedBlock","src":"9536:46:12","statements":[{"expression":{"id":3523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9564:3:12","subExpression":{"id":3522,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"9564:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3524,"nodeType":"ExpressionStatement","src":"9564:3:12"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3511,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"9467:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3512,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3491,"src":"9471:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9467:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3527,"initializationExpression":{"assignments":[3508],"declarations":[{"constant":false,"id":3508,"mutability":"mutable","name":"i","nameLocation":"9460:1:12","nodeType":"VariableDeclaration","scope":3527,"src":"9452:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3507,"name":"uint256","nodeType":"ElementaryTypeName","src":"9452:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3510,"initialValue":{"hexValue":"30","id":3509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9464:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9452:13:12"},"nodeType":"ForStatement","src":"9447:145:12"},{"expression":{"id":3528,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3499,"src":"9617:6:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"functionReturnParameters":3480,"id":3529,"nodeType":"Return","src":"9610:13:12"}]},"functionSelector":"02621338","id":3531,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInstitutions","nameLocation":"9152:24:12","nodeType":"FunctionDefinition","parameters":{"id":3475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3474,"mutability":"mutable","name":"currency","nameLocation":"9185:8:12","nodeType":"VariableDeclaration","scope":3531,"src":"9177:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3473,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9177:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9176:18:12"},"returnParameters":{"id":3480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3531,"src":"9218:20:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3477,"nodeType":"UserDefinedTypeName","pathNode":{"id":3476,"name":"Institution","nameLocations":["9218:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":3609,"src":"9218:11:12"},"referencedDeclaration":3609,"src":"9218:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3478,"nodeType":"ArrayTypeName","src":"9218:13:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"src":"9217:22:12"},"scope":3599,"src":"9143:487:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4019],"body":{"id":3546,"nodeType":"Block","src":"9789:73:12","statements":[{"expression":{"components":[{"id":3541,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"9806:18:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":3542,"name":"validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"9826:19:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":3543,"name":"MAX_BPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"9847:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3544,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9805:50:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$_t_uint256_$","typeString":"tuple(uint128,uint128,uint256)"}},"functionReturnParameters":3540,"id":3545,"nodeType":"Return","src":"9799:56:12"}]},"documentation":{"id":3532,"nodeType":"StructuredDocumentation","src":"9636:42:12","text":"@dev See {getFeeDetails-IPaycrest}. "},"functionSelector":"b810c636","id":3547,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"9692:13:12","nodeType":"FunctionDefinition","parameters":{"id":3533,"nodeType":"ParameterList","parameters":[],"src":"9705:2:12"},"returnParameters":{"id":3540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3535,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3547,"src":"9739:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3534,"name":"uint128","nodeType":"ElementaryTypeName","src":"9739:7:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3537,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3547,"src":"9757:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3536,"name":"uint128","nodeType":"ElementaryTypeName","src":"9757:7:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3547,"src":"9775:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3538,"name":"uint256","nodeType":"ElementaryTypeName","src":"9775:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9729:59:12"},"scope":3599,"src":"9683:179:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4025],"body":{"id":3555,"nodeType":"Block","src":"9985:42:12","statements":[{"expression":{"id":3553,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3624,"src":"10002:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3552,"id":3554,"nodeType":"Return","src":"9995:25:12"}]},"documentation":{"id":3548,"nodeType":"StructuredDocumentation","src":"9868:49:12","text":"@dev See {getAggregatorAddress-IPaycrest}. "},"functionSelector":"e8d6e0de","id":3556,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregatorAddress","nameLocation":"9931:20:12","nodeType":"FunctionDefinition","parameters":{"id":3549,"nodeType":"ParameterList","parameters":[],"src":"9951:2:12"},"returnParameters":{"id":3552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3551,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3556,"src":"9976:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3550,"name":"address","nodeType":"ElementaryTypeName","src":"9976:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9975:9:12"},"scope":3599,"src":"9922:105:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4039],"body":{"id":3568,"nodeType":"Block","src":"10161:46:12","statements":[{"expression":{"baseExpression":{"id":3564,"name":"_isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3638,"src":"10178:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3566,"indexExpression":{"id":3565,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"10193:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10178:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3563,"id":3567,"nodeType":"Return","src":"10171:29:12"}]},"documentation":{"id":3557,"nodeType":"StructuredDocumentation","src":"10033:49:12","text":"@dev See {getWhitelistedStatus-IPaycrest}. "},"functionSelector":"d8e8de34","id":3569,"implemented":true,"kind":"function","modifiers":[],"name":"getWhitelistedStatus","nameLocation":"10096:20:12","nodeType":"FunctionDefinition","parameters":{"id":3560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3559,"mutability":"mutable","name":"sender","nameLocation":"10125:6:12","nodeType":"VariableDeclaration","scope":3569,"src":"10117:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3558,"name":"address","nodeType":"ElementaryTypeName","src":"10117:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10116:16:12"},"returnParameters":{"id":3563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3569,"src":"10155:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3561,"name":"bool","nodeType":"ElementaryTypeName","src":"10155:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10154:6:12"},"scope":3599,"src":"10087:120:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4031],"body":{"id":3577,"nodeType":"Block","src":"10321:35:12","statements":[{"expression":{"id":3575,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"10338:11:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":3574,"id":3576,"nodeType":"Return","src":"10331:18:12"}]},"documentation":{"id":3570,"nodeType":"StructuredDocumentation","src":"10213:42:12","text":"@dev See {getAggregator-IPaycrest}. "},"functionSelector":"3ad59dbc","id":3578,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregator","nameLocation":"10269:13:12","nodeType":"FunctionDefinition","parameters":{"id":3571,"nodeType":"ParameterList","parameters":[],"src":"10282:2:12"},"returnParameters":{"id":3574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3578,"src":"10307:12:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3572,"name":"bytes","nodeType":"ElementaryTypeName","src":"10307:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10306:14:12"},"scope":3599,"src":"10260:96:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3597,"nodeType":"Block","src":"10543:61:12","statements":[{"expression":{"arguments":[{"id":3593,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"10577:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3594,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3584,"src":"10589:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3590,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3580,"src":"10560:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3589,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"10553:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2806_$","typeString":"type(contract IERC20)"}},"id":3591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10553:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2806","typeString":"contract IERC20"}},"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10568:8:12","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"10553:23:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10553:44:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3596,"nodeType":"ExpressionStatement","src":"10553:44:12"}]},"functionSelector":"d9caed12","id":3598,"implemented":true,"kind":"function","modifiers":[{"id":3587,"kind":"modifierInvocation","modifierName":{"id":3586,"name":"onlyOwner","nameLocations":["10533:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"10533:9:12"},"nodeType":"ModifierInvocation","src":"10533:9:12"}],"name":"withdraw","nameLocation":"10462:8:12","nodeType":"FunctionDefinition","parameters":{"id":3585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3580,"mutability":"mutable","name":"_token","nameLocation":"10479:6:12","nodeType":"VariableDeclaration","scope":3598,"src":"10471:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3579,"name":"address","nodeType":"ElementaryTypeName","src":"10471:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3582,"mutability":"mutable","name":"_recipient","nameLocation":"10495:10:12","nodeType":"VariableDeclaration","scope":3598,"src":"10487:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3581,"name":"address","nodeType":"ElementaryTypeName","src":"10487:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3584,"mutability":"mutable","name":"_amount","nameLocation":"10515:7:12","nodeType":"VariableDeclaration","scope":3598,"src":"10507:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3583,"name":"uint256","nodeType":"ElementaryTypeName","src":"10507:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10470:53:12"},"returnParameters":{"id":3588,"nodeType":"ParameterList","parameters":[],"src":"10543:0:12"},"scope":3599,"src":"10453:151:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3600,"src":"367:10240:12","usedErrors":[]}],"src":"38:10570:12"},"id":12},"contracts/PaycrestSettingManager.sol":{"ast":{"absolutePath":"contracts/PaycrestSettingManager.sol","exportedSymbols":{"AddressUpgradeable":[1120],"ContextUpgradeable":[1162],"Initializable":[300],"OwnableUpgradeable":[131],"PaycrestSettingManager":[3849]},"id":3850,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3601,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:13"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":3602,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3850,"sourceUnit":132,"src":"62:75:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3603,"name":"OwnableUpgradeable","nameLocations":["174:18:13"],"nodeType":"IdentifierPath","referencedDeclaration":131,"src":"174:18:13"},"id":3604,"nodeType":"InheritanceSpecifier","src":"174:18:13"}],"canonicalName":"PaycrestSettingManager","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3849,"linearizedBaseContracts":[3849,131,1162,300],"name":"PaycrestSettingManager","nameLocation":"148:22:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"PaycrestSettingManager.Institution","id":3609,"members":[{"constant":false,"id":3606,"mutability":"mutable","name":"code","nameLocation":"237:4:13","nodeType":"VariableDeclaration","scope":3609,"src":"229:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3605,"name":"bytes32","nodeType":"ElementaryTypeName","src":"229:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3608,"mutability":"mutable","name":"name","nameLocation":"294:4:13","nodeType":"VariableDeclaration","scope":3609,"src":"286:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3607,"name":"bytes32","nodeType":"ElementaryTypeName","src":"286:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Institution","nameLocation":"207:11:13","nodeType":"StructDefinition","scope":3849,"src":"200:109:13","visibility":"public"},{"canonicalName":"PaycrestSettingManager.InstitutionByCode","id":3614,"members":[{"constant":false,"id":3611,"mutability":"mutable","name":"name","nameLocation":"357:4:13","nodeType":"VariableDeclaration","scope":3614,"src":"349:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"349:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3613,"mutability":"mutable","name":"currency","nameLocation":"379:8:13","nodeType":"VariableDeclaration","scope":3614,"src":"371:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3612,"name":"bytes32","nodeType":"ElementaryTypeName","src":"371:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"InstitutionByCode","nameLocation":"321:17:13","nodeType":"StructDefinition","scope":3849,"src":"314:80:13","visibility":"public"},{"constant":false,"id":3616,"mutability":"mutable","name":"MAX_BPS","nameLocation":"416:7:13","nodeType":"VariableDeclaration","scope":3849,"src":"399:24:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3615,"name":"uint256","nodeType":"ElementaryTypeName","src":"399:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3618,"mutability":"mutable","name":"protocolFeePercent","nameLocation":"446:18:13","nodeType":"VariableDeclaration","scope":3849,"src":"429:35:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3617,"name":"uint128","nodeType":"ElementaryTypeName","src":"429:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3620,"mutability":"mutable","name":"validatorFeePercent","nameLocation":"493:19:13","nodeType":"VariableDeclaration","scope":3849,"src":"476:36:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3619,"name":"uint128","nodeType":"ElementaryTypeName","src":"476:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3622,"mutability":"mutable","name":"feeRecipient","nameLocation":"543:12:13","nodeType":"VariableDeclaration","scope":3849,"src":"526:29:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3621,"name":"address","nodeType":"ElementaryTypeName","src":"526:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3624,"mutability":"mutable","name":"_aggregatorAddress","nameLocation":"578:18:13","nodeType":"VariableDeclaration","scope":3849,"src":"561:35:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3623,"name":"address","nodeType":"ElementaryTypeName","src":"561:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3626,"mutability":"mutable","name":"_aggregator","nameLocation":"617:11:13","nodeType":"VariableDeclaration","scope":3849,"src":"602:26:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes"},"typeName":{"id":3625,"name":"bytes","nodeType":"ElementaryTypeName","src":"602:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3630,"mutability":"mutable","name":"__gap","nameLocation":"768:5:13","nodeType":"VariableDeclaration","scope":3849,"src":"748:25:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":3627,"name":"uint256","nodeType":"ElementaryTypeName","src":"748:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3629,"length":{"hexValue":"3530","id":3628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"756:2:13","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"748:11:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"},{"constant":false,"id":3634,"mutability":"mutable","name":"_isTokenSupported","nameLocation":"814:17:13","nodeType":"VariableDeclaration","scope":3849,"src":"780:51:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3633,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3631,"name":"address","nodeType":"ElementaryTypeName","src":"788:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"780:24:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3632,"name":"bool","nodeType":"ElementaryTypeName","src":"799:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":3638,"mutability":"mutable","name":"_isWhitelisted","nameLocation":"871:14:13","nodeType":"VariableDeclaration","scope":3849,"src":"837:48:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3637,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3635,"name":"address","nodeType":"ElementaryTypeName","src":"845:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"837:24:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3636,"name":"bool","nodeType":"ElementaryTypeName","src":"856:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":3644,"mutability":"mutable","name":"supportedInstitutions","nameLocation":"935:21:13","nodeType":"VariableDeclaration","scope":3849,"src":"892:64:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])"},"typeName":{"id":3643,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3639,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"892:33:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":3641,"nodeType":"UserDefinedTypeName","pathNode":{"id":3640,"name":"Institution","nameLocations":["911:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":3609,"src":"911:11:13"},"referencedDeclaration":3609,"src":"911:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3642,"nodeType":"ArrayTypeName","src":"911:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}}},"visibility":"internal"},{"constant":false,"id":3649,"mutability":"mutable","name":"supportedInstitutionsByCode","nameLocation":"1009:27:13","nodeType":"VariableDeclaration","scope":3849,"src":"962:74:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3614_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)"},"typeName":{"id":3648,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"970:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"962:37:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3614_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3647,"nodeType":"UserDefinedTypeName","pathNode":{"id":3646,"name":"InstitutionByCode","nameLocations":["981:17:13"],"nodeType":"IdentifierPath","referencedDeclaration":3614,"src":"981:17:13"},"referencedDeclaration":3614,"src":"981:17:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3614_storage_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode"}}},"visibility":"internal"},{"anonymous":false,"eventSelector":"e22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace930","id":3657,"name":"SettingManagerBool","nameLocation":"1049:18:13","nodeType":"EventDefinition","parameters":{"id":3656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3651,"indexed":false,"mutability":"mutable","name":"what","nameLocation":"1076:4:13","nodeType":"VariableDeclaration","scope":3657,"src":"1068:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3650,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1068:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3653,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1090:5:13","nodeType":"VariableDeclaration","scope":3657,"src":"1082:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3652,"name":"address","nodeType":"ElementaryTypeName","src":"1082:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3655,"indexed":false,"mutability":"mutable","name":"status","nameLocation":"1102:6:13","nodeType":"VariableDeclaration","scope":3657,"src":"1097:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3654,"name":"bool","nodeType":"ElementaryTypeName","src":"1097:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1067:42:13"},"src":"1043:67:13"},{"anonymous":false,"eventSelector":"e38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df","id":3663,"name":"PaycrestFees","nameLocation":"1121:12:13","nodeType":"EventDefinition","parameters":{"id":3662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3659,"indexed":false,"mutability":"mutable","name":"protocolFee","nameLocation":"1142:11:13","nodeType":"VariableDeclaration","scope":3663,"src":"1134:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3658,"name":"uint128","nodeType":"ElementaryTypeName","src":"1134:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3661,"indexed":false,"mutability":"mutable","name":"validatorFeePercent","nameLocation":"1163:19:13","nodeType":"VariableDeclaration","scope":3663,"src":"1155:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3660,"name":"uint128","nodeType":"ElementaryTypeName","src":"1155:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1133:50:13"},"src":"1115:69:13"},{"anonymous":false,"eventSelector":"6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef","id":3667,"name":"SetAggregator","nameLocation":"1195:13:13","nodeType":"EventDefinition","parameters":{"id":3666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3665,"indexed":false,"mutability":"mutable","name":"aggregator","nameLocation":"1215:10:13","nodeType":"VariableDeclaration","scope":3667,"src":"1209:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3664,"name":"bytes","nodeType":"ElementaryTypeName","src":"1209:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1208:18:13"},"src":"1189:38:13"},{"anonymous":false,"eventSelector":"2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a73","id":3671,"name":"SetFeeRecipient","nameLocation":"1238:15:13","nodeType":"EventDefinition","parameters":{"id":3670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3669,"indexed":false,"mutability":"mutable","name":"feeRecipient","nameLocation":"1262:12:13","nodeType":"VariableDeclaration","scope":3671,"src":"1254:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3668,"name":"address","nodeType":"ElementaryTypeName","src":"1254:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1253:22:13"},"src":"1232:44:13"},{"body":{"id":3718,"nodeType":"Block","src":"1572:255:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3683,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3675,"src":"1590:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1607:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1599:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3684,"name":"address","nodeType":"ElementaryTypeName","src":"1599:7:13","typeDescriptions":{}}},"id":3687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1599:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1590:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50617963726573743a207a65726f2061646472657373","id":3689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1611:24:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""},"value":"Paycrest: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""}],"id":3682,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1582:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1582:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3691,"nodeType":"ExpressionStatement","src":"1582:54:13"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3692,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"1650:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"746f6b656e","id":3693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1658:7:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b9b0454cadcb5884dd3faa6ba975da4d2459aa3f11d31291a25a8358f84946d","typeString":"literal_string \"token\""},"value":"token"},"src":"1650:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3701,"nodeType":"IfStatement","src":"1646:54:13","trueBody":{"expression":{"id":3699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3695,"name":"_isTokenSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"1667:17:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3697,"indexExpression":{"id":3696,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3675,"src":"1685:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1667:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3698,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"1694:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1667:33:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3700,"nodeType":"ExpressionStatement","src":"1667:33:13"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3702,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"1714:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"77686974656c697374","id":3703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1722:11:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_54c80de7e611b57d6d38523e3c0c59a6a3e72cddf62c95cf51a204e52c1a86ad","typeString":"literal_string \"whitelist\""},"value":"whitelist"},"src":"1714:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3711,"nodeType":"IfStatement","src":"1710:55:13","trueBody":{"expression":{"id":3709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3705,"name":"_isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3638,"src":"1735:14:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3707,"indexExpression":{"id":3706,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3675,"src":"1750:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1735:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3708,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"1759:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1735:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3710,"nodeType":"ExpressionStatement","src":"1735:30:13"}},{"eventCall":{"arguments":[{"id":3713,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"1800:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3714,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3675,"src":"1806:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3715,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"1813:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3712,"name":"SettingManagerBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3657,"src":"1781:18:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bool)"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1781:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3717,"nodeType":"EmitStatement","src":"1776:44:13"}]},"functionSelector":"99e3c0b4","id":3719,"implemented":true,"kind":"function","modifiers":[{"id":3680,"kind":"modifierInvocation","modifierName":{"id":3679,"name":"onlyOwner","nameLocations":["1562:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"1562:9:13"},"nodeType":"ModifierInvocation","src":"1562:9:13"}],"name":"settingManagerBool","nameLocation":"1492:18:13","nodeType":"FunctionDefinition","parameters":{"id":3678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3673,"mutability":"mutable","name":"what","nameLocation":"1519:4:13","nodeType":"VariableDeclaration","scope":3719,"src":"1511:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3672,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1511:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3675,"mutability":"mutable","name":"value","nameLocation":"1533:5:13","nodeType":"VariableDeclaration","scope":3719,"src":"1525:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3674,"name":"address","nodeType":"ElementaryTypeName","src":"1525:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3677,"mutability":"mutable","name":"status","nameLocation":"1545:6:13","nodeType":"VariableDeclaration","scope":3719,"src":"1540:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3676,"name":"bool","nodeType":"ElementaryTypeName","src":"1540:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1510:42:13"},"returnParameters":{"id":3681,"nodeType":"ParameterList","parameters":[],"src":"1572:0:13"},"scope":3849,"src":"1483:344:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3772,"nodeType":"Block","src":"1939:394:13","statements":[{"assignments":[3731],"declarations":[{"constant":false,"id":3731,"mutability":"mutable","name":"length","nameLocation":"1958:6:13","nodeType":"VariableDeclaration","scope":3772,"src":"1950:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3730,"name":"uint256","nodeType":"ElementaryTypeName","src":"1950:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3734,"initialValue":{"expression":{"id":3732,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3725,"src":"1967:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1980:6:13","memberName":"length","nodeType":"MemberAccess","src":"1967:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1950:36:13"},{"body":{"id":3770,"nodeType":"Block","src":"2027:300:13","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3746,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3725,"src":"2078:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3748,"indexExpression":{"id":3747,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2091:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2078:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Institution_$3609_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}],"expression":{"baseExpression":{"id":3742,"name":"supportedInstitutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3644,"src":"2041:21:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.Institution storage ref[] storage ref)"}},"id":3744,"indexExpression":{"id":3743,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"2063:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2041:31:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_storage_$dyn_storage","typeString":"struct PaycrestSettingManager.Institution storage ref[] storage ref"}},"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2073:4:13","memberName":"push","nodeType":"MemberAccess","src":"2041:36:13","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_ptr_$_t_struct$_Institution_$3609_storage_$returns$__$attached_to$_t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_ptr_$","typeString":"function (struct PaycrestSettingManager.Institution storage ref[] storage pointer,struct PaycrestSettingManager.Institution storage ref)"}},"id":3749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2041:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3750,"nodeType":"ExpressionStatement","src":"2041:53:13"},{"expression":{"id":3764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3751,"name":"supportedInstitutionsByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3649,"src":"2108:27:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_InstitutionByCode_$3614_storage_$","typeString":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode storage ref)"}},"id":3756,"indexExpression":{"expression":{"baseExpression":{"id":3752,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3725,"src":"2136:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3754,"indexExpression":{"id":3753,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2149:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2136:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2152:4:13","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":3606,"src":"2136:20:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2108:49:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3614_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"baseExpression":{"id":3758,"name":"institutions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3725,"src":"2202:12:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory[] memory"}},"id":3760,"indexExpression":{"id":3759,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2215:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2202:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_memory_ptr","typeString":"struct PaycrestSettingManager.Institution memory"}},"id":3761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2218:4:13","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":3608,"src":"2202:20:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3762,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"2234:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3757,"name":"InstitutionByCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3614,"src":"2160:17:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_InstitutionByCode_$3614_storage_ptr_$","typeString":"type(struct PaycrestSettingManager.InstitutionByCode storage pointer)"}},"id":3763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["2196:4:13","2224:8:13"],"names":["name","currency"],"nodeType":"FunctionCall","src":"2160:97:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3614_memory_ptr","typeString":"struct PaycrestSettingManager.InstitutionByCode memory"}},"src":"2108:149:13","typeDescriptions":{"typeIdentifier":"t_struct$_InstitutionByCode_$3614_storage","typeString":"struct PaycrestSettingManager.InstitutionByCode storage ref"}},"id":3765,"nodeType":"ExpressionStatement","src":"2108:149:13"},{"id":3769,"nodeType":"UncheckedBlock","src":"2271:46:13","statements":[{"expression":{"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2299:3:13","subExpression":{"id":3766,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2299:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3768,"nodeType":"ExpressionStatement","src":"2299:3:13"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3739,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3736,"src":"2013:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3740,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"2017:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2013:10:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3771,"initializationExpression":{"assignments":[3736],"declarations":[{"constant":false,"id":3736,"mutability":"mutable","name":"i","nameLocation":"2006:1:13","nodeType":"VariableDeclaration","scope":3771,"src":"2001:6:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3735,"name":"uint","nodeType":"ElementaryTypeName","src":"2001:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3738,"initialValue":{"hexValue":"30","id":3737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2010:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2001:10:13"},"nodeType":"ForStatement","src":"1996:331:13"}]},"functionSelector":"32200882","id":3773,"implemented":true,"kind":"function","modifiers":[{"id":3728,"kind":"modifierInvocation","modifierName":{"id":3727,"name":"onlyOwner","nameLocations":["1929:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"1929:9:13"},"nodeType":"ModifierInvocation","src":"1929:9:13"}],"name":"setSupportedInstitutions","nameLocation":"1842:24:13","nodeType":"FunctionDefinition","parameters":{"id":3726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3721,"mutability":"mutable","name":"currency","nameLocation":"1875:8:13","nodeType":"VariableDeclaration","scope":3773,"src":"1867:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3720,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1867:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3725,"mutability":"mutable","name":"institutions","nameLocation":"1906:12:13","nodeType":"VariableDeclaration","scope":3773,"src":"1885:33:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","typeString":"struct PaycrestSettingManager.Institution[]"},"typeName":{"baseType":{"id":3723,"nodeType":"UserDefinedTypeName","pathNode":{"id":3722,"name":"Institution","nameLocations":["1885:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":3609,"src":"1885:11:13"},"referencedDeclaration":3609,"src":"1885:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_Institution_$3609_storage_ptr","typeString":"struct PaycrestSettingManager.Institution"}},"id":3724,"nodeType":"ArrayTypeName","src":"1885:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Institution_$3609_storage_$dyn_storage_ptr","typeString":"struct PaycrestSettingManager.Institution[]"}},"visibility":"internal"}],"src":"1866:53:13"},"returnParameters":{"id":3729,"nodeType":"ParameterList","parameters":[],"src":"1939:0:13"},"scope":3849,"src":"1833:500:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3795,"nodeType":"Block","src":"2445:179:13","statements":[{"expression":{"id":3784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3782,"name":"protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"2455:18:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3783,"name":"_protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3775,"src":"2476:19:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2455:40:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3785,"nodeType":"ExpressionStatement","src":"2455:40:13"},{"expression":{"id":3788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3786,"name":"validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"2505:19:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3787,"name":"_validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3777,"src":"2527:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2505:42:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3789,"nodeType":"ExpressionStatement","src":"2505:42:13"},{"eventCall":{"arguments":[{"id":3791,"name":"_protocolFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3775,"src":"2575:19:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":3792,"name":"_validatorFeePercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3777,"src":"2596:20:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":3790,"name":"PaycrestFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"2562:12:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (uint128,uint128)"}},"id":3793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2562:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3794,"nodeType":"EmitStatement","src":"2557:60:13"}]},"functionSelector":"f5326b19","id":3796,"implemented":true,"kind":"function","modifiers":[{"id":3780,"kind":"modifierInvocation","modifierName":{"id":3779,"name":"onlyOwner","nameLocations":["2435:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2435:9:13"},"nodeType":"ModifierInvocation","src":"2435:9:13"}],"name":"updateProtocolFees","nameLocation":"2348:18:13","nodeType":"FunctionDefinition","parameters":{"id":3778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3775,"mutability":"mutable","name":"_protocolFeePercent","nameLocation":"2375:19:13","nodeType":"VariableDeclaration","scope":3796,"src":"2367:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3774,"name":"uint128","nodeType":"ElementaryTypeName","src":"2367:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3777,"mutability":"mutable","name":"_validatorFeePercent","nameLocation":"2404:20:13","nodeType":"VariableDeclaration","scope":3796,"src":"2396:28:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3776,"name":"uint128","nodeType":"ElementaryTypeName","src":"2396:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2366:59:13"},"returnParameters":{"id":3781,"nodeType":"ParameterList","parameters":[],"src":"2445:0:13"},"scope":3849,"src":"2339:285:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3831,"nodeType":"Block","src":"2711:182:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3806,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3800,"src":"2729:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2746:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2738:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3807,"name":"address","nodeType":"ElementaryTypeName","src":"2738:7:13","typeDescriptions":{}}},"id":3810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2738:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2729:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50617963726573743a207a65726f2061646472657373","id":3812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2750:24:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""},"value":"Paycrest: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","typeString":"literal_string \"Paycrest: zero address\""}],"id":3805,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2721:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2721:54:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3814,"nodeType":"ExpressionStatement","src":"2721:54:13"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3815,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3798,"src":"2789:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"666565","id":3816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2797:5:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_833b9f6abf0b529613680afe2a00fa663cc95cbdc47d726d85a044462eabbf02","typeString":"literal_string \"fee\""},"value":"fee"},"src":"2789:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3822,"nodeType":"IfStatement","src":"2785:39:13","trueBody":{"expression":{"id":3820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3818,"name":"feeRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3622,"src":"2804:12:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3800,"src":"2819:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2804:20:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3821,"nodeType":"ExpressionStatement","src":"2804:20:13"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3823,"name":"what","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3798,"src":"2838:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"61676772656761746f72","id":3824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2846:12:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_e124d7cc79a19705865fa21b784ba187cd393559e960c0c071132cb60354d1a3","typeString":"literal_string \"aggregator\""},"value":"aggregator"},"src":"2838:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3830,"nodeType":"IfStatement","src":"2834:52:13","trueBody":{"expression":{"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3826,"name":"_aggregatorAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3624,"src":"2860:18:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3827,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3800,"src":"2881:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2860:26:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3829,"nodeType":"ExpressionStatement","src":"2860:26:13"}}]},"functionSelector":"79a0effb","id":3832,"implemented":true,"kind":"function","modifiers":[{"id":3803,"kind":"modifierInvocation","modifierName":{"id":3802,"name":"onlyOwner","nameLocations":["2701:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2701:9:13"},"nodeType":"ModifierInvocation","src":"2701:9:13"}],"name":"updateProtocolAddresses","nameLocation":"2639:23:13","nodeType":"FunctionDefinition","parameters":{"id":3801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3798,"mutability":"mutable","name":"what","nameLocation":"2671:4:13","nodeType":"VariableDeclaration","scope":3832,"src":"2663:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3797,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2663:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3800,"mutability":"mutable","name":"value","nameLocation":"2685:5:13","nodeType":"VariableDeclaration","scope":3832,"src":"2677:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3799,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2662:29:13"},"returnParameters":{"id":3804,"nodeType":"ParameterList","parameters":[],"src":"2711:0:13"},"scope":3849,"src":"2630:263:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3847,"nodeType":"Block","src":"2979:81:13","statements":[{"expression":{"id":3841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3839,"name":"_aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"2989:11:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3840,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3834,"src":"3003:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"2989:24:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":3842,"nodeType":"ExpressionStatement","src":"2989:24:13"},{"eventCall":{"arguments":[{"id":3844,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3834,"src":"3042:10:13","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3843,"name":"SetAggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3667,"src":"3028:13:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":3845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3028:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3846,"nodeType":"EmitStatement","src":"3023:30:13"}]},"functionSelector":"cb79455b","id":3848,"implemented":true,"kind":"function","modifiers":[{"id":3837,"kind":"modifierInvocation","modifierName":{"id":3836,"name":"onlyOwner","nameLocations":["2969:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":45,"src":"2969:9:13"},"nodeType":"ModifierInvocation","src":"2969:9:13"}],"name":"updateProtocolAggregator","nameLocation":"2908:24:13","nodeType":"FunctionDefinition","parameters":{"id":3835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3834,"mutability":"mutable","name":"aggregator","nameLocation":"2948:10:13","nodeType":"VariableDeclaration","scope":3848,"src":"2933:25:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3833,"name":"bytes","nodeType":"ElementaryTypeName","src":"2933:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2932:27:13"},"returnParameters":{"id":3838,"nodeType":"ParameterList","parameters":[],"src":"2979:0:13"},"scope":3849,"src":"2899:161:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3850,"src":"139:2924:13","usedErrors":[]}],"src":"38:3026:13"},"id":13},"contracts/interface/IPaycrest.sol":{"ast":{"absolutePath":"contracts/interface/IPaycrest.sol","exportedSymbols":{"IERC20":[2806],"IPaycrest":[4040]},"id":4041,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3851,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:14"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3853,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4041,"sourceUnit":2807,"src":"63:70:14","symbolAliases":[{"foreign":{"id":3852,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2806,"src":"71:6:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPaycrest","contractDependencies":[],"contractKind":"interface","documentation":{"id":3854,"nodeType":"StructuredDocumentation","src":"134:130:14","text":" @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\n Factory and global config params"},"fullyImplemented":false,"id":4040,"linearizedBaseContracts":[4040],"name":"IPaycrest","nameLocation":"275:9:14","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3855,"nodeType":"StructuredDocumentation","src":"483:38:14","text":"@dev Emitted when deposit is made."},"eventSelector":"2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b","id":3871,"name":"Deposit","nameLocation":"532:7:14","nodeType":"EventDefinition","parameters":{"id":3870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3857,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"556:5:14","nodeType":"VariableDeclaration","scope":3871,"src":"540:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3856,"name":"address","nodeType":"ElementaryTypeName","src":"540:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3859,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"579:6:14","nodeType":"VariableDeclaration","scope":3871,"src":"563:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3858,"name":"uint256","nodeType":"ElementaryTypeName","src":"563:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3861,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"603:7:14","nodeType":"VariableDeclaration","scope":3871,"src":"587:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3860,"name":"bytes32","nodeType":"ElementaryTypeName","src":"587:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3863,"indexed":false,"mutability":"mutable","name":"rate","nameLocation":"620:4:14","nodeType":"VariableDeclaration","scope":3871,"src":"612:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3862,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3865,"indexed":false,"mutability":"mutable","name":"institutionCode","nameLocation":"634:15:14","nodeType":"VariableDeclaration","scope":3871,"src":"626:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3864,"name":"bytes32","nodeType":"ElementaryTypeName","src":"626:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3867,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"659:5:14","nodeType":"VariableDeclaration","scope":3871,"src":"651:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"651:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3869,"indexed":false,"mutability":"mutable","name":"messageHash","nameLocation":"673:11:14","nodeType":"VariableDeclaration","scope":3871,"src":"666:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3868,"name":"string","nodeType":"ElementaryTypeName","src":"666:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:146:14"},"src":"526:160:14"},{"anonymous":false,"documentation":{"id":3872,"nodeType":"StructuredDocumentation","src":"691:52:14","text":"@dev Emitted when aggregator settle transaction."},"eventSelector":"f26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c05326","id":3884,"name":"Settled","nameLocation":"754:7:14","nodeType":"EventDefinition","parameters":{"id":3883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3874,"indexed":false,"mutability":"mutable","name":"_splitOrderId","nameLocation":"770:13:14","nodeType":"VariableDeclaration","scope":3884,"src":"762:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3873,"name":"bytes32","nodeType":"ElementaryTypeName","src":"762:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3876,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"801:7:14","nodeType":"VariableDeclaration","scope":3884,"src":"785:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3875,"name":"bytes32","nodeType":"ElementaryTypeName","src":"785:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3878,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"818:5:14","nodeType":"VariableDeclaration","scope":3884,"src":"810:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3877,"name":"bytes32","nodeType":"ElementaryTypeName","src":"810:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3880,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nameLocation":"841:17:14","nodeType":"VariableDeclaration","scope":3884,"src":"825:33:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3879,"name":"address","nodeType":"ElementaryTypeName","src":"825:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3882,"indexed":false,"mutability":"mutable","name":"settlePercent","nameLocation":"867:13:14","nodeType":"VariableDeclaration","scope":3884,"src":"860:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3881,"name":"uint96","nodeType":"ElementaryTypeName","src":"860:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"761:120:14"},"src":"748:134:14"},{"anonymous":false,"documentation":{"id":3885,"nodeType":"StructuredDocumentation","src":"887:52:14","text":"@dev Emitted when aggregator refund transaction."},"eventSelector":"007c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f","id":3891,"name":"Refunded","nameLocation":"950:8:14","nodeType":"EventDefinition","parameters":{"id":3890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3887,"indexed":true,"mutability":"mutable","name":"orderId","nameLocation":"975:7:14","nodeType":"VariableDeclaration","scope":3891,"src":"959:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3886,"name":"bytes32","nodeType":"ElementaryTypeName","src":"959:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3889,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"992:5:14","nodeType":"VariableDeclaration","scope":3891,"src":"984:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3888,"name":"bytes32","nodeType":"ElementaryTypeName","src":"984:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"958:40:14"},"src":"944:55:14"},{"anonymous":false,"documentation":{"id":3892,"nodeType":"StructuredDocumentation","src":"1004:48:14","text":"@dev Emitted when sender get therir rewards."},"eventSelector":"96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c2","id":3898,"name":"TransferSenderFee","nameLocation":"1063:17:14","nodeType":"EventDefinition","parameters":{"id":3897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3894,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1097:6:14","nodeType":"VariableDeclaration","scope":3898,"src":"1081:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3893,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3896,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1121:6:14","nodeType":"VariableDeclaration","scope":3898,"src":"1105:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3895,"name":"uint256","nodeType":"ElementaryTypeName","src":"1105:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1080:48:14"},"src":"1057:72:14"},{"anonymous":false,"documentation":{"id":3899,"nodeType":"StructuredDocumentation","src":"1134:59:14","text":"@dev Emitted when primary validator get therir rewards."},"eventSelector":"61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c2","id":3905,"name":"RewardValidator","nameLocation":"1204:15:14","nodeType":"EventDefinition","parameters":{"id":3904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3901,"indexed":true,"mutability":"mutable","name":"validator","nameLocation":"1236:9:14","nodeType":"VariableDeclaration","scope":3905,"src":"1220:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3900,"name":"address","nodeType":"ElementaryTypeName","src":"1220:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3903,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1263:6:14","nodeType":"VariableDeclaration","scope":3905,"src":"1247:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3902,"name":"uint256","nodeType":"ElementaryTypeName","src":"1247:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:51:14"},"src":"1198:73:14"},{"canonicalName":"IPaycrest.TransactionMetadata","id":3916,"members":[{"constant":false,"id":3907,"mutability":"mutable","name":"identifier","nameLocation":"1509:10:14","nodeType":"VariableDeclaration","scope":3916,"src":"1502:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3906,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1502:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3909,"mutability":"mutable","name":"institution","nameLocation":"1628:11:14","nodeType":"VariableDeclaration","scope":3916,"src":"1621:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3908,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1621:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3911,"mutability":"mutable","name":"name","nameLocation":"1747:4:14","nodeType":"VariableDeclaration","scope":3916,"src":"1740:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3910,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1740:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3913,"mutability":"mutable","name":"currency","nameLocation":"1866:8:14","nodeType":"VariableDeclaration","scope":3916,"src":"1859:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"},"typeName":{"id":3912,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1859:6:14","typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}},"visibility":"internal"},{"constant":false,"id":3915,"mutability":"mutable","name":"liquidityProviderID","nameLocation":"1986:19:14","nodeType":"VariableDeclaration","scope":3916,"src":"1978:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3914,"name":"uint256","nodeType":"ElementaryTypeName","src":"1978:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"TransactionMetadata","nameLocation":"1472:19:14","nodeType":"StructDefinition","scope":4040,"src":"1465:629:14","visibility":"public"},{"canonicalName":"IPaycrest.Order","id":3935,"members":[{"constant":false,"id":3918,"mutability":"mutable","name":"seller","nameLocation":"2131:6:14","nodeType":"VariableDeclaration","scope":3935,"src":"2123:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3917,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3920,"mutability":"mutable","name":"token","nameLocation":"2251:5:14","nodeType":"VariableDeclaration","scope":3935,"src":"2243:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3919,"name":"address","nodeType":"ElementaryTypeName","src":"2243:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3922,"mutability":"mutable","name":"senderFeeRecipient","nameLocation":"2371:18:14","nodeType":"VariableDeclaration","scope":3935,"src":"2363:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3921,"name":"address","nodeType":"ElementaryTypeName","src":"2363:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3924,"mutability":"mutable","name":"senderFee","nameLocation":"2407:9:14","nodeType":"VariableDeclaration","scope":3935,"src":"2399:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3923,"name":"uint256","nodeType":"ElementaryTypeName","src":"2399:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3926,"mutability":"mutable","name":"rate","nameLocation":"2433:4:14","nodeType":"VariableDeclaration","scope":3935,"src":"2426:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3925,"name":"uint96","nodeType":"ElementaryTypeName","src":"2426:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3928,"mutability":"mutable","name":"isFulfilled","nameLocation":"2551:11:14","nodeType":"VariableDeclaration","scope":3935,"src":"2546:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3927,"name":"bool","nodeType":"ElementaryTypeName","src":"2546:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3930,"mutability":"mutable","name":"refundAddress","nameLocation":"2695:13:14","nodeType":"VariableDeclaration","scope":3935,"src":"2687:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3929,"name":"address","nodeType":"ElementaryTypeName","src":"2687:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3932,"mutability":"mutable","name":"currentBPS","nameLocation":"2835:10:14","nodeType":"VariableDeclaration","scope":3935,"src":"2828:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3931,"name":"uint96","nodeType":"ElementaryTypeName","src":"2828:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3934,"mutability":"mutable","name":"amount","nameLocation":"2959:6:14","nodeType":"VariableDeclaration","scope":3935,"src":"2951:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3933,"name":"uint256","nodeType":"ElementaryTypeName","src":"2951:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Order","nameLocation":"2107:5:14","nodeType":"StructDefinition","scope":4040,"src":"2100:968:14","visibility":"public"},{"documentation":{"id":3936,"nodeType":"StructuredDocumentation","src":"3270:1232:14","text":"@notice lock sender `_amount` of `token` into Paycrest.\n Requirements:\n `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\n `_token` must be an acceptable token. @dev See {isTokenSupported}.\n `amount` must be greater than minimum\n `_refundable` refundable address must not be zero address\n @param _token address of the token.\n @param _amount amount in the decimal of `_token` above.\n @param _institutionCode institution code of the sender.\n @param _label reference of the sender.\n @param _rate rate at which sender intended to sell `_amount` of `_token`.\n @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\n @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\n @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\n @param messageHash hash must be the result of a hash operation for the verification to be secure. message\n @return _orderId the bytes20 which is the orderId"},"functionSelector":"2654ec7e","id":3959,"implemented":false,"kind":"function","modifiers":[],"name":"createOrder","nameLocation":"4516:11:14","nodeType":"FunctionDefinition","parameters":{"id":3955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3938,"mutability":"mutable","name":"_token","nameLocation":"4545:6:14","nodeType":"VariableDeclaration","scope":3959,"src":"4537:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3937,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3940,"mutability":"mutable","name":"_amount","nameLocation":"4570:7:14","nodeType":"VariableDeclaration","scope":3959,"src":"4562:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3939,"name":"uint256","nodeType":"ElementaryTypeName","src":"4562:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3942,"mutability":"mutable","name":"_institutionCode","nameLocation":"4596:16:14","nodeType":"VariableDeclaration","scope":3959,"src":"4588:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3941,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4588:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3944,"mutability":"mutable","name":"_label","nameLocation":"4630:6:14","nodeType":"VariableDeclaration","scope":3959,"src":"4622:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3943,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4622:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3946,"mutability":"mutable","name":"_rate","nameLocation":"4653:5:14","nodeType":"VariableDeclaration","scope":3959,"src":"4646:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3945,"name":"uint96","nodeType":"ElementaryTypeName","src":"4646:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":3948,"mutability":"mutable","name":"_senderFeeRecipient","nameLocation":"4677:19:14","nodeType":"VariableDeclaration","scope":3959,"src":"4669:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3947,"name":"address","nodeType":"ElementaryTypeName","src":"4669:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3950,"mutability":"mutable","name":"_senderFee","nameLocation":"4714:10:14","nodeType":"VariableDeclaration","scope":3959,"src":"4706:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3949,"name":"uint256","nodeType":"ElementaryTypeName","src":"4706:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3952,"mutability":"mutable","name":"_refundAddress","nameLocation":"4742:14:14","nodeType":"VariableDeclaration","scope":3959,"src":"4734:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3951,"name":"address","nodeType":"ElementaryTypeName","src":"4734:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3954,"mutability":"mutable","name":"messageHash","nameLocation":"4783:11:14","nodeType":"VariableDeclaration","scope":3959,"src":"4767:27:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":3953,"name":"string","nodeType":"ElementaryTypeName","src":"4767:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4527:268:14"},"returnParameters":{"id":3958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3957,"mutability":"mutable","name":"_orderId","nameLocation":"4822:8:14","nodeType":"VariableDeclaration","scope":3959,"src":"4814:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3956,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4814:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4813:18:14"},"scope":4040,"src":"4507:325:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3960,"nodeType":"StructuredDocumentation","src":"4838:891:14","text":"@notice settle transaction and distribute rewards accordingly.\n Requirements:\n {only aggregators call}.\n `_orderId` it must be less than total ids.\n `_orderId` it must be an open Id.\n `_primaryValidator` must have stake on the Paycrest staking platform.\n `_secondaryValidators` must have stake on the Paycrest staking platform.\n `amount` must be greater than minimum\n `_refundable` refundable address must not be zero address\n @param _orderId transaction Id.\n @param _label reference of the sender.\n @param _validators arrays of secondary validators.\n @param _liquidityProvider address of the liquidity provider.\n @param _settlePercent rate at which the transaction is settled.\n @param _isPartner is the liquidity provider a partner.\n @return return the status of transaction {bool}"},"functionSelector":"137764fb","id":3982,"implemented":false,"kind":"function","modifiers":[],"name":"settle","nameLocation":"5743:6:14","nodeType":"FunctionDefinition","parameters":{"id":3976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3962,"mutability":"mutable","name":"_splitOrderId","nameLocation":"5758:13:14","nodeType":"VariableDeclaration","scope":3982,"src":"5750:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5750:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3964,"mutability":"mutable","name":"_orderId","nameLocation":"5781:8:14","nodeType":"VariableDeclaration","scope":3982,"src":"5773:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3963,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5773:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3966,"mutability":"mutable","name":"_label","nameLocation":"5799:6:14","nodeType":"VariableDeclaration","scope":3982,"src":"5791:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3965,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5791:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3969,"mutability":"mutable","name":"_validators","nameLocation":"5826:11:14","nodeType":"VariableDeclaration","scope":3982,"src":"5807:30:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3967,"name":"address","nodeType":"ElementaryTypeName","src":"5807:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3968,"nodeType":"ArrayTypeName","src":"5807:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3971,"mutability":"mutable","name":"_liquidityProvider","nameLocation":"5847:18:14","nodeType":"VariableDeclaration","scope":3982,"src":"5839:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3970,"name":"address","nodeType":"ElementaryTypeName","src":"5839:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3973,"mutability":"mutable","name":"_settlePercent","nameLocation":"5874:14:14","nodeType":"VariableDeclaration","scope":3982,"src":"5867:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3972,"name":"uint64","nodeType":"ElementaryTypeName","src":"5867:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3975,"mutability":"mutable","name":"_isPartner","nameLocation":"5895:10:14","nodeType":"VariableDeclaration","scope":3982,"src":"5890:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3974,"name":"bool","nodeType":"ElementaryTypeName","src":"5890:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5749:157:14"},"returnParameters":{"id":3981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3978,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3982,"src":"5925:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3977,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5925:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3980,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3982,"src":"5934:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3979,"name":"address","nodeType":"ElementaryTypeName","src":"5934:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5924:18:14"},"scope":4040,"src":"5734:209:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3983,"nodeType":"StructuredDocumentation","src":"5949:383:14","text":"@notice refund to the specified refundable address.\n Requirements:\n {only aggregators call}.\n `_orderId` it must be less than total ids.\n `_orderId` it must be an open Id.\n `isFulfilled` must be false.\n @param _orderId transaction Id.\n @param _label reference of the sender.\n @return return the status of transaction {bool}"},"functionSelector":"e4683a79","id":3992,"implemented":false,"kind":"function","modifiers":[],"name":"refund","nameLocation":"6346:6:14","nodeType":"FunctionDefinition","parameters":{"id":3988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3985,"mutability":"mutable","name":"_orderId","nameLocation":"6361:8:14","nodeType":"VariableDeclaration","scope":3992,"src":"6353:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3984,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6353:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3987,"mutability":"mutable","name":"_label","nameLocation":"6379:6:14","nodeType":"VariableDeclaration","scope":3992,"src":"6371:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3986,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6371:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6352:34:14"},"returnParameters":{"id":3991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3992,"src":"6405:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3989,"name":"bool","nodeType":"ElementaryTypeName","src":"6405:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6404:6:14"},"scope":4040,"src":"6337:74:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3993,"nodeType":"StructuredDocumentation","src":"6417:152:14","text":"@notice get supported token from Paycrest.\n @param _token address of the token to check.\n @return return the status of `_token` {bool}"},"functionSelector":"75151b63","id":4000,"implemented":false,"kind":"function","modifiers":[],"name":"isTokenSupported","nameLocation":"6583:16:14","nodeType":"FunctionDefinition","parameters":{"id":3996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3995,"mutability":"mutable","name":"_token","nameLocation":"6608:6:14","nodeType":"VariableDeclaration","scope":4000,"src":"6600:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3994,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6599:16:14"},"returnParameters":{"id":3999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4000,"src":"6638:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3997,"name":"bool","nodeType":"ElementaryTypeName","src":"6638:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6637:6:14"},"scope":4040,"src":"6574:70:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4001,"nodeType":"StructuredDocumentation","src":"6650:70:14","text":"@notice get order details.\n @param _orderId transaction Id."},"functionSelector":"768c6ec0","id":4009,"implemented":false,"kind":"function","modifiers":[],"name":"getOrderInfo","nameLocation":"6734:12:14","nodeType":"FunctionDefinition","parameters":{"id":4004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4003,"mutability":"mutable","name":"_orderId","nameLocation":"6755:8:14","nodeType":"VariableDeclaration","scope":4009,"src":"6747:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4002,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6747:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6746:18:14"},"returnParameters":{"id":4008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4009,"src":"6787:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_memory_ptr","typeString":"struct IPaycrest.Order"},"typeName":{"id":4006,"nodeType":"UserDefinedTypeName","pathNode":{"id":4005,"name":"Order","nameLocations":["6787:5:14"],"nodeType":"IdentifierPath","referencedDeclaration":3935,"src":"6787:5:14"},"referencedDeclaration":3935,"src":"6787:5:14","typeDescriptions":{"typeIdentifier":"t_struct$_Order_$3935_storage_ptr","typeString":"struct IPaycrest.Order"}},"visibility":"internal"}],"src":"6786:14:14"},"scope":4040,"src":"6725:76:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4010,"nodeType":"StructuredDocumentation","src":"6807:323:14","text":"@notice get every rewards and address on Paycrest.\n @return protocolReward amount that will be taken in percentage on all trade.\n @return validatorFeePercent amount that will be given to primary validator in percentage from `protocolReward`\n @return max_bps maximum amount in bps \"100% == 100_000\"."},"functionSelector":"b810c636","id":4019,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"7144:13:14","nodeType":"FunctionDefinition","parameters":{"id":4011,"nodeType":"ParameterList","parameters":[],"src":"7157:2:14"},"returnParameters":{"id":4018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4013,"mutability":"mutable","name":"protocolReward","nameLocation":"7199:14:14","nodeType":"VariableDeclaration","scope":4019,"src":"7191:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4012,"name":"uint128","nodeType":"ElementaryTypeName","src":"7191:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4015,"mutability":"mutable","name":"validatorFeePercent","nameLocation":"7232:19:14","nodeType":"VariableDeclaration","scope":4019,"src":"7224:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4014,"name":"uint128","nodeType":"ElementaryTypeName","src":"7224:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4017,"mutability":"mutable","name":"max_bps","nameLocation":"7270:7:14","nodeType":"VariableDeclaration","scope":4019,"src":"7262:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4016,"name":"uint256","nodeType":"ElementaryTypeName","src":"7262:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7181:102:14"},"scope":4040,"src":"7135:149:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4020,"nodeType":"StructuredDocumentation","src":"7290:89:14","text":"@notice get address of liquidity aggregator.\n @return address of `Aggregator`."},"functionSelector":"e8d6e0de","id":4025,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregatorAddress","nameLocation":"7393:20:14","nodeType":"FunctionDefinition","parameters":{"id":4021,"nodeType":"ParameterList","parameters":[],"src":"7413:2:14"},"returnParameters":{"id":4024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4025,"src":"7438:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4022,"name":"address","nodeType":"ElementaryTypeName","src":"7438:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7437:9:14"},"scope":4040,"src":"7384:63:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4026,"nodeType":"StructuredDocumentation","src":"7453:77:14","text":"@notice get aggregator public key.\n @return aggregator public key."},"functionSelector":"3ad59dbc","id":4031,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregator","nameLocation":"7544:13:14","nodeType":"FunctionDefinition","parameters":{"id":4027,"nodeType":"ParameterList","parameters":[],"src":"7557:2:14"},"returnParameters":{"id":4030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4029,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4031,"src":"7582:12:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4028,"name":"bytes","nodeType":"ElementaryTypeName","src":"7582:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7581:14:14"},"scope":4040,"src":"7535:61:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4032,"nodeType":"StructuredDocumentation","src":"7606:136:14","text":"@notice get address of sender whitelisting status.\n @param sender address of the sender.\n @return address of `status`."},"functionSelector":"d8e8de34","id":4039,"implemented":false,"kind":"function","modifiers":[],"name":"getWhitelistedStatus","nameLocation":"7756:20:14","nodeType":"FunctionDefinition","parameters":{"id":4035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4034,"mutability":"mutable","name":"sender","nameLocation":"7785:6:14","nodeType":"VariableDeclaration","scope":4039,"src":"7777:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4033,"name":"address","nodeType":"ElementaryTypeName","src":"7777:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7776:16:14"},"returnParameters":{"id":4038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4037,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4039,"src":"7815:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4036,"name":"bool","nodeType":"ElementaryTypeName","src":"7815:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7814:6:14"},"scope":4040,"src":"7747:74:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4041,"src":"265:7559:14","usedErrors":[]}],"src":"38:7787:14"},"id":14}},"contracts":{"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"OwnableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() { _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"IERC20Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":\"IERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"IERC20PermitUpgradeable":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.","kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":\"IERC20PermitUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"SafeERC20Upgradeable":{"abi":[],"devdoc":{"details":"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","kind":"dev","methods":{},"title":"SafeERC20","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220127eb4d243173cf9ac6ea39f737ccd926bf8210c3a138b2e7d70f40b43f8204564736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH31 0xB4D243173CF9AC6EA39F737CCD926BF8210C3A138B2E7D70F40B43F8204564 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"734:6366:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220127eb4d243173cf9ac6ea39f737ccd926bf8210c3a138b2e7d70f40b43f8204564736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH31 0xB4D243173CF9AC6EA39F737CCD926BF8210C3A138B2E7D70F40B43F8204564 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"734:6366:4:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_callOptionalReturn(contract IERC20Upgradeable,bytes memory)":"infinite","_callOptionalReturnBool(contract IERC20Upgradeable,bytes memory)":"infinite","forceApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeDecreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safeIncreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safePermit(contract IERC20PermitUpgradeable,address,address,uint256,uint256,uint8,bytes32,bytes32)":"infinite","safeTransfer(contract IERC20Upgradeable,address,uint256)":"infinite","safeTransferFrom(contract IERC20Upgradeable,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":\"SafeERC20Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n /**\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n /**\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n */\\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n /**\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n }\\n\\n /**\\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n }\\n }\\n\\n /**\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\n */\\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n _callOptionalReturn(token, approvalCall);\\n }\\n }\\n\\n /**\\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n * Revert on invalid signature.\\n */\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n *\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n */\\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n // and not revert is the subcall reverts.\\n\\n (bool success, bytes memory returndata) = address(token).call(data);\\n return\\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220df70283ff728a1a88debad8b56cd6b31b858a143aff601e8f42a16699317e70d64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF PUSH17 0x283FF728A1A88DEBAD8B56CD6B31B858A1 NUMBER 0xAF 0xF6 ADD 0xE8 DELEGATECALL 0x2A AND PUSH10 0x9317E70D64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:9180:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220df70283ff728a1a88debad8b56cd6b31b858a143aff601e8f42a16699317e70d64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF PUSH17 0x283FF728A1A88DEBAD8B56CD6B31B858A1 NUMBER 0xAF 0xF6 ADD 0xE8 DELEGATECALL 0x2A AND PUSH10 0x9317E70D64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:9180:5:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol":{"StringsUpgradeable":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3fb710f8a96e0067535a9f765fa3f89f59b6e06ba7186e35593d35f029926fa64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xFB PUSH18 0xF8A96E0067535A9F765FA3F89F59B6E06BA PUSH18 0x86E35593D35F029926FA64736F6C63430008 SLT STOP CALLER ","sourceMap":"242:2603:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3fb710f8a96e0067535a9f765fa3f89f59b6e06ba7186e35593d35f029926fa64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xFB PUSH18 0xF8A96E0067535A9F765FA3F89F59B6E06BA PUSH18 0x86E35593D35F029926FA64736F6C63430008 SLT STOP CALLER ","sourceMap":"242:2603:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":\"StringsUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol":{"ECDSAUpgradeable":{"abi":[],"devdoc":{"details":"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220717bce4509ab3c6d09fb52c5b26660a25a99945b32e0484c654da9bebac1986064736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x7BCE4509AB3C6D09FB52C5B26660A25A9994 JUMPDEST ORIGIN 0xE0 BASEFEE 0x4C PUSH6 0x4DA9BEBAC198 PUSH1 0x64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"380:8783:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220717bce4509ab3c6d09fb52c5b26660a25a99945b32e0484c654da9bebac1986064736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x7BCE4509AB3C6D09FB52C5B26660A25A9994 JUMPDEST ORIGIN 0xE0 BASEFEE 0x4C PUSH6 0x4DA9BEBAC198 PUSH1 0x64 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"380:8783:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_throwError(enum ECDSAUpgradeable.RecoverError)":"infinite","recover(bytes32,bytes memory)":"infinite","recover(bytes32,bytes32,bytes32)":"infinite","recover(bytes32,uint8,bytes32,bytes32)":"infinite","toDataWithIntendedValidatorHash(address,bytes memory)":"infinite","toEthSignedMessageHash(bytes memory)":"infinite","toEthSignedMessageHash(bytes32)":"infinite","toTypedDataHash(bytes32,bytes32)":"infinite","tryRecover(bytes32,bytes memory)":"infinite","tryRecover(bytes32,bytes32,bytes32)":"infinite","tryRecover(bytes32,uint8,bytes32,bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":\"ECDSAUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n mstore(0x1c, hash)\\n message := keccak256(0x00, 0x3c)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n mstore(add(ptr, 0x02), domainSeparator)\\n mstore(add(ptr, 0x22), structHash)\\n data := keccak256(ptr, 0x42)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n * `validator` and `data` according to the version 0 of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n }\\n}\\n\",\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"MathUpgradeable":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b19238f22d888be15246afd45704547bf692f3a8d19f34db13095fb48eddd5264736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x19238F22D888BE15246AFD45 PUSH17 0x4547BF692F3A8D19F34DB13095FB48EDDD MSTORE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12593:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b19238f22d888be15246afd45704547bf692f3a8d19f34db13095fb48eddd5264736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0x19238F22D888BE15246AFD45 PUSH17 0x4547BF692F3A8D19F34DB13095FB48EDDD MSTORE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12593:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum MathUpgradeable.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum MathUpgradeable.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum MathUpgradeable.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum MathUpgradeable.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum MathUpgradeable.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":\"MathUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol":{"SignedMathUpgradeable":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70ce3cff074bb9f2b399f4851e008094b94d7fe429bd3afbf9c6f170d3375ce64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC 0xE3 0xCF CREATE PUSH21 0xBB9F2B399F4851E008094B94D7FE429BD3AFBF9C6F OR 0xD CALLER PUSH22 0xCE64736F6C6343000812003300000000000000000000 ","sourceMap":"215:1058:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e70ce3cff074bb9f2b399f4851e008094b94d7fe429bd3afbf9c6f170d3375ce64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0xC 0xE3 0xCF CREATE PUSH21 0xBB9F2B399F4851E008094B94D7FE429BD3AFBF9C6F OR 0xD CALLER PUSH22 0xCE64736F6C6343000812003300000000000000000000 ","sourceMap":"215:1058:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":\"SignedMathUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/Paycrest.sol":{"Paycrest":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"institutionCode","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"string","name":"messageHash","type":"string"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"protocolFee","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"validatorFeePercent","type":"uint128"}],"name":"PaycrestFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardValidator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"SetAggregator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SettingManagerBool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"uint96","name":"settlePercent","type":"uint96"}],"name":"Settled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSenderFee","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_institutionCode","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"uint96","name":"_rate","type":"uint96"},{"internalType":"address","name":"_senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"_senderFee","type":"uint256"},{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"string","name":"messageHash","type":"string"}],"name":"createOrder","outputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAggregator","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"name":"getOrderInfo","outputs":[{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"senderFee","type":"uint256"},{"internalType":"uint96","name":"rate","type":"uint96"},{"internalType":"bool","name":"isFulfilled","type":"bool"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint96","name":"currentBPS","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPaycrest.Order","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"code","type":"bytes32"}],"name":"getSupportedInstitutionName","outputs":[{"components":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"bytes32","name":"currency","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.InstitutionByCode","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"}],"name":"getSupportedInstitutions","outputs":[{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usdc","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"}],"name":"refund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"institutions","type":"tuple[]"}],"name":"setSupportedInstitutions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"settingManagerBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"address[]","name":"_validators","type":"address[]"},{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint64","name":"_settlePercent","type":"uint64"},{"internalType":"bool","name":"_isPartner","type":"bool"}],"name":"settle","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"updateProtocolAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"updateProtocolAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"_protocolFeePercent","type":"uint128"},{"internalType":"uint128","name":"_validatorFeePercent","type":"uint128"}],"name":"updateProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)":{"details":"Emitted when deposit is made."},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"Refunded(bytes32,bytes32)":{"details":"Emitted when aggregator refund transaction."},"RewardValidator(address,uint256)":{"details":"Emitted when primary validator get therir rewards."},"Settled(bytes32,bytes32,bytes32,address,uint96)":{"details":"Emitted when aggregator settle transaction."},"TransferSenderFee(address,uint256)":{"details":"Emitted when sender get therir rewards."}},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"details":"See {createOrder-IPaycrest}. "},"getAggregator()":{"details":"See {getAggregator-IPaycrest}. "},"getAggregatorAddress()":{"details":"See {getAggregatorAddress-IPaycrest}. "},"getFeeDetails()":{"details":"See {getFeeDetails-IPaycrest}. "},"getOrderInfo(bytes32)":{"details":"See {getOrderInfo-IPaycrest}. "},"getSupportedInstitutionName(bytes32)":{"details":"See {getSupportedInstitutionName-IPaycrest}. "},"getWhitelistedStatus(address)":{"details":"See {getWhitelistedStatus-IPaycrest}. "},"isTokenSupported(address)":{"details":"See {isTokenSupported-IPaycrest}. "},"owner()":{"details":"Returns the address of the current owner."},"refund(bytes32,bytes32)":{"details":"See {refund-IPaycrest}. "},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":{"details":"See {settle-IPaycrest}. "},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2854":{"entryPoint":null,"id":2854,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_281":{"entryPoint":40,"id":281,"parameterSlots":0,"returnSlots":0},"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack":{"entryPoint":334,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":420,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":373,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":437,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":238,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":407,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a":{"entryPoint":255,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1638:15","statements":[{"body":{"nodeType":"YulBlock","src":"103:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"120:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"125:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"113:6:15"},"nodeType":"YulFunctionCall","src":"113:19:15"},"nodeType":"YulExpressionStatement","src":"113:19:15"},{"nodeType":"YulAssignment","src":"141:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"160:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"165:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"156:3:15"},"nodeType":"YulFunctionCall","src":"156:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"141:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"75:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"80:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"91:11:15","type":""}],"src":"7:169:15"},{"body":{"nodeType":"YulBlock","src":"288:120:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"310:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"318:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"306:3:15"},"nodeType":"YulFunctionCall","src":"306:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"322:34:15","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"299:6:15"},"nodeType":"YulFunctionCall","src":"299:58:15"},"nodeType":"YulExpressionStatement","src":"299:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"378:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"386:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"374:3:15"},"nodeType":"YulFunctionCall","src":"374:15:15"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"391:9:15","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"367:6:15"},"nodeType":"YulFunctionCall","src":"367:34:15"},"nodeType":"YulExpressionStatement","src":"367:34:15"}]},"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"280:6:15","type":""}],"src":"182:226:15"},{"body":{"nodeType":"YulBlock","src":"560:220:15","statements":[{"nodeType":"YulAssignment","src":"570:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"636:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"641:2:15","type":"","value":"39"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"577:58:15"},"nodeType":"YulFunctionCall","src":"577:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"570:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"742:3:15"}],"functionName":{"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nodeType":"YulIdentifier","src":"653:88:15"},"nodeType":"YulFunctionCall","src":"653:93:15"},"nodeType":"YulExpressionStatement","src":"653:93:15"},{"nodeType":"YulAssignment","src":"755:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"766:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"771:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"762:3:15"},"nodeType":"YulFunctionCall","src":"762:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"755:3:15"}]}]},"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"548:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"556:3:15","type":""}],"src":"414:366:15"},{"body":{"nodeType":"YulBlock","src":"957:248:15","statements":[{"nodeType":"YulAssignment","src":"967:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"979:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"990:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"975:3:15"},"nodeType":"YulFunctionCall","src":"975:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"967:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1014:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1025:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1010:3:15"},"nodeType":"YulFunctionCall","src":"1010:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1033:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"1039:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1029:3:15"},"nodeType":"YulFunctionCall","src":"1029:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1003:6:15"},"nodeType":"YulFunctionCall","src":"1003:47:15"},"nodeType":"YulExpressionStatement","src":"1003:47:15"},{"nodeType":"YulAssignment","src":"1059:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1193:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1067:124:15"},"nodeType":"YulFunctionCall","src":"1067:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1059:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"937:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"952:4:15","type":""}],"src":"786:419:15"},{"body":{"nodeType":"YulBlock","src":"1254:43:15","statements":[{"nodeType":"YulAssignment","src":"1264:27:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1279:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"1286:4:15","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1275:3:15"},"nodeType":"YulFunctionCall","src":"1275:16:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1264:7:15"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1236:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1246:7:15","type":""}],"src":"1211:86:15"},{"body":{"nodeType":"YulBlock","src":"1364:51:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1381:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1402:5:15"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"1386:15:15"},"nodeType":"YulFunctionCall","src":"1386:22:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1374:6:15"},"nodeType":"YulFunctionCall","src":"1374:35:15"},"nodeType":"YulExpressionStatement","src":"1374:35:15"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1352:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1359:3:15","type":""}],"src":"1303:112:15"},{"body":{"nodeType":"YulBlock","src":"1515:120:15","statements":[{"nodeType":"YulAssignment","src":"1525:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1537:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1548:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1533:3:15"},"nodeType":"YulFunctionCall","src":"1533:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1525:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1601:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1614:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1625:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1610:3:15"},"nodeType":"YulFunctionCall","src":"1610:17:15"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"1561:39:15"},"nodeType":"YulFunctionCall","src":"1561:67:15"},"nodeType":"YulExpressionStatement","src":"1561:67:15"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1487:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1499:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1510:4:15","type":""}],"src":"1421:214:15"}]},"contents":"{\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is initi\")\n\n mstore(add(memPtr, 32), \"alizing\")\n\n }\n\n function abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 39)\n store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d2565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000175565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620000ec5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e39190620001b5565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015d602783620000ee565b91506200016a82620000ff565b604082019050919050565b6000602082019050818103600083015262000190816200014e565b9050919050565b600060ff82169050919050565b620001af8162000197565b82525050565b6000602082019050620001cc6000830184620001a4565b92915050565b61406880620001e26000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063d8e8de341161007c578063d8e8de341461034f578063d9caed121461037f578063e4683a791461039b578063e8d6e0de146103cb578063f2fde38b146103e9578063f5326b191461040557610137565b80638da5cb5b146102bd57806399e3c0b4146102db578063b810c636146102f7578063c4d66de814610317578063cb79455b1461033357610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb1461027157806387490d861461028d57610137565b8063026213381461013c578063137764fb1461016c5780632654ec7e1461019d57806332200882146101cd5780633ad59dbc146101e9575b600080fd5b610156600480360381019061015191906126f3565b610421565b604051610163919061280d565b60405180910390f35b6101866004803603810190610181919061296a565b61055f565b604051610194929190612a4a565b60405180910390f35b6101b760048036038101906101b29190612b43565b61096a565b6040516101c49190612c2e565b60405180910390f35b6101e760048036038101906101e29190612ded565b610db7565b005b6101f1610ecb565b6040516101fe9190612ec8565b60405180910390f35b61020f610f5d565b005b61022b60048036038101906102269190612eea565b610f71565b6040516102389190612f26565b60405180910390f35b61025b600480360381019061025691906126f3565b610fc7565b6040516102689190613034565b60405180910390f35b61028b60048036038101906102869190613050565b6111f8565b005b6102a760048036038101906102a291906126f3565b611345565b6040516102b491906130bf565b60405180910390f35b6102c5611386565b6040516102d291906130da565b60405180910390f35b6102f560048036038101906102f091906130f5565b6113b0565b005b6102ff611565565b60405161030e93929190613182565b60405180910390f35b610331600480360381019061032c9190612eea565b6115b6565b005b61034d6004803603810190610348919061320f565b6117cd565b005b61036960048036038101906103649190612eea565b611824565b6040516103769190612f26565b60405180910390f35b6103996004803603810190610394919061325c565b61187a565b005b6103b560048036038101906103b091906132af565b611906565b6040516103c29190612f26565b60405180910390f35b6103d3611bb3565b6040516103e091906130da565b60405180910390f35b61040360048036038101906103fe9190612eea565b611bdd565b005b61041f600480360381019061041a919061331b565b611c60565b005b60606000609e6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049e57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610458565b50505050905060008151905060008167ffffffffffffffff8111156104c6576104c5612c5a565b5b6040519080825280602002602001820160405280156104ff57816020015b6104ec612586565b8152602001906001900390816104e45790505b50905060005b82811015610553578381815181106105205761051f61335b565b5b602002602001015182828151811061053b5761053a61335b565b5b60200260200101819052508080600101915050610505565b50809350505050919050565b600080606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e9906133e7565b60405180910390fd5b60a060008a8152602001908152602001600020600401600c9054906101000a900460ff1615610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d90613453565b60405180910390fd5b600060a060008b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff1660a060008c815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff166106d891906134a2565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600061071d8b8767ffffffffffffffff1687611d17565b9050600060a060008d815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036107bc57600160a060008d8152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a060008d81526020019081526020016000206003015411156107bb576107ba8b611eb0565b5b5b60008160000151111561086f578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b815260040161082a9291906134e2565b6020604051808303816000875af1158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d9190613520565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b81526004016108ae9291906134e2565b6020604051808303816000875af11580156108cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f19190613520565b506109028989848460400151612004565b8673ffffffffffffffffffffffffffffffffffffffff168b7ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268e8d8a60405161094d93929190613588565b60405180910390a38a829350935050509850989650505050505050565b60006109798b8b86898d61214e565b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b81526004016109b6939291906135bf565b6020604051808303816000875af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190613520565b5060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610a4a906135f6565b91905055503360a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610aa19291906134e2565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b81525060a0600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610da19594939291906136ab565b60405180910390a49a9950505050505050505050565b610dbf61235d565b60008151905060005b81811015610ec557609e6000858152602001908152602001600020838281518110610df657610df561335b565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610e5b57610e5a61335b565b5b602002602001015160200151815260200185815250609f6000858481518110610e8757610e8661335b565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610dc8565b50505050565b606060698054610eda90613728565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0690613728565b8015610f535780601f10610f2857610100808354040283529160200191610f53565b820191906000526020600020905b815481529060010190602001808311610f3657829003601f168201915b5050505050905090565b610f6561235d565b610f6f60006123db565b565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610fcf6125a6565b60a06000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b61120061235d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361126f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611266906137a5565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036112d85780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113415780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b61134d612668565b609f6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113b861235d565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e906137a5565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036114a65780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115255780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace930838383604051611558939291906137c5565b60405180910390a1505050565b6000806000606660009054906101000a90046fffffffffffffffffffffffffffffffff16606660109054906101000a90046fffffffffffffffffffffffffffffffff16606554925092509250909192565b60008060019054906101000a900460ff161590508080156115e75750600160008054906101000a900460ff1660ff16105b8061161457506115f6306124a1565b1580156116135750600160008054906101000a900460ff1660ff16145b5b611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a9061386e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611690576001600060016101000a81548160ff0219169083151502179055505b6001609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506101f4606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506117706124c4565b80156117c95760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516117c091906138d6565b60405180910390a15b5050565b6117d561235d565b8181606991826117e6929190613a9e565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051611818929190613b9b565b60405180910390a15050565b6000609d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61188261235d565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016118bd9291906134e2565b6020604051808303816000875af11580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190613520565b50505050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f906133e7565b60405180910390fd5b60a06000848152602001908152602001600020600401600c9054906101000a900460ff16156119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f390613453565b60405180910390fd5b600160a06000858152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a0600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60a0600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660a06000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611b2e9291906134e2565b6020604051808303816000875af1158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b719190613520565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611ba19190612c2e565b60405180910390a26001905092915050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611be561235d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b90613c31565b60405180910390fd5b611c5d816123db565b50565b611c6861235d565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051611d0b929190613c51565b60405180910390a15050565b611d1f612688565b600060a0600086815260200190815260200160002060060154905060a060008681526020019081526020016000206003015481611d5c9190613c7a565b9050606554846bffffffffffffffffffffffff1682611d7b9190613cae565b611d859190613d1f565b826020018181525050606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360200151611dd19190613cae565b611ddb9190613d1f565b82600001818152505081600001518260200151611df89190613c7a565b826020018181525050606554606660109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360000151611e449190613cae565b611e4e9190613d1f565b8260400181815250508215611e8a57816000015182602001818151611e739190613d50565b915081815250506000826000018181525050611ea8565b81604001518260000151611e9e9190613c7a565b8260000181815250505b509392505050565b600060a0600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060a0600084815260200190815260200160002060030154905060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611f779291906134e2565b6020604051808303816000875af1158015611f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fba9190613520565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b60008484905090506000818361201a9190613d1f565b905060005b82811015612145578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8888848181106120565761205561335b565b5b905060200201602081019061206b9190612eea565b846040518363ffffffff1660e01b81526004016120899291906134e2565b6020604051808303816000875af11580156120a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cc9190613520565b50818787838181106120e1576120e061335b565b5b90506020020160208101906120f69190612eea565b73ffffffffffffffffffffffffffffffffffffffff167f61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c260405160405180910390a3808060010191505061201f565b50505050505050565b609c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d190613dd0565b60405180910390fd5b6000841161221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221490613e3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390613ea8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f290613ea8565b60405180910390fd5b6000801b609f60008381526020019081526020016000206000015403612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90613f14565b60405180910390fd5b5050505050565b61236561251d565b73ffffffffffffffffffffffffffffffffffffffff16612383611386565b73ffffffffffffffffffffffffffffffffffffffff16146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d090613f80565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250a90614012565b60405180910390fd5b61251b612525565b565b600033905090565b600060019054906101000a900460ff16612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b90614012565b60405180910390fd5b61258461257f61251d565b6123db565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b60405180606001604052806000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6126d0816126bd565b81146126db57600080fd5b50565b6000813590506126ed816126c7565b92915050565b600060208284031215612709576127086126b3565b5b6000612717848285016126de565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612755816126bd565b82525050565b604082016000820151612771600085018261274c565b506020820151612784602085018261274c565b50505050565b6000612796838361275b565b60408301905092915050565b6000602082019050919050565b60006127ba82612720565b6127c4818561272b565b93506127cf8361273c565b8060005b838110156128005781516127e7888261278a565b97506127f2836127a2565b9250506001810190506127d3565b5085935050505092915050565b6000602082019050818103600083015261282781846127af565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126128545761285361282f565b5b8235905067ffffffffffffffff81111561287157612870612834565b5b60208301915083602082028301111561288d5761288c612839565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128bf82612894565b9050919050565b6128cf816128b4565b81146128da57600080fd5b50565b6000813590506128ec816128c6565b92915050565b600067ffffffffffffffff82169050919050565b61290f816128f2565b811461291a57600080fd5b50565b60008135905061292c81612906565b92915050565b60008115159050919050565b61294781612932565b811461295257600080fd5b50565b6000813590506129648161293e565b92915050565b60008060008060008060008060e0898b03121561298a576129896126b3565b5b60006129988b828c016126de565b98505060206129a98b828c016126de565b97505060406129ba8b828c016126de565b965050606089013567ffffffffffffffff8111156129db576129da6126b8565b5b6129e78b828c0161283e565b955095505060806129fa8b828c016128dd565b93505060a0612a0b8b828c0161291d565b92505060c0612a1c8b828c01612955565b9150509295985092959890939650565b612a35816126bd565b82525050565b612a44816128b4565b82525050565b6000604082019050612a5f6000830185612a2c565b612a6c6020830184612a3b565b9392505050565b6000819050919050565b612a8681612a73565b8114612a9157600080fd5b50565b600081359050612aa381612a7d565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612aca81612aa9565b8114612ad557600080fd5b50565b600081359050612ae781612ac1565b92915050565b60008083601f840112612b0357612b0261282f565b5b8235905067ffffffffffffffff811115612b2057612b1f612834565b5b602083019150836001820283011115612b3c57612b3b612839565b5b9250929050565b6000806000806000806000806000806101208b8d031215612b6757612b666126b3565b5b6000612b758d828e016128dd565b9a50506020612b868d828e01612a94565b9950506040612b978d828e016126de565b9850506060612ba88d828e016126de565b9750506080612bb98d828e01612ad8565b96505060a0612bca8d828e016128dd565b95505060c0612bdb8d828e01612a94565b94505060e0612bec8d828e016128dd565b9350506101008b013567ffffffffffffffff811115612c0e57612c0d6126b8565b5b612c1a8d828e01612aed565b92509250509295989b9194979a5092959850565b6000602082019050612c436000830184612a2c565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c9282612c49565b810181811067ffffffffffffffff82111715612cb157612cb0612c5a565b5b80604052505050565b6000612cc46126a9565b9050612cd08282612c89565b919050565b600067ffffffffffffffff821115612cf057612cef612c5a565b5b602082029050602081019050919050565b600080fd5b600060408284031215612d1c57612d1b612d01565b5b612d266040612cba565b90506000612d36848285016126de565b6000830152506020612d4a848285016126de565b60208301525092915050565b6000612d69612d6484612cd5565b612cba565b90508083825260208201905060408402830185811115612d8c57612d8b612839565b5b835b81811015612db55780612da18882612d06565b845260208401935050604081019050612d8e565b5050509392505050565b600082601f830112612dd457612dd361282f565b5b8135612de4848260208601612d56565b91505092915050565b60008060408385031215612e0457612e036126b3565b5b6000612e12858286016126de565b925050602083013567ffffffffffffffff811115612e3357612e326126b8565b5b612e3f85828601612dbf565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e83578082015181840152602081019050612e68565b60008484015250505050565b6000612e9a82612e49565b612ea48185612e54565b9350612eb4818560208601612e65565b612ebd81612c49565b840191505092915050565b60006020820190508181036000830152612ee28184612e8f565b905092915050565b600060208284031215612f0057612eff6126b3565b5b6000612f0e848285016128dd565b91505092915050565b612f2081612932565b82525050565b6000602082019050612f3b6000830184612f17565b92915050565b612f4a816128b4565b82525050565b612f5981612a73565b82525050565b612f6881612aa9565b82525050565b612f7781612932565b82525050565b61012082016000820151612f946000850182612f41565b506020820151612fa76020850182612f41565b506040820151612fba6040850182612f41565b506060820151612fcd6060850182612f50565b506080820151612fe06080850182612f5f565b5060a0820151612ff360a0850182612f6e565b5060c082015161300660c0850182612f41565b5060e082015161301960e0850182612f5f565b5061010082015161302e610100850182612f50565b50505050565b60006101208201905061304a6000830184612f7d565b92915050565b60008060408385031215613067576130666126b3565b5b6000613075858286016126de565b9250506020613086858286016128dd565b9150509250929050565b6040820160008201516130a6600085018261274c565b5060208201516130b9602085018261274c565b50505050565b60006040820190506130d46000830184613090565b92915050565b60006020820190506130ef6000830184612a3b565b92915050565b60008060006060848603121561310e5761310d6126b3565b5b600061311c868287016126de565b935050602061312d868287016128dd565b925050604061313e86828701612955565b9150509250925092565b60006fffffffffffffffffffffffffffffffff82169050919050565b61316d81613148565b82525050565b61317c81612a73565b82525050565b60006060820190506131976000830186613164565b6131a46020830185613164565b6131b16040830184613173565b949350505050565b60008083601f8401126131cf576131ce61282f565b5b8235905067ffffffffffffffff8111156131ec576131eb612834565b5b60208301915083600182028301111561320857613207612839565b5b9250929050565b60008060208385031215613226576132256126b3565b5b600083013567ffffffffffffffff811115613244576132436126b8565b5b613250858286016131b9565b92509250509250929050565b600080600060608486031215613275576132746126b3565b5b6000613283868287016128dd565b9350506020613294868287016128dd565b92505060406132a586828701612a94565b9150509250925092565b600080604083850312156132c6576132c56126b3565b5b60006132d4858286016126de565b92505060206132e5858286016126de565b9150509250929050565b6132f881613148565b811461330357600080fd5b50565b600081359050613315816132ef565b92915050565b60008060408385031215613332576133316126b3565b5b600061334085828601613306565b925050602061335185828601613306565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b60006133d1600e8361338a565b91506133dc8261339b565b602082019050919050565b60006020820190508181036000830152613400816133c4565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b600061343d600e8361338a565b915061344882613407565b602082019050919050565b6000602082019050818103600083015261346c81613430565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134ad82612aa9565b91506134b883612aa9565b925082820390506bffffffffffffffffffffffff8111156134dc576134db613473565b5b92915050565b60006040820190506134f76000830185612a3b565b6135046020830184613173565b9392505050565b60008151905061351a8161293e565b92915050565b600060208284031215613536576135356126b3565b5b60006135448482850161350b565b91505092915050565b6000819050919050565b600061357261356d613568846128f2565b61354d565b612aa9565b9050919050565b61358281613557565b82525050565b600060608201905061359d6000830186612a2c565b6135aa6020830185612a2c565b6135b76040830184613579565b949350505050565b60006060820190506135d46000830186612a3b565b6135e16020830185612a3b565b6135ee6040830184613173565b949350505050565b600061360182612a73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361363357613632613473565b5b600182019050919050565b600061365961365461364f84612aa9565b61354d565b612a73565b9050919050565b6136698161363e565b82525050565b82818337600083830152505050565b600061368a838561338a565b935061369783858461366f565b6136a083612c49565b840190509392505050565b60006080820190506136c06000830188613660565b6136cd6020830187612a2c565b6136da6040830186612a2c565b81810360608301526136ed81848661367e565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061374057607f821691505b602082108103613753576137526136f9565b5b50919050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b600061378f60168361338a565b915061379a82613759565b602082019050919050565b600060208201905081810360008301526137be81613782565b9050919050565b60006060820190506137da6000830186612a2c565b6137e76020830185612a3b565b6137f46040830184612f17565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613858602e8361338a565b9150613863826137fc565b604082019050919050565b600060208201905081810360008301526138878161384b565b9050919050565b6000819050919050565b600060ff82169050919050565b60006138c06138bb6138b68461388e565b61354d565b613898565b9050919050565b6138d0816138a5565b82525050565b60006020820190506138eb60008301846138c7565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261395e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613921565b6139688683613921565b95508019841693508086168417925050509392505050565b600061399b61399661399184612a73565b61354d565b612a73565b9050919050565b6000819050919050565b6139b583613980565b6139c96139c1826139a2565b84845461392e565b825550505050565b600090565b6139de6139d1565b6139e98184846139ac565b505050565b5b81811015613a0d57613a026000826139d6565b6001810190506139ef565b5050565b601f821115613a5257613a23816138fc565b613a2c84613911565b81016020851015613a3b578190505b613a4f613a4785613911565b8301826139ee565b50505b505050565b600082821c905092915050565b6000613a7560001984600802613a57565b1980831691505092915050565b6000613a8e8383613a64565b9150826002028217905092915050565b613aa883836138f1565b67ffffffffffffffff811115613ac157613ac0612c5a565b5b613acb8254613728565b613ad6828285613a11565b6000601f831160018114613b055760008415613af3578287013590505b613afd8582613a82565b865550613b65565b601f198416613b13866138fc565b60005b82811015613b3b57848901358255600182019150602085019450602081019050613b16565b86831015613b585784890135613b54601f891682613a64565b8355505b6001600288020188555050505b50505050505050565b6000613b7a8385612e54565b9350613b8783858461366f565b613b9083612c49565b840190509392505050565b60006020820190508181036000830152613bb6818486613b6e565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c1b60268361338a565b9150613c2682613bbf565b604082019050919050565b60006020820190508181036000830152613c4a81613c0e565b9050919050565b6000604082019050613c666000830185613164565b613c736020830184613164565b9392505050565b6000613c8582612a73565b9150613c9083612a73565b9250828203905081811115613ca857613ca7613473565b5b92915050565b6000613cb982612a73565b9150613cc483612a73565b9250828202613cd281612a73565b91508282048414831517613ce957613ce8613473565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d2a82612a73565b9150613d3583612a73565b925082613d4557613d44613cf0565b5b828204905092915050565b6000613d5b82612a73565b9150613d6683612a73565b9250828201905080821115613d7e57613d7d613473565b5b92915050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613dba60118361338a565b9150613dc582613d84565b602082019050919050565b60006020820190508181036000830152613de981613dad565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613e26600c8361338a565b9150613e3182613df0565b602082019050919050565b60006020820190508181036000830152613e5581613e19565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613e9260108361338a565b9150613e9d82613e5c565b602082019050919050565b60006020820190508181036000830152613ec181613e85565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613efe60168361338a565b9150613f0982613ec8565b602082019050919050565b60006020820190508181036000830152613f2d81613ef1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f6a60208361338a565b9150613f7582613f34565b602082019050919050565b60006020820190508181036000830152613f9981613f5d565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613ffc602b8361338a565b915061400782613fa0565b604082019050919050565b6000602082019050818103600083015261402b81613fef565b905091905056fea2646970667358221220f91cbcea9a42b2acb7f7466ef2d6e066a41b76107a58a644e5bd38e40084f3f864736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x22 PUSH3 0x28 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1D2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x7B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x72 SWAP1 PUSH3 0x175 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xFF DUP1 AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ PUSH3 0xEC JUMPI PUSH1 0xFF PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0xFF PUSH1 0x40 MLOAD PUSH3 0xE3 SWAP2 SWAP1 PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C697A696E6700000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15D PUSH1 0x27 DUP4 PUSH3 0xEE JUMP JUMPDEST SWAP2 POP PUSH3 0x16A DUP3 PUSH3 0xFF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x190 DUP2 PUSH3 0x14E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1AF DUP2 PUSH3 0x197 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1CC PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x1A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4068 DUP1 PUSH3 0x1E2 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xD8E8DE34 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD8E8DE34 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xE4683A79 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0xE8D6E0DE EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0xF5326B19 EQ PUSH2 0x405 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xB810C636 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x333 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x75151B63 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x768C6EC0 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x87490D86 EQ PUSH2 0x28D JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x2621338 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x137764FB EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x2654EC7E EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x32200882 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x3AD59DBC EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x421 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x280D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH2 0x55F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x194 SWAP3 SWAP2 SWAP1 PUSH2 0x2A4A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B2 SWAP2 SWAP1 PUSH2 0x2B43 JUMP JUMPDEST PUSH2 0x96A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E2 SWAP2 SWAP1 PUSH2 0x2DED JUMP JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F1 PUSH2 0xECB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2EC8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH2 0xF5D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH2 0xF71 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0xFC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x3034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x28B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x3050 JUMP JUMPDEST PUSH2 0x11F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x1345 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B4 SWAP2 SWAP1 PUSH2 0x30BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C5 PUSH2 0x1386 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D2 SWAP2 SWAP1 PUSH2 0x30DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F0 SWAP2 SWAP1 PUSH2 0x30F5 JUMP JUMPDEST PUSH2 0x13B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FF PUSH2 0x1565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x331 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x32C SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH2 0x15B6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x348 SWAP2 SWAP1 PUSH2 0x320F JUMP JUMPDEST PUSH2 0x17CD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH2 0x1824 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x376 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x399 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x394 SWAP2 SWAP1 PUSH2 0x325C JUMP JUMPDEST PUSH2 0x187A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3B0 SWAP2 SWAP1 PUSH2 0x32AF JUMP JUMPDEST PUSH2 0x1906 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3C2 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D3 PUSH2 0x1BB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E0 SWAP2 SWAP1 PUSH2 0x30DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FE SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH2 0x1BDD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41A SWAP2 SWAP1 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x1C60 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x9E PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x49E JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x458 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C5 PUSH2 0x2C5A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x4EC PUSH2 0x2586 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x4E4 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x520 JUMPI PUSH2 0x51F PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53B JUMPI PUSH2 0x53A PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x505 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E9 SWAP1 PUSH2 0x33E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x64D SWAP1 PUSH2 0x3453 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA0 PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6D8 SWAP2 SWAP1 PUSH2 0x34A2 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x71D DUP12 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x1D17 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7BC JUMPI PUSH1 0x1 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD GT ISZERO PUSH2 0x7BB JUMPI PUSH2 0x7BA DUP12 PUSH2 0x1EB0 JUMP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD GT ISZERO PUSH2 0x86F JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82A SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x849 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x86D SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8AE SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8F1 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP PUSH2 0x902 DUP10 DUP10 DUP5 DUP5 PUSH1 0x40 ADD MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH32 0xF26DE978CBAEA68EA699627155A10AD53DF3321B0F95A08264C0CFD6D4C05326 DUP15 DUP14 DUP11 PUSH1 0x40 MLOAD PUSH2 0x94D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP11 DUP3 SWAP4 POP SWAP4 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x979 DUP12 DUP12 DUP7 DUP10 DUP14 PUSH2 0x214E JUMP JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP14 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x35BF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F9 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP PUSH1 0xA1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0xA4A SWAP1 PUSH2 0x35F6 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP CALLER PUSH1 0xA1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAA1 SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x65 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE POP PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP1 DUP11 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C205F90C01160D42994A0EB521810056D94BB82A1FCB038D7179C4158A1F15B DUP11 DUP14 DUP14 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xDA1 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xDBF PUSH2 0x235D JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xEC5 JUMPI PUSH1 0x9E PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDF6 JUMPI PUSH2 0xDF5 PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xE5B JUMPI PUSH2 0xE5A PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE87 JUMPI PUSH2 0xE86 PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xDC8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x69 DUP1 SLOAD PUSH2 0xEDA SWAP1 PUSH2 0x3728 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF06 SWAP1 PUSH2 0x3728 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF53 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF28 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF53 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF36 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xF65 PUSH2 0x235D JUMP JUMPDEST PUSH2 0xF6F PUSH1 0x0 PUSH2 0x23DB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9C PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFCF PUSH2 0x25A6 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1200 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x126F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1266 SWAP1 PUSH2 0x37A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x12D8 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x1341 JUMPI DUP1 PUSH1 0x68 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x134D PUSH2 0x2668 JUMP JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x13B8 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1427 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x141E SWAP1 PUSH2 0x37A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x14A6 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x1525 JUMPI DUP1 PUSH1 0x9D PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1558 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x37C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x66 PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x65 SLOAD SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x15E7 JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND LT JUMPDEST DUP1 PUSH2 0x1614 JUMPI POP PUSH2 0x15F6 ADDRESS PUSH2 0x24A1 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1613 JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ JUMPDEST JUMPDEST PUSH2 0x1653 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x164A SWAP1 PUSH2 0x386E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1690 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x186A0 PUSH1 0x65 DUP2 SWAP1 SSTORE POP PUSH2 0x1388 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1F4 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1770 PUSH2 0x24C4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x17C9 JUMPI PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x17C0 SWAP2 SWAP1 PUSH2 0x38D6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x17D5 PUSH2 0x235D JUMP JUMPDEST DUP2 DUP2 PUSH1 0x69 SWAP2 DUP3 PUSH2 0x17E6 SWAP3 SWAP2 SWAP1 PUSH2 0x3A9E JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1818 SWAP3 SWAP2 SWAP1 PUSH2 0x3B9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9D PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1882 PUSH2 0x235D JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18BD SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1900 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1998 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198F SWAP1 PUSH2 0x33E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x19FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F3 SWAP1 PUSH2 0x3453 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B2E SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B4D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B71 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP DUP3 PUSH31 0x7C875846B687732A7579C19BB1DADE66CD14E9F4F809565E2B2B5E76C72B4F DUP4 PUSH1 0x40 MLOAD PUSH2 0x1BA1 SWAP2 SWAP1 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1BE5 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C54 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C4B SWAP1 PUSH2 0x3C31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C5D DUP2 PUSH2 0x23DB JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1C68 PUSH2 0x235D JUMP JUMPDEST DUP2 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xE38926C5806B98A6FD00C5D791A36FBD196537FE48D11C45C9F1D0ACD1EA74DF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1D0B SWAP3 SWAP2 SWAP1 PUSH2 0x3C51 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x1D1F PUSH2 0x2688 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH2 0x1D5C SWAP2 SWAP1 PUSH2 0x3C7A JUMP JUMPDEST SWAP1 POP PUSH1 0x65 SLOAD DUP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1D7B SWAP2 SWAP1 PUSH2 0x3CAE JUMP JUMPDEST PUSH2 0x1D85 SWAP2 SWAP1 PUSH2 0x3D1F JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1DD1 SWAP2 SWAP1 PUSH2 0x3CAE JUMP JUMPDEST PUSH2 0x1DDB SWAP2 SWAP1 PUSH2 0x3D1F JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1DF8 SWAP2 SWAP1 PUSH2 0x3C7A JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x1E44 SWAP2 SWAP1 PUSH2 0x3CAE JUMP JUMPDEST PUSH2 0x1E4E SWAP2 SWAP1 PUSH2 0x3D1F JUMP JUMPDEST DUP3 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP DUP3 ISZERO PUSH2 0x1E8A JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x1E73 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1EA8 JUMP JUMPDEST DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x1E9E SWAP2 SWAP1 PUSH2 0x3C7A JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F77 SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F96 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FBA SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x96C76D5AEC8A8C11A9C8E02768E3FA309347330D08961E0CF9FD43B349B684C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x201A SWAP2 SWAP1 PUSH2 0x3D1F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2145 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x2056 JUMPI PUSH2 0x2055 PUSH2 0x335B JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x206B SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2089 SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20CC SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP DUP2 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x20E1 JUMPI PUSH2 0x20E0 PUSH2 0x335B JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x20F6 SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x61DCEB70B8F97239C33A3F9C0D0EFC6C8759C7E9A808F75DD42B3A0F213186C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x201F JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9C PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x21DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21D1 SWAP1 PUSH2 0x3DD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x221D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2214 SWAP1 PUSH2 0x3E3C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x228C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2283 SWAP1 PUSH2 0x3EA8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22F2 SWAP1 PUSH2 0x3EA8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SHL PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SUB PUSH2 0x2356 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x234D SWAP1 PUSH2 0x3F14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2365 PUSH2 0x251D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2383 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x23D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23D0 SWAP1 PUSH2 0x3F80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2513 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x250A SWAP1 PUSH2 0x4012 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x251B PUSH2 0x2525 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2574 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x256B SWAP1 PUSH2 0x4012 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2584 PUSH2 0x257F PUSH2 0x251D JUMP JUMPDEST PUSH2 0x23DB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26D0 DUP2 PUSH2 0x26BD JUMP JUMPDEST DUP2 EQ PUSH2 0x26DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26ED DUP2 PUSH2 0x26C7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2709 JUMPI PUSH2 0x2708 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2717 DUP5 DUP3 DUP6 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2755 DUP2 PUSH2 0x26BD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2771 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x274C JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2784 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x274C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2796 DUP4 DUP4 PUSH2 0x275B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27BA DUP3 PUSH2 0x2720 JUMP JUMPDEST PUSH2 0x27C4 DUP2 DUP6 PUSH2 0x272B JUMP JUMPDEST SWAP4 POP PUSH2 0x27CF DUP4 PUSH2 0x273C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP2 MLOAD PUSH2 0x27E7 DUP9 DUP3 PUSH2 0x278A JUMP JUMPDEST SWAP8 POP PUSH2 0x27F2 DUP4 PUSH2 0x27A2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x27D3 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2827 DUP2 DUP5 PUSH2 0x27AF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2854 JUMPI PUSH2 0x2853 PUSH2 0x282F JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2871 JUMPI PUSH2 0x2870 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x288D JUMPI PUSH2 0x288C PUSH2 0x2839 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28BF DUP3 PUSH2 0x2894 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x28CF DUP2 PUSH2 0x28B4 JUMP JUMPDEST DUP2 EQ PUSH2 0x28DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x28EC DUP2 PUSH2 0x28C6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x290F DUP2 PUSH2 0x28F2 JUMP JUMPDEST DUP2 EQ PUSH2 0x291A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x292C DUP2 PUSH2 0x2906 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2947 DUP2 PUSH2 0x2932 JUMP JUMPDEST DUP2 EQ PUSH2 0x2952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2964 DUP2 PUSH2 0x293E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x298A JUMPI PUSH2 0x2989 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2998 DUP12 DUP3 DUP13 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x29A9 DUP12 DUP3 DUP13 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x29BA DUP12 DUP3 DUP13 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29DB JUMPI PUSH2 0x29DA PUSH2 0x26B8 JUMP JUMPDEST JUMPDEST PUSH2 0x29E7 DUP12 DUP3 DUP13 ADD PUSH2 0x283E JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x80 PUSH2 0x29FA DUP12 DUP3 DUP13 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x2A0B DUP12 DUP3 DUP13 ADD PUSH2 0x291D JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x2A1C DUP12 DUP3 DUP13 ADD PUSH2 0x2955 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH2 0x2A35 DUP2 PUSH2 0x26BD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2A44 DUP2 PUSH2 0x28B4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2A5F PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x2A6C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2A3B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A86 DUP2 PUSH2 0x2A73 JUMP JUMPDEST DUP2 EQ PUSH2 0x2A91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2AA3 DUP2 PUSH2 0x2A7D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2ACA DUP2 PUSH2 0x2AA9 JUMP JUMPDEST DUP2 EQ PUSH2 0x2AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2AE7 DUP2 PUSH2 0x2AC1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2B03 JUMPI PUSH2 0x2B02 PUSH2 0x282F JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B20 JUMPI PUSH2 0x2B1F PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2B3C JUMPI PUSH2 0x2B3B PUSH2 0x2839 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x2B67 JUMPI PUSH2 0x2B66 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2B75 DUP14 DUP3 DUP15 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x2B86 DUP14 DUP3 DUP15 ADD PUSH2 0x2A94 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x2B97 DUP14 DUP3 DUP15 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x2BA8 DUP14 DUP3 DUP15 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x2BB9 DUP14 DUP3 DUP15 ADD PUSH2 0x2AD8 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x2BCA DUP14 DUP3 DUP15 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x2BDB DUP14 DUP3 DUP15 ADD PUSH2 0x2A94 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x2BEC DUP14 DUP3 DUP15 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C0E JUMPI PUSH2 0x2C0D PUSH2 0x26B8 JUMP JUMPDEST JUMPDEST PUSH2 0x2C1A DUP14 DUP3 DUP15 ADD PUSH2 0x2AED JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2C43 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A2C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2C92 DUP3 PUSH2 0x2C49 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2CB1 JUMPI PUSH2 0x2CB0 PUSH2 0x2C5A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CC4 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CD0 DUP3 DUP3 PUSH2 0x2C89 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2CF0 JUMPI PUSH2 0x2CEF PUSH2 0x2C5A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D1C JUMPI PUSH2 0x2D1B PUSH2 0x2D01 JUMP JUMPDEST JUMPDEST PUSH2 0x2D26 PUSH1 0x40 PUSH2 0x2CBA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D36 DUP5 DUP3 DUP6 ADD PUSH2 0x26DE JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2D4A DUP5 DUP3 DUP6 ADD PUSH2 0x26DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D69 PUSH2 0x2D64 DUP5 PUSH2 0x2CD5 JUMP JUMPDEST PUSH2 0x2CBA JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2D8C JUMPI PUSH2 0x2D8B PUSH2 0x2839 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DB5 JUMPI DUP1 PUSH2 0x2DA1 DUP9 DUP3 PUSH2 0x2D06 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x2D8E JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2DD4 JUMPI PUSH2 0x2DD3 PUSH2 0x282F JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2DE4 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2D56 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E04 JUMPI PUSH2 0x2E03 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E12 DUP6 DUP3 DUP7 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E33 JUMPI PUSH2 0x2E32 PUSH2 0x26B8 JUMP JUMPDEST JUMPDEST PUSH2 0x2E3F DUP6 DUP3 DUP7 ADD PUSH2 0x2DBF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E83 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2E68 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E9A DUP3 PUSH2 0x2E49 JUMP JUMPDEST PUSH2 0x2EA4 DUP2 DUP6 PUSH2 0x2E54 JUMP JUMPDEST SWAP4 POP PUSH2 0x2EB4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2E65 JUMP JUMPDEST PUSH2 0x2EBD DUP2 PUSH2 0x2C49 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2EE2 DUP2 DUP5 PUSH2 0x2E8F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F00 JUMPI PUSH2 0x2EFF PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F0E DUP5 DUP3 DUP6 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2F20 DUP2 PUSH2 0x2932 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2F3B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F17 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2F4A DUP2 PUSH2 0x28B4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2F59 DUP2 PUSH2 0x2A73 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2F68 DUP2 PUSH2 0x2AA9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2F77 DUP2 PUSH2 0x2932 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x120 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2F94 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2F41 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2FA7 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2F41 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2FBA PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2F41 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2FCD PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2F50 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2FE0 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2F5F JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2FF3 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2F6E JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x3006 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2F41 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3019 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2F5F JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x302E PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2F50 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 ADD SWAP1 POP PUSH2 0x304A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F7D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3067 JUMPI PUSH2 0x3066 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3075 DUP6 DUP3 DUP7 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3086 DUP6 DUP3 DUP7 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x30A6 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x274C JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x30B9 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x274C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x30D4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3090 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x30EF PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A3B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x310E JUMPI PUSH2 0x310D PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x311C DUP7 DUP3 DUP8 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x312D DUP7 DUP3 DUP8 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x313E DUP7 DUP3 DUP8 ADD PUSH2 0x2955 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x316D DUP2 PUSH2 0x3148 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x317C DUP2 PUSH2 0x2A73 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3197 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x3164 JUMP JUMPDEST PUSH2 0x31A4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3164 JUMP JUMPDEST PUSH2 0x31B1 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3173 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x31CF JUMPI PUSH2 0x31CE PUSH2 0x282F JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31EC JUMPI PUSH2 0x31EB PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3208 JUMPI PUSH2 0x3207 PUSH2 0x2839 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3226 JUMPI PUSH2 0x3225 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3244 JUMPI PUSH2 0x3243 PUSH2 0x26B8 JUMP JUMPDEST JUMPDEST PUSH2 0x3250 DUP6 DUP3 DUP7 ADD PUSH2 0x31B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3275 JUMPI PUSH2 0x3274 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3283 DUP7 DUP3 DUP8 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3294 DUP7 DUP3 DUP8 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x32A5 DUP7 DUP3 DUP8 ADD PUSH2 0x2A94 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C6 JUMPI PUSH2 0x32C5 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x32D4 DUP6 DUP3 DUP7 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x32E5 DUP6 DUP3 DUP7 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x32F8 DUP2 PUSH2 0x3148 JUMP JUMPDEST DUP2 EQ PUSH2 0x3303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3315 DUP2 PUSH2 0x32EF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3332 JUMPI PUSH2 0x3331 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3340 DUP6 DUP3 DUP7 ADD PUSH2 0x3306 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3351 DUP6 DUP3 DUP7 ADD PUSH2 0x3306 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F6E6C7941676772656761746F72000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33D1 PUSH1 0xE DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x33DC DUP3 PUSH2 0x339B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3400 DUP2 PUSH2 0x33C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F7264657246756C66696C6C6564000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343D PUSH1 0xE DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3448 DUP3 PUSH2 0x3407 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x346C DUP2 PUSH2 0x3430 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34AD DUP3 PUSH2 0x2AA9 JUMP JUMPDEST SWAP2 POP PUSH2 0x34B8 DUP4 PUSH2 0x2AA9 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x34DC JUMPI PUSH2 0x34DB PUSH2 0x3473 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x34F7 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2A3B JUMP JUMPDEST PUSH2 0x3504 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3173 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x351A DUP2 PUSH2 0x293E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3536 JUMPI PUSH2 0x3535 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3544 DUP5 DUP3 DUP6 ADD PUSH2 0x350B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3572 PUSH2 0x356D PUSH2 0x3568 DUP5 PUSH2 0x28F2 JUMP JUMPDEST PUSH2 0x354D JUMP JUMPDEST PUSH2 0x2AA9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3582 DUP2 PUSH2 0x3557 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x359D PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x35AA PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x35B7 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3579 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x35D4 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2A3B JUMP JUMPDEST PUSH2 0x35E1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2A3B JUMP JUMPDEST PUSH2 0x35EE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3173 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3601 DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x3633 JUMPI PUSH2 0x3632 PUSH2 0x3473 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3659 PUSH2 0x3654 PUSH2 0x364F DUP5 PUSH2 0x2AA9 JUMP JUMPDEST PUSH2 0x354D JUMP JUMPDEST PUSH2 0x2A73 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3669 DUP2 PUSH2 0x363E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x368A DUP4 DUP6 PUSH2 0x338A JUMP JUMPDEST SWAP4 POP PUSH2 0x3697 DUP4 DUP6 DUP5 PUSH2 0x366F JUMP JUMPDEST PUSH2 0x36A0 DUP4 PUSH2 0x2C49 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x36C0 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x3660 JUMP JUMPDEST PUSH2 0x36CD PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x36DA PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2A2C JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x36ED DUP2 DUP5 DUP7 PUSH2 0x367E JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x3740 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x3753 JUMPI PUSH2 0x3752 PUSH2 0x36F9 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x378F PUSH1 0x16 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x379A DUP3 PUSH2 0x3759 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x37BE DUP2 PUSH2 0x3782 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x37DA PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x37E7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2A3B JUMP JUMPDEST PUSH2 0x37F4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2F17 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3858 PUSH1 0x2E DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3863 DUP3 PUSH2 0x37FC JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3887 DUP2 PUSH2 0x384B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38C0 PUSH2 0x38BB PUSH2 0x38B6 DUP5 PUSH2 0x388E JUMP JUMPDEST PUSH2 0x354D JUMP JUMPDEST PUSH2 0x3898 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x38D0 DUP2 PUSH2 0x38A5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x38EB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x38C7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x395E PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x3921 JUMP JUMPDEST PUSH2 0x3968 DUP7 DUP4 PUSH2 0x3921 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x399B PUSH2 0x3996 PUSH2 0x3991 DUP5 PUSH2 0x2A73 JUMP JUMPDEST PUSH2 0x354D JUMP JUMPDEST PUSH2 0x2A73 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x39B5 DUP4 PUSH2 0x3980 JUMP JUMPDEST PUSH2 0x39C9 PUSH2 0x39C1 DUP3 PUSH2 0x39A2 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x392E JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x39DE PUSH2 0x39D1 JUMP JUMPDEST PUSH2 0x39E9 DUP2 DUP5 DUP5 PUSH2 0x39AC JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A0D JUMPI PUSH2 0x3A02 PUSH1 0x0 DUP3 PUSH2 0x39D6 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x39EF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x3A52 JUMPI PUSH2 0x3A23 DUP2 PUSH2 0x38FC JUMP JUMPDEST PUSH2 0x3A2C DUP5 PUSH2 0x3911 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x3A3B JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x3A4F PUSH2 0x3A47 DUP6 PUSH2 0x3911 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x39EE JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A75 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x3A57 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A8E DUP4 DUP4 PUSH2 0x3A64 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3AA8 DUP4 DUP4 PUSH2 0x38F1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AC1 JUMPI PUSH2 0x3AC0 PUSH2 0x2C5A JUMP JUMPDEST JUMPDEST PUSH2 0x3ACB DUP3 SLOAD PUSH2 0x3728 JUMP JUMPDEST PUSH2 0x3AD6 DUP3 DUP3 DUP6 PUSH2 0x3A11 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3B05 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x3AF3 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x3AFD DUP6 DUP3 PUSH2 0x3A82 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x3B65 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x3B13 DUP7 PUSH2 0x38FC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3B3B JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3B16 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x3B58 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x3B54 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x3A64 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B7A DUP4 DUP6 PUSH2 0x2E54 JUMP JUMPDEST SWAP4 POP PUSH2 0x3B87 DUP4 DUP6 DUP5 PUSH2 0x366F JUMP JUMPDEST PUSH2 0x3B90 DUP4 PUSH2 0x2C49 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3BB6 DUP2 DUP5 DUP7 PUSH2 0x3B6E JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1B PUSH1 0x26 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3C26 DUP3 PUSH2 0x3BBF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C4A DUP2 PUSH2 0x3C0E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3C66 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3164 JUMP JUMPDEST PUSH2 0x3C73 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3164 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C85 DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH2 0x3C90 DUP4 PUSH2 0x2A73 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3CA8 JUMPI PUSH2 0x3CA7 PUSH2 0x3473 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CB9 DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH2 0x3CC4 DUP4 PUSH2 0x2A73 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3CD2 DUP2 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x3CE9 JUMPI PUSH2 0x3CE8 PUSH2 0x3473 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D2A DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH2 0x3D35 DUP4 PUSH2 0x2A73 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x3D45 JUMPI PUSH2 0x3D44 PUSH2 0x3CF0 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D5B DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH2 0x3D66 DUP4 PUSH2 0x2A73 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3D7E JUMPI PUSH2 0x3D7D PUSH2 0x3473 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x546F6B656E4E6F74537570706F72746564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DBA PUSH1 0x11 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3DC5 DUP3 PUSH2 0x3D84 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DE9 DUP2 PUSH2 0x3DAD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E7449735A65726F0000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E26 PUSH1 0xC DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3E31 DUP3 PUSH2 0x3DF0 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3E55 DUP2 PUSH2 0x3E19 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5468726F775A65726F4164647265737300000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E92 PUSH1 0x10 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3E9D DUP3 PUSH2 0x3E5C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3EC1 DUP2 PUSH2 0x3E85 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C6964496E737469747574696F6E436F646500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EFE PUSH1 0x16 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3F09 DUP3 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3F2D DUP2 PUSH2 0x3EF1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F6A PUSH1 0x20 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3F75 DUP3 PUSH2 0x3F34 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3F99 DUP2 PUSH2 0x3F5D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FFC PUSH1 0x2B DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x4007 DUP3 PUSH2 0x3FA0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x402B DUP2 PUSH2 0x3FEF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 SHR 0xBC 0xEA SWAP11 TIMESTAMP 0xB2 0xAC 0xB7 0xF7 CHAINID PUSH15 0xF2D6E066A41B76107A58A644E5BD38 0xE4 STOP DUP5 RETURN 0xF8 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"367:10240:12:-:0;;;816:53;;;;;;;;;;840:22;:20;;;:22;;:::i;:::-;367:10240;;5939:280:1;6007:13;;;;;;;;;;;6006:14;5998:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6094:15;6078:31;;:12;;;;;;;;;;:31;;;6074:139;;6140:15;6125:12;;:30;;;;;;;;;;;;;;;;;;6174:28;6186:15;6174:28;;;;;;:::i;:::-;;;;;;;;6074:139;5939:280::o;7:169:15:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:226::-;322:34;318:1;310:6;306:14;299:58;391:9;386:2;378:6;374:15;367:34;182:226;:::o;414:366::-;556:3;577:67;641:2;636:3;577:67;:::i;:::-;570:74;;653:93;742:3;653:93;:::i;:::-;771:2;766:3;762:12;755:19;;414:366;;;:::o;786:419::-;952:4;990:2;979:9;975:18;967:26;;1039:9;1033:4;1029:20;1025:1;1014:9;1010:17;1003:47;1067:131;1193:4;1067:131;:::i;:::-;1059:139;;786:419;;;:::o;1211:86::-;1246:7;1286:4;1279:5;1275:16;1264:27;;1211:86;;;:::o;1303:112::-;1386:22;1402:5;1386:22;:::i;:::-;1381:3;1374:35;1303:112;;:::o;1421:214::-;1510:4;1548:2;1537:9;1533:18;1525:26;;1561:67;1625:1;1614:9;1610:17;1601:6;1561:67;:::i;:::-;1421:214;;;;:::o;367:10240:12:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__Ownable_init_26":{"entryPoint":9412,"id":26,"parameterSlots":0,"returnSlots":0},"@__Ownable_init_unchained_37":{"entryPoint":9509,"id":37,"parameterSlots":0,"returnSlots":0},"@_calculateFees_3431":{"entryPoint":7447,"id":3431,"parameterSlots":3,"returnSlots":1},"@_checkOwner_68":{"entryPoint":9053,"id":68,"parameterSlots":0,"returnSlots":0},"@_handler_3052":{"entryPoint":8526,"id":3052,"parameterSlots":5,"returnSlots":0},"@_msgSender_1147":{"entryPoint":9501,"id":1147,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_125":{"entryPoint":9179,"id":125,"parameterSlots":1,"returnSlots":0},"@createOrder_2991":{"entryPoint":2410,"id":2991,"parameterSlots":10,"returnSlots":1},"@getAggregatorAddress_3556":{"entryPoint":7091,"id":3556,"parameterSlots":0,"returnSlots":1},"@getAggregator_3578":{"entryPoint":3787,"id":3578,"parameterSlots":0,"returnSlots":1},"@getFeeDetails_3547":{"entryPoint":5477,"id":3547,"parameterSlots":0,"returnSlots":3},"@getOrderInfo_3445":{"entryPoint":4039,"id":3445,"parameterSlots":1,"returnSlots":1},"@getSupportedInstitutionName_3472":{"entryPoint":4933,"id":3472,"parameterSlots":1,"returnSlots":1},"@getSupportedInstitutions_3531":{"entryPoint":1057,"id":3531,"parameterSlots":1,"returnSlots":1},"@getWhitelistedStatus_3569":{"entryPoint":6180,"id":3569,"parameterSlots":1,"returnSlots":1},"@initialize_2883":{"entryPoint":5558,"id":2883,"parameterSlots":1,"returnSlots":0},"@isContract_808":{"entryPoint":9377,"id":808,"parameterSlots":1,"returnSlots":1},"@isTokenSupported_3458":{"entryPoint":3953,"id":3458,"parameterSlots":1,"returnSlots":1},"@owner_54":{"entryPoint":4998,"id":54,"parameterSlots":0,"returnSlots":1},"@refund_3328":{"entryPoint":6406,"id":3328,"parameterSlots":2,"returnSlots":1},"@renounceOwnership_82":{"entryPoint":3933,"id":82,"parameterSlots":0,"returnSlots":0},"@rewardValidators_3232":{"entryPoint":8196,"id":3232,"parameterSlots":4,"returnSlots":0},"@setSupportedInstitutions_3773":{"entryPoint":3511,"id":3773,"parameterSlots":2,"returnSlots":0},"@settingManagerBool_3719":{"entryPoint":5040,"id":3719,"parameterSlots":3,"returnSlots":0},"@settle_3180":{"entryPoint":1375,"id":3180,"parameterSlots":8,"returnSlots":2},"@transferOwnership_105":{"entryPoint":7133,"id":105,"parameterSlots":1,"returnSlots":0},"@transferSenderFee_3268":{"entryPoint":7856,"id":3268,"parameterSlots":1,"returnSlots":0},"@updateProtocolAddresses_3832":{"entryPoint":4600,"id":3832,"parameterSlots":2,"returnSlots":0},"@updateProtocolAggregator_3848":{"entryPoint":6093,"id":3848,"parameterSlots":2,"returnSlots":0},"@updateProtocolFees_3796":{"entryPoint":7264,"id":3796,"parameterSlots":2,"returnSlots":0},"@withdraw_3598":{"entryPoint":6266,"id":3598,"parameterSlots":3,"returnSlots":0},"abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":11606,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":10461,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_address_$dyn_calldata_ptr":{"entryPoint":10302,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":11711,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":10581,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":13579,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":9950,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":12729,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_string_calldata_ptr":{"entryPoint":10989,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_struct$_Institution_$3609_memory_ptr":{"entryPoint":11526,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint128":{"entryPoint":13062,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":10900,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint64":{"entryPoint":10525,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint96":{"entryPoint":10968,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":12010,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":12892,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr":{"entryPoint":11075,"id":null,"parameterSlots":2,"returnSlots":10},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":13600,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":9971,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":12368,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_addresst_bool":{"entryPoint":12533,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":11757,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32":{"entryPoint":12975,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_array$_t_address_$dyn_calldata_ptrt_addresst_uint64t_bool":{"entryPoint":10602,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":12815,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint128t_uint128":{"entryPoint":13083,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encodeUpdatedPos_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr":{"entryPoint":10122,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":12097,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":10811,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":10159,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool":{"entryPoint":12142,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":12055,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32":{"entryPoint":10060,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":10796,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":15214,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":11919,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack":{"entryPoint":14535,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":13950,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":15374,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack":{"entryPoint":15897,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack":{"entryPoint":14210,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack":{"entryPoint":14411,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack":{"entryPoint":13360,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack":{"entryPoint":16113,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":16221,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack":{"entryPoint":16005,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack":{"entryPoint":15789,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack":{"entryPoint":16367,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack":{"entryPoint":13252,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_struct$_InstitutionByCode_$3614_memory_ptr_to_t_struct$_InstitutionByCode_$3614_memory_ptr_fromStack":{"entryPoint":12432,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr":{"entryPoint":10075,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_Order_$3935_memory_ptr_to_t_struct$_Order_$3935_memory_ptr_fromStack":{"entryPoint":12157,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint128_to_t_uint128_fromStack":{"entryPoint":12644,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256":{"entryPoint":12112,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":12659,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint64_to_t_uint96_fromStack":{"entryPoint":13689,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint256_fromStack":{"entryPoint":13920,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint96":{"entryPoint":12127,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":12506,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":13759,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":13538,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":10253,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":12070,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":11310,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":10826,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed":{"entryPoint":14277,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed":{"entryPoint":13704,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":15259,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11976,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":14550,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15409,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15932,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14245,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14446,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13395,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16148,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16256,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16040,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15824,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16402,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13287,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_struct$_InstitutionByCode_$3614_memory_ptr__to_t_struct$_InstitutionByCode_$3614_memory_ptr__fromStack_reversed":{"entryPoint":12479,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_Order_$3935_memory_ptr__to_t_struct$_Order_$3935_memory_ptr__fromStack_reversed":{"entryPoint":12340,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed":{"entryPoint":15441,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint128_t_uint128_t_uint256__to_t_uint128_t_uint128_t_uint256__fromStack_reversed":{"entryPoint":12674,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13995,"id":null,"parameterSlots":6,"returnSlots":1},"allocate_memory":{"entryPoint":11450,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":9897,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":11477,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":10044,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_bytes_storage":{"entryPoint":14588,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":10016,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_calldata_ptr":{"entryPoint":14577,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":11849,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":10146,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":10027,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":11860,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":13194,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":15696,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":15647,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":15534,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":15482,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint96":{"entryPoint":13474,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_bytes_storage":{"entryPoint":14865,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":10420,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":10546,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":9917,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_1_by_1":{"entryPoint":14478,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint128":{"entryPoint":12616,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":10388,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":10867,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint64":{"entryPoint":10482,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":14488,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":10921,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":14830,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_rational_1_by_1_to_t_uint8":{"entryPoint":14501,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint256_to_t_uint256":{"entryPoint":14720,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint64_to_t_uint96":{"entryPoint":13655,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint96_to_t_uint256":{"entryPoint":13886,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage":{"entryPoint":15006,"id":null,"parameterSlots":3,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":13935,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":11877,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":14609,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":14120,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":14978,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":11401,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":13645,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":13814,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":14948,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":13427,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":15600,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":14073,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":13147,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":11354,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":14754,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":10292,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":10287,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":11521,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":10297,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":9912,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":9907,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":11337,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":14625,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":14935,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":14806,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":15295,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2":{"entryPoint":15856,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4":{"entryPoint":14169,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759":{"entryPoint":14332,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5":{"entryPoint":13319,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5":{"entryPoint":16072,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":16180,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7":{"entryPoint":15964,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1":{"entryPoint":15748,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b":{"entryPoint":16288,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243":{"entryPoint":13211,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":14638,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":14764,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":10438,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":10558,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":9927,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint128":{"entryPoint":13039,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":10877,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint64":{"entryPoint":10502,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint96":{"entryPoint":10945,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":14801,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:50028:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"379:32:15","statements":[{"nodeType":"YulAssignment","src":"389:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:15"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:15","type":""}],"src":"334:77:15"},{"body":{"nodeType":"YulBlock","src":"460:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:15"},"nodeType":"YulFunctionCall","src":"519:12:15"},"nodeType":"YulExpressionStatement","src":"519:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"490:17:15"},"nodeType":"YulFunctionCall","src":"490:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:15"},"nodeType":"YulFunctionCall","src":"480:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:15"},"nodeType":"YulFunctionCall","src":"473:43:15"},"nodeType":"YulIf","src":"470:63:15"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:15","type":""}],"src":"417:122:15"},{"body":{"nodeType":"YulBlock","src":"597:87:15","statements":[{"nodeType":"YulAssignment","src":"607:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:15"},"nodeType":"YulFunctionCall","src":"616:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:15"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"645:26:15"},"nodeType":"YulFunctionCall","src":"645:33:15"},"nodeType":"YulExpressionStatement","src":"645:33:15"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:15","type":""}],"src":"545:139:15"},{"body":{"nodeType":"YulBlock","src":"756:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"802:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"804:77:15"},"nodeType":"YulFunctionCall","src":"804:79:15"},"nodeType":"YulExpressionStatement","src":"804:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"777:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"773:3:15"},"nodeType":"YulFunctionCall","src":"773:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"798:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"769:3:15"},"nodeType":"YulFunctionCall","src":"769:32:15"},"nodeType":"YulIf","src":"766:119:15"},{"nodeType":"YulBlock","src":"895:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"910:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"924:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"914:6:15","type":""}]},{"nodeType":"YulAssignment","src":"939:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"974:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"985:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"970:3:15"},"nodeType":"YulFunctionCall","src":"970:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"994:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"949:20:15"},"nodeType":"YulFunctionCall","src":"949:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"939:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"726:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"737:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"749:6:15","type":""}],"src":"690:329:15"},{"body":{"nodeType":"YulBlock","src":"1128:40:15","statements":[{"nodeType":"YulAssignment","src":"1139:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1155:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1149:5:15"},"nodeType":"YulFunctionCall","src":"1149:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1139:6:15"}]}]},"name":"array_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1111:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1121:6:15","type":""}],"src":"1025:143:15"},{"body":{"nodeType":"YulBlock","src":"1314:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1331:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"1336:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1324:6:15"},"nodeType":"YulFunctionCall","src":"1324:19:15"},"nodeType":"YulExpressionStatement","src":"1324:19:15"},{"nodeType":"YulAssignment","src":"1352:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1371:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1376:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1367:3:15"},"nodeType":"YulFunctionCall","src":"1367:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1352:11:15"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1286:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1291:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1302:11:15","type":""}],"src":"1174:213:15"},{"body":{"nodeType":"YulBlock","src":"1494:60:15","statements":[{"nodeType":"YulAssignment","src":"1504:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"1512:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1504:4:15"}]},{"nodeType":"YulAssignment","src":"1525:22:15","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1537:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1542:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1533:3:15"},"nodeType":"YulFunctionCall","src":"1533:14:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1525:4:15"}]}]},"name":"array_dataslot_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1481:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1489:4:15","type":""}],"src":"1393:161:15"},{"body":{"nodeType":"YulBlock","src":"1615:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1632:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1655:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"1637:17:15"},"nodeType":"YulFunctionCall","src":"1637:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1625:6:15"},"nodeType":"YulFunctionCall","src":"1625:37:15"},"nodeType":"YulExpressionStatement","src":"1625:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1603:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1610:3:15","type":""}],"src":"1560:108:15"},{"body":{"nodeType":"YulBlock","src":"1882:391:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1892:26:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1908:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1913:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1904:3:15"},"nodeType":"YulFunctionCall","src":"1904:14:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"1896:4:15","type":""}]},{"nodeType":"YulBlock","src":"1928:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1963:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1993:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2000:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1989:3:15"},"nodeType":"YulFunctionCall","src":"1989:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1983:5:15"},"nodeType":"YulFunctionCall","src":"1983:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"1967:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2053:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2071:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2076:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2067:3:15"},"nodeType":"YulFunctionCall","src":"2067:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"2019:33:15"},"nodeType":"YulFunctionCall","src":"2019:63:15"},"nodeType":"YulExpressionStatement","src":"2019:63:15"}]},{"nodeType":"YulBlock","src":"2102:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2137:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2167:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2174:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2163:3:15"},"nodeType":"YulFunctionCall","src":"2163:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2157:5:15"},"nodeType":"YulFunctionCall","src":"2157:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2141:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2227:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2245:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2250:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2241:3:15"},"nodeType":"YulFunctionCall","src":"2241:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"2193:33:15"},"nodeType":"YulFunctionCall","src":"2193:63:15"},"nodeType":"YulExpressionStatement","src":"2193:63:15"}]}]},"name":"abi_encode_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1869:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1876:3:15","type":""}],"src":"1768:505:15"},{"body":{"nodeType":"YulBlock","src":"2417:157:15","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2519:6:15"},{"name":"pos","nodeType":"YulIdentifier","src":"2527:3:15"}],"functionName":{"name":"abi_encode_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr","nodeType":"YulIdentifier","src":"2427:91:15"},"nodeType":"YulFunctionCall","src":"2427:104:15"},"nodeType":"YulExpressionStatement","src":"2427:104:15"},{"nodeType":"YulAssignment","src":"2540:28:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2558:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2563:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2554:3:15"},"nodeType":"YulFunctionCall","src":"2554:14:15"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2540:10:15"}]}]},"name":"abi_encodeUpdatedPos_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2390:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2398:3:15","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2406:10:15","type":""}],"src":"2279:295:15"},{"body":{"nodeType":"YulBlock","src":"2684:38:15","statements":[{"nodeType":"YulAssignment","src":"2694:22:15","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2706:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"2711:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2702:3:15"},"nodeType":"YulFunctionCall","src":"2702:14:15"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"2694:4:15"}]}]},"name":"array_nextElement_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"2671:3:15","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"2679:4:15","type":""}],"src":"2580:142:15"},{"body":{"nodeType":"YulBlock","src":"3008:782:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3018:97:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3109:5:15"}],"functionName":{"name":"array_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3032:76:15"},"nodeType":"YulFunctionCall","src":"3032:83:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3022:6:15","type":""}]},{"nodeType":"YulAssignment","src":"3124:122:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3234:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"3239:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3131:102:15"},"nodeType":"YulFunctionCall","src":"3131:115:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3124:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"3255:100:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3349:5:15"}],"functionName":{"name":"array_dataslot_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3270:78:15"},"nodeType":"YulFunctionCall","src":"3270:85:15"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"3259:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3364:21:15","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"3378:7:15"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3368:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3454:311:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3468:34:15","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3495:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3489:5:15"},"nodeType":"YulFunctionCall","src":"3489:13:15"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"3472:13:15","type":""}]},{"nodeType":"YulAssignment","src":"3515:128:15","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"3624:13:15"},{"name":"pos","nodeType":"YulIdentifier","src":"3639:3:15"}],"functionName":{"name":"abi_encodeUpdatedPos_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr","nodeType":"YulIdentifier","src":"3522:101:15"},"nodeType":"YulFunctionCall","src":"3522:121:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3515:3:15"}]},{"nodeType":"YulAssignment","src":"3656:99:15","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3748:6:15"}],"functionName":{"name":"array_nextElement_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3666:81:15"},"nodeType":"YulFunctionCall","src":"3666:89:15"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3656:6:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3416:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"3419:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3413:2:15"},"nodeType":"YulFunctionCall","src":"3413:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3427:18:15","statements":[{"nodeType":"YulAssignment","src":"3429:14:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3438:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"3441:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3434:3:15"},"nodeType":"YulFunctionCall","src":"3434:9:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"3398:14:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3400:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"3409:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3404:1:15","type":""}]}]},"src":"3394:371:15"},{"nodeType":"YulAssignment","src":"3774:10:15","value":{"name":"pos","nodeType":"YulIdentifier","src":"3781:3:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3774:3:15"}]}]},"name":"abi_encode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2987:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2994:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3003:3:15","type":""}],"src":"2826:964:15"},{"body":{"nodeType":"YulBlock","src":"4002:283:15","statements":[{"nodeType":"YulAssignment","src":"4012:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4024:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4035:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4020:3:15"},"nodeType":"YulFunctionCall","src":"4020:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4012:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4059:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4070:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4055:3:15"},"nodeType":"YulFunctionCall","src":"4055:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4078:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4084:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4074:3:15"},"nodeType":"YulFunctionCall","src":"4074:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4048:6:15"},"nodeType":"YulFunctionCall","src":"4048:47:15"},"nodeType":"YulExpressionStatement","src":"4048:47:15"},{"nodeType":"YulAssignment","src":"4104:174:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4264:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"4273:4:15"}],"functionName":{"name":"abi_encode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4112:151:15"},"nodeType":"YulFunctionCall","src":"4112:166:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4104:4:15"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3974:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3986:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3997:4:15","type":""}],"src":"3796:489:15"},{"body":{"nodeType":"YulBlock","src":"4380:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4397:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4400:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4390:6:15"},"nodeType":"YulFunctionCall","src":"4390:12:15"},"nodeType":"YulExpressionStatement","src":"4390:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"4291:117:15"},{"body":{"nodeType":"YulBlock","src":"4503:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4520:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4523:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4513:6:15"},"nodeType":"YulFunctionCall","src":"4513:12:15"},"nodeType":"YulExpressionStatement","src":"4513:12:15"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"4414:117:15"},{"body":{"nodeType":"YulBlock","src":"4626:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4643:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4646:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4636:6:15"},"nodeType":"YulFunctionCall","src":"4636:12:15"},"nodeType":"YulExpressionStatement","src":"4636:12:15"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"4537:117:15"},{"body":{"nodeType":"YulBlock","src":"4767:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"4816:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"4818:77:15"},"nodeType":"YulFunctionCall","src":"4818:79:15"},"nodeType":"YulExpressionStatement","src":"4818:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4795:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4803:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4791:3:15"},"nodeType":"YulFunctionCall","src":"4791:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"4810:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4787:3:15"},"nodeType":"YulFunctionCall","src":"4787:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4780:6:15"},"nodeType":"YulFunctionCall","src":"4780:35:15"},"nodeType":"YulIf","src":"4777:122:15"},{"nodeType":"YulAssignment","src":"4908:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4931:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4918:12:15"},"nodeType":"YulFunctionCall","src":"4918:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4908:6:15"}]},{"body":{"nodeType":"YulBlock","src":"4981:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"4983:77:15"},"nodeType":"YulFunctionCall","src":"4983:79:15"},"nodeType":"YulExpressionStatement","src":"4983:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4953:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4961:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4950:2:15"},"nodeType":"YulFunctionCall","src":"4950:30:15"},"nodeType":"YulIf","src":"4947:117:15"},{"nodeType":"YulAssignment","src":"5073:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5089:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"5097:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5085:3:15"},"nodeType":"YulFunctionCall","src":"5085:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5073:8:15"}]},{"body":{"nodeType":"YulBlock","src":"5156:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"5158:77:15"},"nodeType":"YulFunctionCall","src":"5158:79:15"},"nodeType":"YulExpressionStatement","src":"5158:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5121:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5135:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"5143:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5131:3:15"},"nodeType":"YulFunctionCall","src":"5131:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5117:3:15"},"nodeType":"YulFunctionCall","src":"5117:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"5151:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5114:2:15"},"nodeType":"YulFunctionCall","src":"5114:41:15"},"nodeType":"YulIf","src":"5111:128:15"}]},"name":"abi_decode_t_array$_t_address_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4734:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"4742:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"4750:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"4760:6:15","type":""}],"src":"4677:568:15"},{"body":{"nodeType":"YulBlock","src":"5296:81:15","statements":[{"nodeType":"YulAssignment","src":"5306:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5321:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5328:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5317:3:15"},"nodeType":"YulFunctionCall","src":"5317:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5306:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5278:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5288:7:15","type":""}],"src":"5251:126:15"},{"body":{"nodeType":"YulBlock","src":"5428:51:15","statements":[{"nodeType":"YulAssignment","src":"5438:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5467:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5449:17:15"},"nodeType":"YulFunctionCall","src":"5449:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5438:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5410:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5420:7:15","type":""}],"src":"5383:96:15"},{"body":{"nodeType":"YulBlock","src":"5528:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"5585:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5594:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5597:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5587:6:15"},"nodeType":"YulFunctionCall","src":"5587:12:15"},"nodeType":"YulExpressionStatement","src":"5587:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5551:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5576:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5558:17:15"},"nodeType":"YulFunctionCall","src":"5558:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5548:2:15"},"nodeType":"YulFunctionCall","src":"5548:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5541:6:15"},"nodeType":"YulFunctionCall","src":"5541:43:15"},"nodeType":"YulIf","src":"5538:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5521:5:15","type":""}],"src":"5485:122:15"},{"body":{"nodeType":"YulBlock","src":"5665:87:15","statements":[{"nodeType":"YulAssignment","src":"5675:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5697:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5684:12:15"},"nodeType":"YulFunctionCall","src":"5684:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5675:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5740:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5713:26:15"},"nodeType":"YulFunctionCall","src":"5713:33:15"},"nodeType":"YulExpressionStatement","src":"5713:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5643:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5651:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5659:5:15","type":""}],"src":"5613:139:15"},{"body":{"nodeType":"YulBlock","src":"5802:57:15","statements":[{"nodeType":"YulAssignment","src":"5812:41:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5827:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5834:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5823:3:15"},"nodeType":"YulFunctionCall","src":"5823:30:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5812:7:15"}]}]},"name":"cleanup_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5784:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5794:7:15","type":""}],"src":"5758:101:15"},{"body":{"nodeType":"YulBlock","src":"5907:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"5963:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5972:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5975:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5965:6:15"},"nodeType":"YulFunctionCall","src":"5965:12:15"},"nodeType":"YulExpressionStatement","src":"5965:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5930:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5954:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"5937:16:15"},"nodeType":"YulFunctionCall","src":"5937:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5927:2:15"},"nodeType":"YulFunctionCall","src":"5927:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5920:6:15"},"nodeType":"YulFunctionCall","src":"5920:42:15"},"nodeType":"YulIf","src":"5917:62:15"}]},"name":"validator_revert_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5900:5:15","type":""}],"src":"5865:120:15"},{"body":{"nodeType":"YulBlock","src":"6042:86:15","statements":[{"nodeType":"YulAssignment","src":"6052:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6074:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6061:12:15"},"nodeType":"YulFunctionCall","src":"6061:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6052:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6116:5:15"}],"functionName":{"name":"validator_revert_t_uint64","nodeType":"YulIdentifier","src":"6090:25:15"},"nodeType":"YulFunctionCall","src":"6090:32:15"},"nodeType":"YulExpressionStatement","src":"6090:32:15"}]},"name":"abi_decode_t_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6020:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6028:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6036:5:15","type":""}],"src":"5991:137:15"},{"body":{"nodeType":"YulBlock","src":"6176:48:15","statements":[{"nodeType":"YulAssignment","src":"6186:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6211:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6204:6:15"},"nodeType":"YulFunctionCall","src":"6204:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6197:6:15"},"nodeType":"YulFunctionCall","src":"6197:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6186:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6158:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6168:7:15","type":""}],"src":"6134:90:15"},{"body":{"nodeType":"YulBlock","src":"6270:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"6324:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6333:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6336:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6326:6:15"},"nodeType":"YulFunctionCall","src":"6326:12:15"},"nodeType":"YulExpressionStatement","src":"6326:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6293:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6315:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6300:14:15"},"nodeType":"YulFunctionCall","src":"6300:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6290:2:15"},"nodeType":"YulFunctionCall","src":"6290:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6283:6:15"},"nodeType":"YulFunctionCall","src":"6283:40:15"},"nodeType":"YulIf","src":"6280:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6263:5:15","type":""}],"src":"6230:116:15"},{"body":{"nodeType":"YulBlock","src":"6401:84:15","statements":[{"nodeType":"YulAssignment","src":"6411:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6433:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6420:12:15"},"nodeType":"YulFunctionCall","src":"6420:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6411:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6473:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6449:23:15"},"nodeType":"YulFunctionCall","src":"6449:30:15"},"nodeType":"YulExpressionStatement","src":"6449:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6379:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6387:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6395:5:15","type":""}],"src":"6352:133:15"},{"body":{"nodeType":"YulBlock","src":"6690:1226:15","statements":[{"body":{"nodeType":"YulBlock","src":"6737:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6739:77:15"},"nodeType":"YulFunctionCall","src":"6739:79:15"},"nodeType":"YulExpressionStatement","src":"6739:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6711:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6720:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6707:3:15"},"nodeType":"YulFunctionCall","src":"6707:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6732:3:15","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6703:3:15"},"nodeType":"YulFunctionCall","src":"6703:33:15"},"nodeType":"YulIf","src":"6700:120:15"},{"nodeType":"YulBlock","src":"6830:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6845:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6859:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6849:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6874:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6909:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6920:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6905:3:15"},"nodeType":"YulFunctionCall","src":"6905:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6929:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"6884:20:15"},"nodeType":"YulFunctionCall","src":"6884:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6874:6:15"}]}]},{"nodeType":"YulBlock","src":"6957:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6972:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6986:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6976:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7002:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7037:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7048:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7033:3:15"},"nodeType":"YulFunctionCall","src":"7033:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7057:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7012:20:15"},"nodeType":"YulFunctionCall","src":"7012:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7002:6:15"}]}]},{"nodeType":"YulBlock","src":"7085:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7100:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7114:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7104:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7130:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7165:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7176:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7161:3:15"},"nodeType":"YulFunctionCall","src":"7161:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7185:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"7140:20:15"},"nodeType":"YulFunctionCall","src":"7140:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7130:6:15"}]}]},{"nodeType":"YulBlock","src":"7213:313:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7228:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7259:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"7270:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7255:3:15"},"nodeType":"YulFunctionCall","src":"7255:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7242:12:15"},"nodeType":"YulFunctionCall","src":"7242:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7232:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"7321:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"7323:77:15"},"nodeType":"YulFunctionCall","src":"7323:79:15"},"nodeType":"YulExpressionStatement","src":"7323:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7293:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7301:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7290:2:15"},"nodeType":"YulFunctionCall","src":"7290:30:15"},"nodeType":"YulIf","src":"7287:117:15"},{"nodeType":"YulAssignment","src":"7418:98:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7488:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7499:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7484:3:15"},"nodeType":"YulFunctionCall","src":"7484:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7508:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_calldata_ptr","nodeType":"YulIdentifier","src":"7436:47:15"},"nodeType":"YulFunctionCall","src":"7436:80:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7418:6:15"},{"name":"value4","nodeType":"YulIdentifier","src":"7426:6:15"}]}]},{"nodeType":"YulBlock","src":"7536:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7551:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7565:3:15","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7555:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7582:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7617:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7628:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7613:3:15"},"nodeType":"YulFunctionCall","src":"7613:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7637:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7592:20:15"},"nodeType":"YulFunctionCall","src":"7592:53:15"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"7582:6:15"}]}]},{"nodeType":"YulBlock","src":"7665:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7680:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7694:3:15","type":"","value":"160"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7684:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7711:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7745:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7756:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7741:3:15"},"nodeType":"YulFunctionCall","src":"7741:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7765:7:15"}],"functionName":{"name":"abi_decode_t_uint64","nodeType":"YulIdentifier","src":"7721:19:15"},"nodeType":"YulFunctionCall","src":"7721:52:15"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"7711:6:15"}]}]},{"nodeType":"YulBlock","src":"7793:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7808:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7822:3:15","type":"","value":"192"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7812:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7839:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7871:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7882:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7867:3:15"},"nodeType":"YulFunctionCall","src":"7867:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7891:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"7849:17:15"},"nodeType":"YulFunctionCall","src":"7849:50:15"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"7839:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_array$_t_address_$dyn_calldata_ptrt_addresst_uint64t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6604:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6615:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6627:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6635:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6643:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6651:6:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6659:6:15","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6667:6:15","type":""},{"name":"value6","nodeType":"YulTypedName","src":"6675:6:15","type":""},{"name":"value7","nodeType":"YulTypedName","src":"6683:6:15","type":""}],"src":"6491:1425:15"},{"body":{"nodeType":"YulBlock","src":"7987:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8004:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8027:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"8009:17:15"},"nodeType":"YulFunctionCall","src":"8009:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7997:6:15"},"nodeType":"YulFunctionCall","src":"7997:37:15"},"nodeType":"YulExpressionStatement","src":"7997:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7975:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7982:3:15","type":""}],"src":"7922:118:15"},{"body":{"nodeType":"YulBlock","src":"8111:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8128:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8151:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"8133:17:15"},"nodeType":"YulFunctionCall","src":"8133:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8121:6:15"},"nodeType":"YulFunctionCall","src":"8121:37:15"},"nodeType":"YulExpressionStatement","src":"8121:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8099:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8106:3:15","type":""}],"src":"8046:118:15"},{"body":{"nodeType":"YulBlock","src":"8296:206:15","statements":[{"nodeType":"YulAssignment","src":"8306:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8318:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8329:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8314:3:15"},"nodeType":"YulFunctionCall","src":"8314:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8306:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8386:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8399:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8410:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8395:3:15"},"nodeType":"YulFunctionCall","src":"8395:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"8342:43:15"},"nodeType":"YulFunctionCall","src":"8342:71:15"},"nodeType":"YulExpressionStatement","src":"8342:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8467:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8480:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8491:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8476:3:15"},"nodeType":"YulFunctionCall","src":"8476:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8423:43:15"},"nodeType":"YulFunctionCall","src":"8423:72:15"},"nodeType":"YulExpressionStatement","src":"8423:72:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8260:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8272:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8280:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8291:4:15","type":""}],"src":"8170:332:15"},{"body":{"nodeType":"YulBlock","src":"8553:32:15","statements":[{"nodeType":"YulAssignment","src":"8563:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"8574:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8563:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8535:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8545:7:15","type":""}],"src":"8508:77:15"},{"body":{"nodeType":"YulBlock","src":"8634:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"8691:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8700:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8703:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8693:6:15"},"nodeType":"YulFunctionCall","src":"8693:12:15"},"nodeType":"YulExpressionStatement","src":"8693:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8657:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8682:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8664:17:15"},"nodeType":"YulFunctionCall","src":"8664:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8654:2:15"},"nodeType":"YulFunctionCall","src":"8654:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8647:6:15"},"nodeType":"YulFunctionCall","src":"8647:43:15"},"nodeType":"YulIf","src":"8644:63:15"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8627:5:15","type":""}],"src":"8591:122:15"},{"body":{"nodeType":"YulBlock","src":"8771:87:15","statements":[{"nodeType":"YulAssignment","src":"8781:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8803:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8790:12:15"},"nodeType":"YulFunctionCall","src":"8790:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8781:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8846:5:15"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"8819:26:15"},"nodeType":"YulFunctionCall","src":"8819:33:15"},"nodeType":"YulExpressionStatement","src":"8819:33:15"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8749:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"8757:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"8765:5:15","type":""}],"src":"8719:139:15"},{"body":{"nodeType":"YulBlock","src":"8908:65:15","statements":[{"nodeType":"YulAssignment","src":"8918:49:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8933:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"8940:26:15","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8929:3:15"},"nodeType":"YulFunctionCall","src":"8929:38:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8918:7:15"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8890:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8900:7:15","type":""}],"src":"8864:109:15"},{"body":{"nodeType":"YulBlock","src":"9021:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"9077:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9086:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9089:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9079:6:15"},"nodeType":"YulFunctionCall","src":"9079:12:15"},"nodeType":"YulExpressionStatement","src":"9079:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9044:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9068:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"9051:16:15"},"nodeType":"YulFunctionCall","src":"9051:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9041:2:15"},"nodeType":"YulFunctionCall","src":"9041:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9034:6:15"},"nodeType":"YulFunctionCall","src":"9034:42:15"},"nodeType":"YulIf","src":"9031:62:15"}]},"name":"validator_revert_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9014:5:15","type":""}],"src":"8979:120:15"},{"body":{"nodeType":"YulBlock","src":"9156:86:15","statements":[{"nodeType":"YulAssignment","src":"9166:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9188:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9175:12:15"},"nodeType":"YulFunctionCall","src":"9175:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"9166:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9230:5:15"}],"functionName":{"name":"validator_revert_t_uint96","nodeType":"YulIdentifier","src":"9204:25:15"},"nodeType":"YulFunctionCall","src":"9204:32:15"},"nodeType":"YulExpressionStatement","src":"9204:32:15"}]},"name":"abi_decode_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9134:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"9142:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"9150:5:15","type":""}],"src":"9105:137:15"},{"body":{"nodeType":"YulBlock","src":"9337:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"9386:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"9388:77:15"},"nodeType":"YulFunctionCall","src":"9388:79:15"},"nodeType":"YulExpressionStatement","src":"9388:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9365:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9373:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9361:3:15"},"nodeType":"YulFunctionCall","src":"9361:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"9380:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9357:3:15"},"nodeType":"YulFunctionCall","src":"9357:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9350:6:15"},"nodeType":"YulFunctionCall","src":"9350:35:15"},"nodeType":"YulIf","src":"9347:122:15"},{"nodeType":"YulAssignment","src":"9478:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9501:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9488:12:15"},"nodeType":"YulFunctionCall","src":"9488:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"9478:6:15"}]},{"body":{"nodeType":"YulBlock","src":"9551:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"9553:77:15"},"nodeType":"YulFunctionCall","src":"9553:79:15"},"nodeType":"YulExpressionStatement","src":"9553:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9523:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9531:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9520:2:15"},"nodeType":"YulFunctionCall","src":"9520:30:15"},"nodeType":"YulIf","src":"9517:117:15"},{"nodeType":"YulAssignment","src":"9643:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9659:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9667:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9655:3:15"},"nodeType":"YulFunctionCall","src":"9655:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"9643:8:15"}]},{"body":{"nodeType":"YulBlock","src":"9726:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"9728:77:15"},"nodeType":"YulFunctionCall","src":"9728:79:15"},"nodeType":"YulExpressionStatement","src":"9728:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"9691:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9705:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9713:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"9701:3:15"},"nodeType":"YulFunctionCall","src":"9701:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9687:3:15"},"nodeType":"YulFunctionCall","src":"9687:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"9721:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9684:2:15"},"nodeType":"YulFunctionCall","src":"9684:41:15"},"nodeType":"YulIf","src":"9681:128:15"}]},"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9304:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"9312:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"9320:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"9330:6:15","type":""}],"src":"9262:553:15"},{"body":{"nodeType":"YulBlock","src":"10042:1472:15","statements":[{"body":{"nodeType":"YulBlock","src":"10089:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10091:77:15"},"nodeType":"YulFunctionCall","src":"10091:79:15"},"nodeType":"YulExpressionStatement","src":"10091:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10063:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"10072:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10059:3:15"},"nodeType":"YulFunctionCall","src":"10059:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"10084:3:15","type":"","value":"288"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10055:3:15"},"nodeType":"YulFunctionCall","src":"10055:33:15"},"nodeType":"YulIf","src":"10052:120:15"},{"nodeType":"YulBlock","src":"10182:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10197:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10211:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10201:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10226:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10261:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10272:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10257:3:15"},"nodeType":"YulFunctionCall","src":"10257:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10281:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10236:20:15"},"nodeType":"YulFunctionCall","src":"10236:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10226:6:15"}]}]},{"nodeType":"YulBlock","src":"10309:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10324:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10338:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10328:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10354:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10389:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10400:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10385:3:15"},"nodeType":"YulFunctionCall","src":"10385:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10409:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"10364:20:15"},"nodeType":"YulFunctionCall","src":"10364:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10354:6:15"}]}]},{"nodeType":"YulBlock","src":"10437:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10452:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10466:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10456:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10482:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10517:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10528:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10513:3:15"},"nodeType":"YulFunctionCall","src":"10513:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10537:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"10492:20:15"},"nodeType":"YulFunctionCall","src":"10492:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"10482:6:15"}]}]},{"nodeType":"YulBlock","src":"10565:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10580:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10594:2:15","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10584:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10610:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10645:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10656:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10641:3:15"},"nodeType":"YulFunctionCall","src":"10641:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10665:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"10620:20:15"},"nodeType":"YulFunctionCall","src":"10620:53:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"10610:6:15"}]}]},{"nodeType":"YulBlock","src":"10693:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10708:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10722:3:15","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10712:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10739:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10773:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10784:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10769:3:15"},"nodeType":"YulFunctionCall","src":"10769:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10793:7:15"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"10749:19:15"},"nodeType":"YulFunctionCall","src":"10749:52:15"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"10739:6:15"}]}]},{"nodeType":"YulBlock","src":"10821:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10836:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10850:3:15","type":"","value":"160"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10840:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10867:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10902:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10913:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10898:3:15"},"nodeType":"YulFunctionCall","src":"10898:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10922:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10877:20:15"},"nodeType":"YulFunctionCall","src":"10877:53:15"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"10867:6:15"}]}]},{"nodeType":"YulBlock","src":"10950:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10965:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10979:3:15","type":"","value":"192"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10969:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10996:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11031:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"11042:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11027:3:15"},"nodeType":"YulFunctionCall","src":"11027:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11051:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"11006:20:15"},"nodeType":"YulFunctionCall","src":"11006:53:15"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"10996:6:15"}]}]},{"nodeType":"YulBlock","src":"11079:119:15","statements":[{"nodeType":"YulVariableDeclaration","src":"11094:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"11108:3:15","type":"","value":"224"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11098:6:15","type":""}]},{"nodeType":"YulAssignment","src":"11125:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11160:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"11171:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11156:3:15"},"nodeType":"YulFunctionCall","src":"11156:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11180:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"11135:20:15"},"nodeType":"YulFunctionCall","src":"11135:53:15"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"11125:6:15"}]}]},{"nodeType":"YulBlock","src":"11208:299:15","statements":[{"nodeType":"YulVariableDeclaration","src":"11223:47:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11254:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11265:3:15","type":"","value":"256"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11250:3:15"},"nodeType":"YulFunctionCall","src":"11250:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11237:12:15"},"nodeType":"YulFunctionCall","src":"11237:33:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11227:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"11317:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"11319:77:15"},"nodeType":"YulFunctionCall","src":"11319:79:15"},"nodeType":"YulExpressionStatement","src":"11319:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11289:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"11297:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11286:2:15"},"nodeType":"YulFunctionCall","src":"11286:30:15"},"nodeType":"YulIf","src":"11283:117:15"},{"nodeType":"YulAssignment","src":"11414:83:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11469:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"11480:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11465:3:15"},"nodeType":"YulFunctionCall","src":"11465:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11489:7:15"}],"functionName":{"name":"abi_decode_t_string_calldata_ptr","nodeType":"YulIdentifier","src":"11432:32:15"},"nodeType":"YulFunctionCall","src":"11432:65:15"},"variableNames":[{"name":"value8","nodeType":"YulIdentifier","src":"11414:6:15"},{"name":"value9","nodeType":"YulIdentifier","src":"11422:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9940:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9951:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9963:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9971:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9979:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9987:6:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"9995:6:15","type":""},{"name":"value5","nodeType":"YulTypedName","src":"10003:6:15","type":""},{"name":"value6","nodeType":"YulTypedName","src":"10011:6:15","type":""},{"name":"value7","nodeType":"YulTypedName","src":"10019:6:15","type":""},{"name":"value8","nodeType":"YulTypedName","src":"10027:6:15","type":""},{"name":"value9","nodeType":"YulTypedName","src":"10035:6:15","type":""}],"src":"9821:1693:15"},{"body":{"nodeType":"YulBlock","src":"11618:124:15","statements":[{"nodeType":"YulAssignment","src":"11628:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11640:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11651:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11636:3:15"},"nodeType":"YulFunctionCall","src":"11636:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11628:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11708:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11721:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11732:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11717:3:15"},"nodeType":"YulFunctionCall","src":"11717:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"11664:43:15"},"nodeType":"YulFunctionCall","src":"11664:71:15"},"nodeType":"YulExpressionStatement","src":"11664:71:15"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11590:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11602:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11613:4:15","type":""}],"src":"11520:222:15"},{"body":{"nodeType":"YulBlock","src":"11796:54:15","statements":[{"nodeType":"YulAssignment","src":"11806:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11824:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"11831:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11820:3:15"},"nodeType":"YulFunctionCall","src":"11820:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11840:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11836:3:15"},"nodeType":"YulFunctionCall","src":"11836:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11816:3:15"},"nodeType":"YulFunctionCall","src":"11816:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"11806:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11779:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"11789:6:15","type":""}],"src":"11748:102:15"},{"body":{"nodeType":"YulBlock","src":"11884:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11901:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11904:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11894:6:15"},"nodeType":"YulFunctionCall","src":"11894:88:15"},"nodeType":"YulExpressionStatement","src":"11894:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11998:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12001:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11991:6:15"},"nodeType":"YulFunctionCall","src":"11991:15:15"},"nodeType":"YulExpressionStatement","src":"11991:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12022:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12025:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12015:6:15"},"nodeType":"YulFunctionCall","src":"12015:15:15"},"nodeType":"YulExpressionStatement","src":"12015:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"11856:180:15"},{"body":{"nodeType":"YulBlock","src":"12085:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12095:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12117:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"12147:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"12125:21:15"},"nodeType":"YulFunctionCall","src":"12125:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12113:3:15"},"nodeType":"YulFunctionCall","src":"12113:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"12099:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"12264:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"12266:16:15"},"nodeType":"YulFunctionCall","src":"12266:18:15"},"nodeType":"YulExpressionStatement","src":"12266:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"12207:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"12219:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12204:2:15"},"nodeType":"YulFunctionCall","src":"12204:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"12243:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"12255:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12240:2:15"},"nodeType":"YulFunctionCall","src":"12240:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"12201:2:15"},"nodeType":"YulFunctionCall","src":"12201:62:15"},"nodeType":"YulIf","src":"12198:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12302:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"12306:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12295:6:15"},"nodeType":"YulFunctionCall","src":"12295:22:15"},"nodeType":"YulExpressionStatement","src":"12295:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12071:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"12079:4:15","type":""}],"src":"12042:281:15"},{"body":{"nodeType":"YulBlock","src":"12370:88:15","statements":[{"nodeType":"YulAssignment","src":"12380:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"12390:18:15"},"nodeType":"YulFunctionCall","src":"12390:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12380:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12439:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"12447:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"12419:19:15"},"nodeType":"YulFunctionCall","src":"12419:33:15"},"nodeType":"YulExpressionStatement","src":"12419:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"12354:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"12363:6:15","type":""}],"src":"12329:129:15"},{"body":{"nodeType":"YulBlock","src":"12575:229:15","statements":[{"body":{"nodeType":"YulBlock","src":"12680:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"12682:16:15"},"nodeType":"YulFunctionCall","src":"12682:18:15"},"nodeType":"YulExpressionStatement","src":"12682:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12652:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12660:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12649:2:15"},"nodeType":"YulFunctionCall","src":"12649:30:15"},"nodeType":"YulIf","src":"12646:56:15"},{"nodeType":"YulAssignment","src":"12712:25:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12724:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12732:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12720:3:15"},"nodeType":"YulFunctionCall","src":"12720:17:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"12712:4:15"}]},{"nodeType":"YulAssignment","src":"12774:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"12786:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12792:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12782:3:15"},"nodeType":"YulFunctionCall","src":"12782:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"12774:4:15"}]}]},"name":"array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"12559:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"12570:4:15","type":""}],"src":"12464:340:15"},{"body":{"nodeType":"YulBlock","src":"12899:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12916:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12919:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12909:6:15"},"nodeType":"YulFunctionCall","src":"12909:12:15"},"nodeType":"YulExpressionStatement","src":"12909:12:15"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"12810:117:15"},{"body":{"nodeType":"YulBlock","src":"13022:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13039:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13042:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13032:6:15"},"nodeType":"YulFunctionCall","src":"13032:12:15"},"nodeType":"YulExpressionStatement","src":"13032:12:15"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"12933:117:15"},{"body":{"nodeType":"YulBlock","src":"13189:494:15","statements":[{"body":{"nodeType":"YulBlock","src":"13233:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"13235:77:15"},"nodeType":"YulFunctionCall","src":"13235:79:15"},"nodeType":"YulExpressionStatement","src":"13235:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"13210:3:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"13215:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13206:3:15"},"nodeType":"YulFunctionCall","src":"13206:19:15"},{"kind":"number","nodeType":"YulLiteral","src":"13227:4:15","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13202:3:15"},"nodeType":"YulFunctionCall","src":"13202:30:15"},"nodeType":"YulIf","src":"13199:117:15"},{"nodeType":"YulAssignment","src":"13325:30:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13350:4:15","type":"","value":"0x40"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"13334:15:15"},"nodeType":"YulFunctionCall","src":"13334:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"13325:5:15"}]},{"nodeType":"YulBlock","src":"13365:150:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13400:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13414:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13404:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13440:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"13447:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13436:3:15"},"nodeType":"YulFunctionCall","src":"13436:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13479:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13490:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13475:3:15"},"nodeType":"YulFunctionCall","src":"13475:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"13499:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"13454:20:15"},"nodeType":"YulFunctionCall","src":"13454:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13429:6:15"},"nodeType":"YulFunctionCall","src":"13429:75:15"},"nodeType":"YulExpressionStatement","src":"13429:75:15"}]},{"nodeType":"YulBlock","src":"13525:151:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13560:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13574:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13564:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13601:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"13608:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13597:3:15"},"nodeType":"YulFunctionCall","src":"13597:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13640:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13651:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13636:3:15"},"nodeType":"YulFunctionCall","src":"13636:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"13660:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"13615:20:15"},"nodeType":"YulFunctionCall","src":"13615:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13590:6:15"},"nodeType":"YulFunctionCall","src":"13590:75:15"},"nodeType":"YulExpressionStatement","src":"13590:75:15"}]}]},"name":"abi_decode_t_struct$_Institution_$3609_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13164:9:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"13175:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"13183:5:15","type":""}],"src":"13105:578:15"},{"body":{"nodeType":"YulBlock","src":"13871:666:15","statements":[{"nodeType":"YulAssignment","src":"13881:119:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13992:6:15"}],"functionName":{"name":"array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13906:85:15"},"nodeType":"YulFunctionCall","src":"13906:93:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"13890:15:15"},"nodeType":"YulFunctionCall","src":"13890:110:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"13881:5:15"}]},{"nodeType":"YulVariableDeclaration","src":"14009:16:15","value":{"name":"array","nodeType":"YulIdentifier","src":"14020:5:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"14013:3:15","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14042:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"14049:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14035:6:15"},"nodeType":"YulFunctionCall","src":"14035:21:15"},"nodeType":"YulExpressionStatement","src":"14035:21:15"},{"nodeType":"YulAssignment","src":"14065:23:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14076:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14083:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14072:3:15"},"nodeType":"YulFunctionCall","src":"14072:16:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"14065:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"14098:44:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14116:6:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14128:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14136:4:15","type":"","value":"0x40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"14124:3:15"},"nodeType":"YulFunctionCall","src":"14124:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14112:3:15"},"nodeType":"YulFunctionCall","src":"14112:30:15"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"14102:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"14170:103:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"14184:77:15"},"nodeType":"YulFunctionCall","src":"14184:79:15"},"nodeType":"YulExpressionStatement","src":"14184:79:15"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"14157:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"14165:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14154:2:15"},"nodeType":"YulFunctionCall","src":"14154:15:15"},"nodeType":"YulIf","src":"14151:122:15"},{"body":{"nodeType":"YulBlock","src":"14358:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14373:21:15","value":{"name":"src","nodeType":"YulIdentifier","src":"14391:3:15"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"14377:10:15","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"14415:3:15"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"14470:10:15"},{"name":"end","nodeType":"YulIdentifier","src":"14482:3:15"}],"functionName":{"name":"abi_decode_t_struct$_Institution_$3609_memory_ptr","nodeType":"YulIdentifier","src":"14420:49:15"},"nodeType":"YulFunctionCall","src":"14420:66:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14408:6:15"},"nodeType":"YulFunctionCall","src":"14408:79:15"},"nodeType":"YulExpressionStatement","src":"14408:79:15"},{"nodeType":"YulAssignment","src":"14500:21:15","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"14511:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14516:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14507:3:15"},"nodeType":"YulFunctionCall","src":"14507:14:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"14500:3:15"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"14311:3:15"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"14316:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14308:2:15"},"nodeType":"YulFunctionCall","src":"14308:15:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"14324:25:15","statements":[{"nodeType":"YulAssignment","src":"14326:21:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"14337:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14342:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14333:3:15"},"nodeType":"YulFunctionCall","src":"14333:14:15"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"14326:3:15"}]}]},"pre":{"nodeType":"YulBlock","src":"14286:21:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14288:17:15","value":{"name":"offset","nodeType":"YulIdentifier","src":"14299:6:15"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"14292:3:15","type":""}]}]},"src":"14282:249:15"}]},"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"13841:6:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"13849:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"13857:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"13865:5:15","type":""}],"src":"13740:797:15"},{"body":{"nodeType":"YulBlock","src":"14700:322:15","statements":[{"body":{"nodeType":"YulBlock","src":"14749:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"14751:77:15"},"nodeType":"YulFunctionCall","src":"14751:79:15"},"nodeType":"YulExpressionStatement","src":"14751:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14728:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14736:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14724:3:15"},"nodeType":"YulFunctionCall","src":"14724:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"14743:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14720:3:15"},"nodeType":"YulFunctionCall","src":"14720:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14713:6:15"},"nodeType":"YulFunctionCall","src":"14713:35:15"},"nodeType":"YulIf","src":"14710:122:15"},{"nodeType":"YulVariableDeclaration","src":"14841:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14868:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14855:12:15"},"nodeType":"YulFunctionCall","src":"14855:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14845:6:15","type":""}]},{"nodeType":"YulAssignment","src":"14884:132:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14989:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14997:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14985:3:15"},"nodeType":"YulFunctionCall","src":"14985:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"15004:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"15012:3:15"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14893:91:15"},"nodeType":"YulFunctionCall","src":"14893:123:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"14884:5:15"}]}]},"name":"abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"14678:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"14686:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"14694:5:15","type":""}],"src":"14594:428:15"},{"body":{"nodeType":"YulBlock","src":"15165:605:15","statements":[{"body":{"nodeType":"YulBlock","src":"15211:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"15213:77:15"},"nodeType":"YulFunctionCall","src":"15213:79:15"},"nodeType":"YulExpressionStatement","src":"15213:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"15186:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"15195:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15182:3:15"},"nodeType":"YulFunctionCall","src":"15182:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"15207:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"15178:3:15"},"nodeType":"YulFunctionCall","src":"15178:32:15"},"nodeType":"YulIf","src":"15175:119:15"},{"nodeType":"YulBlock","src":"15304:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15319:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15333:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15323:6:15","type":""}]},{"nodeType":"YulAssignment","src":"15348:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15383:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15394:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15379:3:15"},"nodeType":"YulFunctionCall","src":"15379:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15403:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"15358:20:15"},"nodeType":"YulFunctionCall","src":"15358:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"15348:6:15"}]}]},{"nodeType":"YulBlock","src":"15431:332:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15446:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15477:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"15488:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15473:3:15"},"nodeType":"YulFunctionCall","src":"15473:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"15460:12:15"},"nodeType":"YulFunctionCall","src":"15460:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15450:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"15539:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"15541:77:15"},"nodeType":"YulFunctionCall","src":"15541:79:15"},"nodeType":"YulExpressionStatement","src":"15541:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15511:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15519:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15508:2:15"},"nodeType":"YulFunctionCall","src":"15508:30:15"},"nodeType":"YulIf","src":"15505:117:15"},{"nodeType":"YulAssignment","src":"15636:117:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15725:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"15736:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15721:3:15"},"nodeType":"YulFunctionCall","src":"15721:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"15745:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"15646:74:15"},"nodeType":"YulFunctionCall","src":"15646:107:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"15636:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15127:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"15138:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"15150:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15158:6:15","type":""}],"src":"15028:742:15"},{"body":{"nodeType":"YulBlock","src":"15834:40:15","statements":[{"nodeType":"YulAssignment","src":"15845:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15861:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15855:5:15"},"nodeType":"YulFunctionCall","src":"15855:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"15845:6:15"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15817:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"15827:6:15","type":""}],"src":"15776:98:15"},{"body":{"nodeType":"YulBlock","src":"15975:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15992:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"15997:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15985:6:15"},"nodeType":"YulFunctionCall","src":"15985:19:15"},"nodeType":"YulExpressionStatement","src":"15985:19:15"},{"nodeType":"YulAssignment","src":"16013:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16032:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"16037:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16028:3:15"},"nodeType":"YulFunctionCall","src":"16028:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16013:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15947:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"15952:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"15963:11:15","type":""}],"src":"15880:168:15"},{"body":{"nodeType":"YulBlock","src":"16116:184:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16126:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16135:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16130:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16195:63:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"16220:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"16225:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16216:3:15"},"nodeType":"YulFunctionCall","src":"16216:11:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16239:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"16244:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16235:3:15"},"nodeType":"YulFunctionCall","src":"16235:11:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16229:5:15"},"nodeType":"YulFunctionCall","src":"16229:18:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16209:6:15"},"nodeType":"YulFunctionCall","src":"16209:39:15"},"nodeType":"YulExpressionStatement","src":"16209:39:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16156:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"16159:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16153:2:15"},"nodeType":"YulFunctionCall","src":"16153:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16167:19:15","statements":[{"nodeType":"YulAssignment","src":"16169:15:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16178:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"16181:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16174:3:15"},"nodeType":"YulFunctionCall","src":"16174:10:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16169:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"16149:3:15","statements":[]},"src":"16145:113:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"16278:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16283:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16274:3:15"},"nodeType":"YulFunctionCall","src":"16274:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"16292:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16267:6:15"},"nodeType":"YulFunctionCall","src":"16267:27:15"},"nodeType":"YulExpressionStatement","src":"16267:27:15"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"16098:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"16103:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"16108:6:15","type":""}],"src":"16054:246:15"},{"body":{"nodeType":"YulBlock","src":"16396:283:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16406:52:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16452:5:15"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"16420:31:15"},"nodeType":"YulFunctionCall","src":"16420:38:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16410:6:15","type":""}]},{"nodeType":"YulAssignment","src":"16467:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16532:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16537:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16474:57:15"},"nodeType":"YulFunctionCall","src":"16474:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16467:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16592:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"16599:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16588:3:15"},"nodeType":"YulFunctionCall","src":"16588:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"16606:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16611:6:15"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"16553:34:15"},"nodeType":"YulFunctionCall","src":"16553:65:15"},"nodeType":"YulExpressionStatement","src":"16553:65:15"},{"nodeType":"YulAssignment","src":"16627:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16638:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"16665:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"16643:21:15"},"nodeType":"YulFunctionCall","src":"16643:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16634:3:15"},"nodeType":"YulFunctionCall","src":"16634:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16627:3:15"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16377:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16384:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16392:3:15","type":""}],"src":"16306:373:15"},{"body":{"nodeType":"YulBlock","src":"16801:193:15","statements":[{"nodeType":"YulAssignment","src":"16811:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16823:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16834:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16819:3:15"},"nodeType":"YulFunctionCall","src":"16819:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16811:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16858:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16869:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16854:3:15"},"nodeType":"YulFunctionCall","src":"16854:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16877:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"16883:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16873:3:15"},"nodeType":"YulFunctionCall","src":"16873:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16847:6:15"},"nodeType":"YulFunctionCall","src":"16847:47:15"},"nodeType":"YulExpressionStatement","src":"16847:47:15"},{"nodeType":"YulAssignment","src":"16903:84:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16973:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"16982:4:15"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16911:61:15"},"nodeType":"YulFunctionCall","src":"16911:76:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16903:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16773:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16785:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16796:4:15","type":""}],"src":"16685:309:15"},{"body":{"nodeType":"YulBlock","src":"17066:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"17112:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"17114:77:15"},"nodeType":"YulFunctionCall","src":"17114:79:15"},"nodeType":"YulExpressionStatement","src":"17114:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"17087:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"17096:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17083:3:15"},"nodeType":"YulFunctionCall","src":"17083:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"17108:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"17079:3:15"},"nodeType":"YulFunctionCall","src":"17079:32:15"},"nodeType":"YulIf","src":"17076:119:15"},{"nodeType":"YulBlock","src":"17205:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"17220:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"17234:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"17224:6:15","type":""}]},{"nodeType":"YulAssignment","src":"17249:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17284:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"17295:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17280:3:15"},"nodeType":"YulFunctionCall","src":"17280:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"17304:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"17259:20:15"},"nodeType":"YulFunctionCall","src":"17259:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"17249:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17036:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"17047:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"17059:6:15","type":""}],"src":"17000:329:15"},{"body":{"nodeType":"YulBlock","src":"17394:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17411:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17431:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"17416:14:15"},"nodeType":"YulFunctionCall","src":"17416:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17404:6:15"},"nodeType":"YulFunctionCall","src":"17404:34:15"},"nodeType":"YulExpressionStatement","src":"17404:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17382:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17389:3:15","type":""}],"src":"17335:109:15"},{"body":{"nodeType":"YulBlock","src":"17542:118:15","statements":[{"nodeType":"YulAssignment","src":"17552:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17564:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17575:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17560:3:15"},"nodeType":"YulFunctionCall","src":"17560:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17552:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17626:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17639:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17650:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17635:3:15"},"nodeType":"YulFunctionCall","src":"17635:17:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"17588:37:15"},"nodeType":"YulFunctionCall","src":"17588:65:15"},"nodeType":"YulExpressionStatement","src":"17588:65:15"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17514:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17526:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17537:4:15","type":""}],"src":"17450:210:15"},{"body":{"nodeType":"YulBlock","src":"17721:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17738:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17761:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"17743:17:15"},"nodeType":"YulFunctionCall","src":"17743:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17731:6:15"},"nodeType":"YulFunctionCall","src":"17731:37:15"},"nodeType":"YulExpressionStatement","src":"17731:37:15"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17709:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17716:3:15","type":""}],"src":"17666:108:15"},{"body":{"nodeType":"YulBlock","src":"17835:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17852:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17875:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"17857:17:15"},"nodeType":"YulFunctionCall","src":"17857:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17845:6:15"},"nodeType":"YulFunctionCall","src":"17845:37:15"},"nodeType":"YulExpressionStatement","src":"17845:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17823:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17830:3:15","type":""}],"src":"17780:108:15"},{"body":{"nodeType":"YulBlock","src":"17947:52:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17964:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17986:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"17969:16:15"},"nodeType":"YulFunctionCall","src":"17969:23:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17957:6:15"},"nodeType":"YulFunctionCall","src":"17957:36:15"},"nodeType":"YulExpressionStatement","src":"17957:36:15"}]},"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17935:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17942:3:15","type":""}],"src":"17894:105:15"},{"body":{"nodeType":"YulBlock","src":"18054:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18071:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18091:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"18076:14:15"},"nodeType":"YulFunctionCall","src":"18076:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18064:6:15"},"nodeType":"YulFunctionCall","src":"18064:34:15"},"nodeType":"YulExpressionStatement","src":"18064:34:15"}]},"name":"abi_encode_t_bool_to_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18042:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18049:3:15","type":""}],"src":"18005:99:15"},{"body":{"nodeType":"YulBlock","src":"18278:1651:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18288:28:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18304:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18309:6:15","type":"","value":"0x0120"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18300:3:15"},"nodeType":"YulFunctionCall","src":"18300:16:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"18292:4:15","type":""}]},{"nodeType":"YulBlock","src":"18326:166:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18363:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18393:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18400:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18389:3:15"},"nodeType":"YulFunctionCall","src":"18389:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18383:5:15"},"nodeType":"YulFunctionCall","src":"18383:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18367:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18453:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18471:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18476:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18467:3:15"},"nodeType":"YulFunctionCall","src":"18467:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18419:33:15"},"nodeType":"YulFunctionCall","src":"18419:63:15"},"nodeType":"YulExpressionStatement","src":"18419:63:15"}]},{"nodeType":"YulBlock","src":"18502:165:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18538:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18568:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18575:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18564:3:15"},"nodeType":"YulFunctionCall","src":"18564:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18558:5:15"},"nodeType":"YulFunctionCall","src":"18558:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18542:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18628:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18646:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18651:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18642:3:15"},"nodeType":"YulFunctionCall","src":"18642:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18594:33:15"},"nodeType":"YulFunctionCall","src":"18594:63:15"},"nodeType":"YulExpressionStatement","src":"18594:63:15"}]},{"nodeType":"YulBlock","src":"18677:178:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18726:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18756:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18763:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18752:3:15"},"nodeType":"YulFunctionCall","src":"18752:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18746:5:15"},"nodeType":"YulFunctionCall","src":"18746:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18730:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18816:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18834:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18839:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18830:3:15"},"nodeType":"YulFunctionCall","src":"18830:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"18782:33:15"},"nodeType":"YulFunctionCall","src":"18782:63:15"},"nodeType":"YulExpressionStatement","src":"18782:63:15"}]},{"nodeType":"YulBlock","src":"18865:169:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18905:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18935:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18942:4:15","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18931:3:15"},"nodeType":"YulFunctionCall","src":"18931:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18925:5:15"},"nodeType":"YulFunctionCall","src":"18925:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"18909:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"18995:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19013:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19018:4:15","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19009:3:15"},"nodeType":"YulFunctionCall","src":"19009:14:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"18961:33:15"},"nodeType":"YulFunctionCall","src":"18961:63:15"},"nodeType":"YulExpressionStatement","src":"18961:63:15"}]},{"nodeType":"YulBlock","src":"19044:162:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19079:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19109:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19116:4:15","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19105:3:15"},"nodeType":"YulFunctionCall","src":"19105:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19099:5:15"},"nodeType":"YulFunctionCall","src":"19099:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19083:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19167:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19185:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19190:4:15","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19181:3:15"},"nodeType":"YulFunctionCall","src":"19181:14:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulIdentifier","src":"19135:31:15"},"nodeType":"YulFunctionCall","src":"19135:61:15"},"nodeType":"YulExpressionStatement","src":"19135:61:15"}]},{"nodeType":"YulBlock","src":"19216:165:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19258:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19288:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19295:4:15","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19284:3:15"},"nodeType":"YulFunctionCall","src":"19284:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19278:5:15"},"nodeType":"YulFunctionCall","src":"19278:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19262:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19342:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19360:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19365:4:15","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19356:3:15"},"nodeType":"YulFunctionCall","src":"19356:14:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool","nodeType":"YulIdentifier","src":"19314:27:15"},"nodeType":"YulFunctionCall","src":"19314:57:15"},"nodeType":"YulExpressionStatement","src":"19314:57:15"}]},{"nodeType":"YulBlock","src":"19391:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19435:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19465:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19472:4:15","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19461:3:15"},"nodeType":"YulFunctionCall","src":"19461:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19455:5:15"},"nodeType":"YulFunctionCall","src":"19455:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19439:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19525:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19543:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19548:4:15","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19539:3:15"},"nodeType":"YulFunctionCall","src":"19539:14:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"19491:33:15"},"nodeType":"YulFunctionCall","src":"19491:63:15"},"nodeType":"YulExpressionStatement","src":"19491:63:15"}]},{"nodeType":"YulBlock","src":"19574:168:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19615:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19645:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19652:4:15","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19641:3:15"},"nodeType":"YulFunctionCall","src":"19641:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19635:5:15"},"nodeType":"YulFunctionCall","src":"19635:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19619:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19703:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19721:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19726:4:15","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19717:3:15"},"nodeType":"YulFunctionCall","src":"19717:14:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96","nodeType":"YulIdentifier","src":"19671:31:15"},"nodeType":"YulFunctionCall","src":"19671:61:15"},"nodeType":"YulExpressionStatement","src":"19671:61:15"}]},{"nodeType":"YulBlock","src":"19752:170:15","statements":[{"nodeType":"YulVariableDeclaration","src":"19789:45:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19819:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"19826:6:15","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19815:3:15"},"nodeType":"YulFunctionCall","src":"19815:18:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"19809:5:15"},"nodeType":"YulFunctionCall","src":"19809:25:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"19793:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"19881:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19899:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19904:6:15","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19895:3:15"},"nodeType":"YulFunctionCall","src":"19895:16:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"19847:33:15"},"nodeType":"YulFunctionCall","src":"19847:65:15"},"nodeType":"YulExpressionStatement","src":"19847:65:15"}]}]},"name":"abi_encode_t_struct$_Order_$3935_memory_ptr_to_t_struct$_Order_$3935_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18265:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18272:3:15","type":""}],"src":"18166:1763:15"},{"body":{"nodeType":"YulBlock","src":"20079:171:15","statements":[{"nodeType":"YulAssignment","src":"20089:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20101:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20112:3:15","type":"","value":"288"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20097:3:15"},"nodeType":"YulFunctionCall","src":"20097:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20089:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20216:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20229:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20240:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20225:3:15"},"nodeType":"YulFunctionCall","src":"20225:17:15"}],"functionName":{"name":"abi_encode_t_struct$_Order_$3935_memory_ptr_to_t_struct$_Order_$3935_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20126:89:15"},"nodeType":"YulFunctionCall","src":"20126:117:15"},"nodeType":"YulExpressionStatement","src":"20126:117:15"}]},"name":"abi_encode_tuple_t_struct$_Order_$3935_memory_ptr__to_t_struct$_Order_$3935_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20051:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20063:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20074:4:15","type":""}],"src":"19935:315:15"},{"body":{"nodeType":"YulBlock","src":"20339:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"20385:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"20387:77:15"},"nodeType":"YulFunctionCall","src":"20387:79:15"},"nodeType":"YulExpressionStatement","src":"20387:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"20360:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"20369:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20356:3:15"},"nodeType":"YulFunctionCall","src":"20356:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"20381:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"20352:3:15"},"nodeType":"YulFunctionCall","src":"20352:32:15"},"nodeType":"YulIf","src":"20349:119:15"},{"nodeType":"YulBlock","src":"20478:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20493:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"20507:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"20497:6:15","type":""}]},{"nodeType":"YulAssignment","src":"20522:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20557:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"20568:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20553:3:15"},"nodeType":"YulFunctionCall","src":"20553:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"20577:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"20532:20:15"},"nodeType":"YulFunctionCall","src":"20532:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"20522:6:15"}]}]},{"nodeType":"YulBlock","src":"20605:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20620:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"20634:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"20624:6:15","type":""}]},{"nodeType":"YulAssignment","src":"20650:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20685:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"20696:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20681:3:15"},"nodeType":"YulFunctionCall","src":"20681:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"20705:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"20660:20:15"},"nodeType":"YulFunctionCall","src":"20660:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"20650:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20301:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"20312:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"20324:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20332:6:15","type":""}],"src":"20256:474:15"},{"body":{"nodeType":"YulBlock","src":"20978:395:15","statements":[{"nodeType":"YulVariableDeclaration","src":"20988:26:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21004:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21009:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21000:3:15"},"nodeType":"YulFunctionCall","src":"21000:14:15"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"20992:4:15","type":""}]},{"nodeType":"YulBlock","src":"21024:164:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21059:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21089:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"21096:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21085:3:15"},"nodeType":"YulFunctionCall","src":"21085:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21079:5:15"},"nodeType":"YulFunctionCall","src":"21079:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"21063:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"21149:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21167:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21172:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21163:3:15"},"nodeType":"YulFunctionCall","src":"21163:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"21115:33:15"},"nodeType":"YulFunctionCall","src":"21115:63:15"},"nodeType":"YulExpressionStatement","src":"21115:63:15"}]},{"nodeType":"YulBlock","src":"21198:168:15","statements":[{"nodeType":"YulVariableDeclaration","src":"21237:43:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21267:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"21274:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21263:3:15"},"nodeType":"YulFunctionCall","src":"21263:16:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21257:5:15"},"nodeType":"YulFunctionCall","src":"21257:23:15"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"21241:12:15","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"21327:12:15"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21345:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21350:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21341:3:15"},"nodeType":"YulFunctionCall","src":"21341:14:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32","nodeType":"YulIdentifier","src":"21293:33:15"},"nodeType":"YulFunctionCall","src":"21293:63:15"},"nodeType":"YulExpressionStatement","src":"21293:63:15"}]}]},"name":"abi_encode_t_struct$_InstitutionByCode_$3614_memory_ptr_to_t_struct$_InstitutionByCode_$3614_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20965:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"20972:3:15","type":""}],"src":"20842:531:15"},{"body":{"nodeType":"YulBlock","src":"21547:194:15","statements":[{"nodeType":"YulAssignment","src":"21557:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21569:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21580:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21565:3:15"},"nodeType":"YulFunctionCall","src":"21565:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21557:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21707:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21720:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21731:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21716:3:15"},"nodeType":"YulFunctionCall","src":"21716:17:15"}],"functionName":{"name":"abi_encode_t_struct$_InstitutionByCode_$3614_memory_ptr_to_t_struct$_InstitutionByCode_$3614_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21593:113:15"},"nodeType":"YulFunctionCall","src":"21593:141:15"},"nodeType":"YulExpressionStatement","src":"21593:141:15"}]},"name":"abi_encode_tuple_t_struct$_InstitutionByCode_$3614_memory_ptr__to_t_struct$_InstitutionByCode_$3614_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21519:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21531:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21542:4:15","type":""}],"src":"21379:362:15"},{"body":{"nodeType":"YulBlock","src":"21845:124:15","statements":[{"nodeType":"YulAssignment","src":"21855:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21867:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21878:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21863:3:15"},"nodeType":"YulFunctionCall","src":"21863:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21855:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21935:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21948:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21959:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21944:3:15"},"nodeType":"YulFunctionCall","src":"21944:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21891:43:15"},"nodeType":"YulFunctionCall","src":"21891:71:15"},"nodeType":"YulExpressionStatement","src":"21891:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21817:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21829:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21840:4:15","type":""}],"src":"21747:222:15"},{"body":{"nodeType":"YulBlock","src":"22072:516:15","statements":[{"body":{"nodeType":"YulBlock","src":"22118:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"22120:77:15"},"nodeType":"YulFunctionCall","src":"22120:79:15"},"nodeType":"YulExpressionStatement","src":"22120:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"22093:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"22102:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22089:3:15"},"nodeType":"YulFunctionCall","src":"22089:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"22114:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22085:3:15"},"nodeType":"YulFunctionCall","src":"22085:32:15"},"nodeType":"YulIf","src":"22082:119:15"},{"nodeType":"YulBlock","src":"22211:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22226:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"22240:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22230:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22255:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22290:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"22301:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22286:3:15"},"nodeType":"YulFunctionCall","src":"22286:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22310:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"22265:20:15"},"nodeType":"YulFunctionCall","src":"22265:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"22255:6:15"}]}]},{"nodeType":"YulBlock","src":"22338:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22353:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"22367:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22357:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22383:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22418:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"22429:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22414:3:15"},"nodeType":"YulFunctionCall","src":"22414:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22438:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"22393:20:15"},"nodeType":"YulFunctionCall","src":"22393:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"22383:6:15"}]}]},{"nodeType":"YulBlock","src":"22466:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22481:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"22495:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22485:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22511:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22543:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"22554:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22539:3:15"},"nodeType":"YulFunctionCall","src":"22539:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22563:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"22521:17:15"},"nodeType":"YulFunctionCall","src":"22521:50:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"22511:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22026:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"22037:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"22049:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22057:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22065:6:15","type":""}],"src":"21975:613:15"},{"body":{"nodeType":"YulBlock","src":"22639:73:15","statements":[{"nodeType":"YulAssignment","src":"22649:57:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22664:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"22671:34:15","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22660:3:15"},"nodeType":"YulFunctionCall","src":"22660:46:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"22649:7:15"}]}]},"name":"cleanup_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22621:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"22631:7:15","type":""}],"src":"22594:118:15"},{"body":{"nodeType":"YulBlock","src":"22783:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22800:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22823:5:15"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"22805:17:15"},"nodeType":"YulFunctionCall","src":"22805:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22793:6:15"},"nodeType":"YulFunctionCall","src":"22793:37:15"},"nodeType":"YulExpressionStatement","src":"22793:37:15"}]},"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22771:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22778:3:15","type":""}],"src":"22718:118:15"},{"body":{"nodeType":"YulBlock","src":"22907:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22924:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22947:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22929:17:15"},"nodeType":"YulFunctionCall","src":"22929:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22917:6:15"},"nodeType":"YulFunctionCall","src":"22917:37:15"},"nodeType":"YulExpressionStatement","src":"22917:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22895:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22902:3:15","type":""}],"src":"22842:118:15"},{"body":{"nodeType":"YulBlock","src":"23120:288:15","statements":[{"nodeType":"YulAssignment","src":"23130:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23142:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23153:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23138:3:15"},"nodeType":"YulFunctionCall","src":"23138:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23130:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"23210:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23223:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23234:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23219:3:15"},"nodeType":"YulFunctionCall","src":"23219:17:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"23166:43:15"},"nodeType":"YulFunctionCall","src":"23166:71:15"},"nodeType":"YulExpressionStatement","src":"23166:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23291:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23304:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23315:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23300:3:15"},"nodeType":"YulFunctionCall","src":"23300:18:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"23247:43:15"},"nodeType":"YulFunctionCall","src":"23247:72:15"},"nodeType":"YulExpressionStatement","src":"23247:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"23373:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23386:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23397:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23382:3:15"},"nodeType":"YulFunctionCall","src":"23382:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"23329:43:15"},"nodeType":"YulFunctionCall","src":"23329:72:15"},"nodeType":"YulExpressionStatement","src":"23329:72:15"}]},"name":"abi_encode_tuple_t_uint128_t_uint128_t_uint256__to_t_uint128_t_uint128_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23076:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"23088:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23096:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23104:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23115:4:15","type":""}],"src":"22966:442:15"},{"body":{"nodeType":"YulBlock","src":"23501:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"23550:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"23552:77:15"},"nodeType":"YulFunctionCall","src":"23552:79:15"},"nodeType":"YulExpressionStatement","src":"23552:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23529:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23537:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23525:3:15"},"nodeType":"YulFunctionCall","src":"23525:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"23544:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23521:3:15"},"nodeType":"YulFunctionCall","src":"23521:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"23514:6:15"},"nodeType":"YulFunctionCall","src":"23514:35:15"},"nodeType":"YulIf","src":"23511:122:15"},{"nodeType":"YulAssignment","src":"23642:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23665:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23652:12:15"},"nodeType":"YulFunctionCall","src":"23652:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"23642:6:15"}]},{"body":{"nodeType":"YulBlock","src":"23715:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"23717:77:15"},"nodeType":"YulFunctionCall","src":"23717:79:15"},"nodeType":"YulExpressionStatement","src":"23717:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"23687:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23695:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23684:2:15"},"nodeType":"YulFunctionCall","src":"23684:30:15"},"nodeType":"YulIf","src":"23681:117:15"},{"nodeType":"YulAssignment","src":"23807:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23823:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23831:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23819:3:15"},"nodeType":"YulFunctionCall","src":"23819:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"23807:8:15"}]},{"body":{"nodeType":"YulBlock","src":"23890:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"23892:77:15"},"nodeType":"YulFunctionCall","src":"23892:79:15"},"nodeType":"YulExpressionStatement","src":"23892:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"23855:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"23869:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23877:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"23865:3:15"},"nodeType":"YulFunctionCall","src":"23865:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23851:3:15"},"nodeType":"YulFunctionCall","src":"23851:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"23885:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23848:2:15"},"nodeType":"YulFunctionCall","src":"23848:41:15"},"nodeType":"YulIf","src":"23845:128:15"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"23468:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"23476:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"23484:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"23494:6:15","type":""}],"src":"23427:552:15"},{"body":{"nodeType":"YulBlock","src":"24070:442:15","statements":[{"body":{"nodeType":"YulBlock","src":"24116:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"24118:77:15"},"nodeType":"YulFunctionCall","src":"24118:79:15"},"nodeType":"YulExpressionStatement","src":"24118:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"24091:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"24100:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24087:3:15"},"nodeType":"YulFunctionCall","src":"24087:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"24112:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"24083:3:15"},"nodeType":"YulFunctionCall","src":"24083:32:15"},"nodeType":"YulIf","src":"24080:119:15"},{"nodeType":"YulBlock","src":"24209:296:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24224:45:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24255:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"24266:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24251:3:15"},"nodeType":"YulFunctionCall","src":"24251:17:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"24238:12:15"},"nodeType":"YulFunctionCall","src":"24238:31:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24228:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"24316:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"24318:77:15"},"nodeType":"YulFunctionCall","src":"24318:79:15"},"nodeType":"YulExpressionStatement","src":"24318:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"24288:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"24296:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24285:2:15"},"nodeType":"YulFunctionCall","src":"24285:30:15"},"nodeType":"YulIf","src":"24282:117:15"},{"nodeType":"YulAssignment","src":"24413:82:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24467:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24478:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24463:3:15"},"nodeType":"YulFunctionCall","src":"24463:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24487:7:15"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"24431:31:15"},"nodeType":"YulFunctionCall","src":"24431:64:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"24413:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"24421:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24032:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"24043:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"24055:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24063:6:15","type":""}],"src":"23985:527:15"},{"body":{"nodeType":"YulBlock","src":"24618:519:15","statements":[{"body":{"nodeType":"YulBlock","src":"24664:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"24666:77:15"},"nodeType":"YulFunctionCall","src":"24666:79:15"},"nodeType":"YulExpressionStatement","src":"24666:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"24639:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"24648:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24635:3:15"},"nodeType":"YulFunctionCall","src":"24635:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"24660:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"24631:3:15"},"nodeType":"YulFunctionCall","src":"24631:32:15"},"nodeType":"YulIf","src":"24628:119:15"},{"nodeType":"YulBlock","src":"24757:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24772:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"24786:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24776:6:15","type":""}]},{"nodeType":"YulAssignment","src":"24801:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24836:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24847:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24832:3:15"},"nodeType":"YulFunctionCall","src":"24832:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24856:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"24811:20:15"},"nodeType":"YulFunctionCall","src":"24811:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"24801:6:15"}]}]},{"nodeType":"YulBlock","src":"24884:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"24899:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"24913:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"24903:6:15","type":""}]},{"nodeType":"YulAssignment","src":"24929:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24964:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"24975:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24960:3:15"},"nodeType":"YulFunctionCall","src":"24960:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"24984:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"24939:20:15"},"nodeType":"YulFunctionCall","src":"24939:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"24929:6:15"}]}]},{"nodeType":"YulBlock","src":"25012:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"25027:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25041:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25031:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25057:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25092:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25103:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25088:3:15"},"nodeType":"YulFunctionCall","src":"25088:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25112:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"25067:20:15"},"nodeType":"YulFunctionCall","src":"25067:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"25057:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24572:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"24583:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"24595:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"24603:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"24611:6:15","type":""}],"src":"24518:619:15"},{"body":{"nodeType":"YulBlock","src":"25226:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"25272:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"25274:77:15"},"nodeType":"YulFunctionCall","src":"25274:79:15"},"nodeType":"YulExpressionStatement","src":"25274:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"25247:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"25256:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25243:3:15"},"nodeType":"YulFunctionCall","src":"25243:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"25268:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25239:3:15"},"nodeType":"YulFunctionCall","src":"25239:32:15"},"nodeType":"YulIf","src":"25236:119:15"},{"nodeType":"YulBlock","src":"25365:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"25380:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25394:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25384:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25409:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25444:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25455:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25440:3:15"},"nodeType":"YulFunctionCall","src":"25440:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25464:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"25419:20:15"},"nodeType":"YulFunctionCall","src":"25419:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"25409:6:15"}]}]},{"nodeType":"YulBlock","src":"25492:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"25507:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"25521:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25511:6:15","type":""}]},{"nodeType":"YulAssignment","src":"25537:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25572:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"25583:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25568:3:15"},"nodeType":"YulFunctionCall","src":"25568:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25592:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"25547:20:15"},"nodeType":"YulFunctionCall","src":"25547:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"25537:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25188:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"25199:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"25211:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"25219:6:15","type":""}],"src":"25143:474:15"},{"body":{"nodeType":"YulBlock","src":"25666:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"25723:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25732:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25735:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25725:6:15"},"nodeType":"YulFunctionCall","src":"25725:12:15"},"nodeType":"YulExpressionStatement","src":"25725:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25689:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25714:5:15"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"25696:17:15"},"nodeType":"YulFunctionCall","src":"25696:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"25686:2:15"},"nodeType":"YulFunctionCall","src":"25686:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25679:6:15"},"nodeType":"YulFunctionCall","src":"25679:43:15"},"nodeType":"YulIf","src":"25676:63:15"}]},"name":"validator_revert_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"25659:5:15","type":""}],"src":"25623:122:15"},{"body":{"nodeType":"YulBlock","src":"25803:87:15","statements":[{"nodeType":"YulAssignment","src":"25813:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"25835:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"25822:12:15"},"nodeType":"YulFunctionCall","src":"25822:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"25813:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25878:5:15"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"25851:26:15"},"nodeType":"YulFunctionCall","src":"25851:33:15"},"nodeType":"YulExpressionStatement","src":"25851:33:15"}]},"name":"abi_decode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"25781:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"25789:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"25797:5:15","type":""}],"src":"25751:139:15"},{"body":{"nodeType":"YulBlock","src":"25979:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"26025:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"26027:77:15"},"nodeType":"YulFunctionCall","src":"26027:79:15"},"nodeType":"YulExpressionStatement","src":"26027:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"26000:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"26009:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25996:3:15"},"nodeType":"YulFunctionCall","src":"25996:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"26021:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25992:3:15"},"nodeType":"YulFunctionCall","src":"25992:32:15"},"nodeType":"YulIf","src":"25989:119:15"},{"nodeType":"YulBlock","src":"26118:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"26133:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"26147:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26137:6:15","type":""}]},{"nodeType":"YulAssignment","src":"26162:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26197:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"26208:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26193:3:15"},"nodeType":"YulFunctionCall","src":"26193:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"26217:7:15"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"26172:20:15"},"nodeType":"YulFunctionCall","src":"26172:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"26162:6:15"}]}]},{"nodeType":"YulBlock","src":"26245:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"26260:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"26274:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26264:6:15","type":""}]},{"nodeType":"YulAssignment","src":"26290:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26325:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"26336:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26321:3:15"},"nodeType":"YulFunctionCall","src":"26321:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"26345:7:15"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"26300:20:15"},"nodeType":"YulFunctionCall","src":"26300:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"26290:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint128t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25941:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"25952:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"25964:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"25972:6:15","type":""}],"src":"25896:474:15"},{"body":{"nodeType":"YulBlock","src":"26404:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26421:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26424:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26414:6:15"},"nodeType":"YulFunctionCall","src":"26414:88:15"},"nodeType":"YulExpressionStatement","src":"26414:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26518:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"26521:4:15","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26511:6:15"},"nodeType":"YulFunctionCall","src":"26511:15:15"},"nodeType":"YulExpressionStatement","src":"26511:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26542:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26545:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26535:6:15"},"nodeType":"YulFunctionCall","src":"26535:15:15"},"nodeType":"YulExpressionStatement","src":"26535:15:15"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"26376:180:15"},{"body":{"nodeType":"YulBlock","src":"26658:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26675:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"26680:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26668:6:15"},"nodeType":"YulFunctionCall","src":"26668:19:15"},"nodeType":"YulExpressionStatement","src":"26668:19:15"},{"nodeType":"YulAssignment","src":"26696:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26715:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"26720:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26711:3:15"},"nodeType":"YulFunctionCall","src":"26711:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"26696:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26630:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"26635:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"26646:11:15","type":""}],"src":"26562:169:15"},{"body":{"nodeType":"YulBlock","src":"26843:58:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"26865:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"26873:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26861:3:15"},"nodeType":"YulFunctionCall","src":"26861:14:15"},{"hexValue":"4f6e6c7941676772656761746f72","kind":"string","nodeType":"YulLiteral","src":"26877:16:15","type":"","value":"OnlyAggregator"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26854:6:15"},"nodeType":"YulFunctionCall","src":"26854:40:15"},"nodeType":"YulExpressionStatement","src":"26854:40:15"}]},"name":"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"26835:6:15","type":""}],"src":"26737:164:15"},{"body":{"nodeType":"YulBlock","src":"27053:220:15","statements":[{"nodeType":"YulAssignment","src":"27063:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27129:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"27134:2:15","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27070:58:15"},"nodeType":"YulFunctionCall","src":"27070:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"27063:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27235:3:15"}],"functionName":{"name":"store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243","nodeType":"YulIdentifier","src":"27146:88:15"},"nodeType":"YulFunctionCall","src":"27146:93:15"},"nodeType":"YulExpressionStatement","src":"27146:93:15"},{"nodeType":"YulAssignment","src":"27248:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27259:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"27264:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27255:3:15"},"nodeType":"YulFunctionCall","src":"27255:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"27248:3:15"}]}]},"name":"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"27041:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"27049:3:15","type":""}],"src":"26907:366:15"},{"body":{"nodeType":"YulBlock","src":"27450:248:15","statements":[{"nodeType":"YulAssignment","src":"27460:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27472:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27483:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27468:3:15"},"nodeType":"YulFunctionCall","src":"27468:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27460:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27507:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27518:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27503:3:15"},"nodeType":"YulFunctionCall","src":"27503:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27526:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"27532:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27522:3:15"},"nodeType":"YulFunctionCall","src":"27522:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27496:6:15"},"nodeType":"YulFunctionCall","src":"27496:47:15"},"nodeType":"YulExpressionStatement","src":"27496:47:15"},{"nodeType":"YulAssignment","src":"27552:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27686:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27560:124:15"},"nodeType":"YulFunctionCall","src":"27560:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27552:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27430:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27445:4:15","type":""}],"src":"27279:419:15"},{"body":{"nodeType":"YulBlock","src":"27810:58:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"27832:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"27840:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27828:3:15"},"nodeType":"YulFunctionCall","src":"27828:14:15"},{"hexValue":"4f7264657246756c66696c6c6564","kind":"string","nodeType":"YulLiteral","src":"27844:16:15","type":"","value":"OrderFulfilled"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27821:6:15"},"nodeType":"YulFunctionCall","src":"27821:40:15"},"nodeType":"YulExpressionStatement","src":"27821:40:15"}]},"name":"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"27802:6:15","type":""}],"src":"27704:164:15"},{"body":{"nodeType":"YulBlock","src":"28020:220:15","statements":[{"nodeType":"YulAssignment","src":"28030:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28096:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"28101:2:15","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"28037:58:15"},"nodeType":"YulFunctionCall","src":"28037:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"28030:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28202:3:15"}],"functionName":{"name":"store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5","nodeType":"YulIdentifier","src":"28113:88:15"},"nodeType":"YulFunctionCall","src":"28113:93:15"},"nodeType":"YulExpressionStatement","src":"28113:93:15"},{"nodeType":"YulAssignment","src":"28215:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28226:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"28231:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28222:3:15"},"nodeType":"YulFunctionCall","src":"28222:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"28215:3:15"}]}]},"name":"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"28008:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"28016:3:15","type":""}],"src":"27874:366:15"},{"body":{"nodeType":"YulBlock","src":"28417:248:15","statements":[{"nodeType":"YulAssignment","src":"28427:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28439:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28450:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28435:3:15"},"nodeType":"YulFunctionCall","src":"28435:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"28427:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28474:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"28485:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28470:3:15"},"nodeType":"YulFunctionCall","src":"28470:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"28493:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"28499:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28489:3:15"},"nodeType":"YulFunctionCall","src":"28489:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28463:6:15"},"nodeType":"YulFunctionCall","src":"28463:47:15"},"nodeType":"YulExpressionStatement","src":"28463:47:15"},{"nodeType":"YulAssignment","src":"28519:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"28653:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"28527:124:15"},"nodeType":"YulFunctionCall","src":"28527:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"28519:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28397:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"28412:4:15","type":""}],"src":"28246:419:15"},{"body":{"nodeType":"YulBlock","src":"28699:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28716:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28719:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28709:6:15"},"nodeType":"YulFunctionCall","src":"28709:88:15"},"nodeType":"YulExpressionStatement","src":"28709:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28813:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"28816:4:15","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28806:6:15"},"nodeType":"YulFunctionCall","src":"28806:15:15"},"nodeType":"YulExpressionStatement","src":"28806:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28837:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28840:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"28830:6:15"},"nodeType":"YulFunctionCall","src":"28830:15:15"},"nodeType":"YulExpressionStatement","src":"28830:15:15"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"28671:180:15"},{"body":{"nodeType":"YulBlock","src":"28901:172:15","statements":[{"nodeType":"YulAssignment","src":"28911:24:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"28933:1:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"28916:16:15"},"nodeType":"YulFunctionCall","src":"28916:19:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"28911:1:15"}]},{"nodeType":"YulAssignment","src":"28944:24:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"28966:1:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"28949:16:15"},"nodeType":"YulFunctionCall","src":"28949:19:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"28944:1:15"}]},{"nodeType":"YulAssignment","src":"28977:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"28989:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"28992:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28985:3:15"},"nodeType":"YulFunctionCall","src":"28985:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"28977:4:15"}]},{"body":{"nodeType":"YulBlock","src":"29044:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"29046:16:15"},"nodeType":"YulFunctionCall","src":"29046:18:15"},"nodeType":"YulExpressionStatement","src":"29046:18:15"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"29010:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"29016:26:15","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"29007:2:15"},"nodeType":"YulFunctionCall","src":"29007:36:15"},"nodeType":"YulIf","src":"29004:62:15"}]},"name":"checked_sub_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"28887:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"28890:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"28896:4:15","type":""}],"src":"28857:216:15"},{"body":{"nodeType":"YulBlock","src":"29205:206:15","statements":[{"nodeType":"YulAssignment","src":"29215:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29227:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29238:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29223:3:15"},"nodeType":"YulFunctionCall","src":"29223:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29215:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"29295:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29308:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29319:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29304:3:15"},"nodeType":"YulFunctionCall","src":"29304:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"29251:43:15"},"nodeType":"YulFunctionCall","src":"29251:71:15"},"nodeType":"YulExpressionStatement","src":"29251:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"29376:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29389:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"29400:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29385:3:15"},"nodeType":"YulFunctionCall","src":"29385:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"29332:43:15"},"nodeType":"YulFunctionCall","src":"29332:72:15"},"nodeType":"YulExpressionStatement","src":"29332:72:15"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29169:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"29181:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"29189:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"29200:4:15","type":""}],"src":"29079:332:15"},{"body":{"nodeType":"YulBlock","src":"29477:77:15","statements":[{"nodeType":"YulAssignment","src":"29487:22:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"29502:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"29496:5:15"},"nodeType":"YulFunctionCall","src":"29496:13:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"29487:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29542:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"29518:23:15"},"nodeType":"YulFunctionCall","src":"29518:30:15"},"nodeType":"YulExpressionStatement","src":"29518:30:15"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"29455:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"29463:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"29471:5:15","type":""}],"src":"29417:137:15"},{"body":{"nodeType":"YulBlock","src":"29634:271:15","statements":[{"body":{"nodeType":"YulBlock","src":"29680:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"29682:77:15"},"nodeType":"YulFunctionCall","src":"29682:79:15"},"nodeType":"YulExpressionStatement","src":"29682:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"29655:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"29664:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29651:3:15"},"nodeType":"YulFunctionCall","src":"29651:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"29676:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"29647:3:15"},"nodeType":"YulFunctionCall","src":"29647:32:15"},"nodeType":"YulIf","src":"29644:119:15"},{"nodeType":"YulBlock","src":"29773:125:15","statements":[{"nodeType":"YulVariableDeclaration","src":"29788:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"29802:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"29792:6:15","type":""}]},{"nodeType":"YulAssignment","src":"29817:71:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29860:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"29871:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29856:3:15"},"nodeType":"YulFunctionCall","src":"29856:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"29880:7:15"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"29827:28:15"},"nodeType":"YulFunctionCall","src":"29827:61:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"29817:6:15"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29604:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"29615:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"29627:6:15","type":""}],"src":"29560:345:15"},{"body":{"nodeType":"YulBlock","src":"29943:28:15","statements":[{"nodeType":"YulAssignment","src":"29953:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"29960:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"29953:3:15"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29929:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"29939:3:15","type":""}],"src":"29911:60:15"},{"body":{"nodeType":"YulBlock","src":"30035:80:15","statements":[{"nodeType":"YulAssignment","src":"30045:64:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30101:5:15"}],"functionName":{"name":"cleanup_t_uint64","nodeType":"YulIdentifier","src":"30084:16:15"},"nodeType":"YulFunctionCall","src":"30084:23:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"30075:8:15"},"nodeType":"YulFunctionCall","src":"30075:33:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"30058:16:15"},"nodeType":"YulFunctionCall","src":"30058:51:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"30045:9:15"}]}]},"name":"convert_t_uint64_to_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"30015:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"30025:9:15","type":""}],"src":"29977:138:15"},{"body":{"nodeType":"YulBlock","src":"30184:64:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30201:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30235:5:15"}],"functionName":{"name":"convert_t_uint64_to_t_uint96","nodeType":"YulIdentifier","src":"30206:28:15"},"nodeType":"YulFunctionCall","src":"30206:35:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30194:6:15"},"nodeType":"YulFunctionCall","src":"30194:48:15"},"nodeType":"YulExpressionStatement","src":"30194:48:15"}]},"name":"abi_encode_t_uint64_to_t_uint96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"30172:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"30179:3:15","type":""}],"src":"30121:127:15"},{"body":{"nodeType":"YulBlock","src":"30406:286:15","statements":[{"nodeType":"YulAssignment","src":"30416:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30428:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30439:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30424:3:15"},"nodeType":"YulFunctionCall","src":"30424:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30416:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"30496:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30509:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30520:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30505:3:15"},"nodeType":"YulFunctionCall","src":"30505:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"30452:43:15"},"nodeType":"YulFunctionCall","src":"30452:71:15"},"nodeType":"YulExpressionStatement","src":"30452:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"30577:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30590:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30601:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30586:3:15"},"nodeType":"YulFunctionCall","src":"30586:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"30533:43:15"},"nodeType":"YulFunctionCall","src":"30533:72:15"},"nodeType":"YulExpressionStatement","src":"30533:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"30657:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30670:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30681:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30666:3:15"},"nodeType":"YulFunctionCall","src":"30666:18:15"}],"functionName":{"name":"abi_encode_t_uint64_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"30615:41:15"},"nodeType":"YulFunctionCall","src":"30615:70:15"},"nodeType":"YulExpressionStatement","src":"30615:70:15"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"30362:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"30374:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"30382:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"30390:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"30401:4:15","type":""}],"src":"30254:438:15"},{"body":{"nodeType":"YulBlock","src":"30852:288:15","statements":[{"nodeType":"YulAssignment","src":"30862:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30874:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30885:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30870:3:15"},"nodeType":"YulFunctionCall","src":"30870:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30862:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"30942:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30955:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"30966:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30951:3:15"},"nodeType":"YulFunctionCall","src":"30951:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"30898:43:15"},"nodeType":"YulFunctionCall","src":"30898:71:15"},"nodeType":"YulExpressionStatement","src":"30898:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"31023:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31036:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"31047:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31032:3:15"},"nodeType":"YulFunctionCall","src":"31032:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"30979:43:15"},"nodeType":"YulFunctionCall","src":"30979:72:15"},"nodeType":"YulExpressionStatement","src":"30979:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"31105:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31118:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"31129:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31114:3:15"},"nodeType":"YulFunctionCall","src":"31114:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"31061:43:15"},"nodeType":"YulFunctionCall","src":"31061:72:15"},"nodeType":"YulExpressionStatement","src":"31061:72:15"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"30808:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"30820:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"30828:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"30836:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"30847:4:15","type":""}],"src":"30698:442:15"},{"body":{"nodeType":"YulBlock","src":"31189:190:15","statements":[{"nodeType":"YulAssignment","src":"31199:33:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"31226:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"31208:17:15"},"nodeType":"YulFunctionCall","src":"31208:24:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"31199:5:15"}]},{"body":{"nodeType":"YulBlock","src":"31322:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"31324:16:15"},"nodeType":"YulFunctionCall","src":"31324:18:15"},"nodeType":"YulExpressionStatement","src":"31324:18:15"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"31247:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"31254:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"31244:2:15"},"nodeType":"YulFunctionCall","src":"31244:77:15"},"nodeType":"YulIf","src":"31241:103:15"},{"nodeType":"YulAssignment","src":"31353:20:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"31364:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"31371:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31360:3:15"},"nodeType":"YulFunctionCall","src":"31360:13:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"31353:3:15"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"31175:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"31185:3:15","type":""}],"src":"31146:233:15"},{"body":{"nodeType":"YulBlock","src":"31444:81:15","statements":[{"nodeType":"YulAssignment","src":"31454:65:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"31511:5:15"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"31494:16:15"},"nodeType":"YulFunctionCall","src":"31494:23:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"31485:8:15"},"nodeType":"YulFunctionCall","src":"31485:33:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"31467:17:15"},"nodeType":"YulFunctionCall","src":"31467:52:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"31454:9:15"}]}]},"name":"convert_t_uint96_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"31424:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"31434:9:15","type":""}],"src":"31385:140:15"},{"body":{"nodeType":"YulBlock","src":"31595:65:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31612:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"31647:5:15"}],"functionName":{"name":"convert_t_uint96_to_t_uint256","nodeType":"YulIdentifier","src":"31617:29:15"},"nodeType":"YulFunctionCall","src":"31617:36:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31605:6:15"},"nodeType":"YulFunctionCall","src":"31605:49:15"},"nodeType":"YulExpressionStatement","src":"31605:49:15"}]},"name":"abi_encode_t_uint96_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"31583:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"31590:3:15","type":""}],"src":"31531:129:15"},{"body":{"nodeType":"YulBlock","src":"31730:82:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"31753:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"31758:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"31763:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"31740:12:15"},"nodeType":"YulFunctionCall","src":"31740:30:15"},"nodeType":"YulExpressionStatement","src":"31740:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"31790:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"31795:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31786:3:15"},"nodeType":"YulFunctionCall","src":"31786:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"31804:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31779:6:15"},"nodeType":"YulFunctionCall","src":"31779:27:15"},"nodeType":"YulExpressionStatement","src":"31779:27:15"}]},"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"31712:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"31717:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"31722:6:15","type":""}],"src":"31666:146:15"},{"body":{"nodeType":"YulBlock","src":"31944:215:15","statements":[{"nodeType":"YulAssignment","src":"31954:78:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32020:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"32025:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31961:58:15"},"nodeType":"YulFunctionCall","src":"31961:71:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"31954:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"32079:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"32086:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"32091:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"32042:36:15"},"nodeType":"YulFunctionCall","src":"32042:56:15"},"nodeType":"YulExpressionStatement","src":"32042:56:15"},{"nodeType":"YulAssignment","src":"32107:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32118:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"32145:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"32123:21:15"},"nodeType":"YulFunctionCall","src":"32123:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32114:3:15"},"nodeType":"YulFunctionCall","src":"32114:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"32107:3:15"}]}]},"name":"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"31917:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"31924:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"31932:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"31940:3:15","type":""}],"src":"31842:317:15"},{"body":{"nodeType":"YulBlock","src":"32376:451:15","statements":[{"nodeType":"YulAssignment","src":"32386:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32398:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32409:3:15","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32394:3:15"},"nodeType":"YulFunctionCall","src":"32394:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"32386:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"32466:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32479:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32490:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32475:3:15"},"nodeType":"YulFunctionCall","src":"32475:17:15"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"32423:42:15"},"nodeType":"YulFunctionCall","src":"32423:70:15"},"nodeType":"YulExpressionStatement","src":"32423:70:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"32547:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32560:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32571:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32556:3:15"},"nodeType":"YulFunctionCall","src":"32556:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"32503:43:15"},"nodeType":"YulFunctionCall","src":"32503:72:15"},"nodeType":"YulExpressionStatement","src":"32503:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"32629:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32642:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32653:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32638:3:15"},"nodeType":"YulFunctionCall","src":"32638:18:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"32585:43:15"},"nodeType":"YulFunctionCall","src":"32585:72:15"},"nodeType":"YulExpressionStatement","src":"32585:72:15"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32678:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"32689:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32674:3:15"},"nodeType":"YulFunctionCall","src":"32674:18:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"32698:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"32704:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"32694:3:15"},"nodeType":"YulFunctionCall","src":"32694:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32667:6:15"},"nodeType":"YulFunctionCall","src":"32667:48:15"},"nodeType":"YulExpressionStatement","src":"32667:48:15"},{"nodeType":"YulAssignment","src":"32724:96:15","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"32798:6:15"},{"name":"value4","nodeType":"YulIdentifier","src":"32806:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"32815:4:15"}],"functionName":{"name":"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"32732:65:15"},"nodeType":"YulFunctionCall","src":"32732:88:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"32724:4:15"}]}]},"name":"abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"32316:9:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"32328:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"32336:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"32344:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"32352:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"32360:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"32371:4:15","type":""}],"src":"32165:662:15"},{"body":{"nodeType":"YulBlock","src":"32861:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"32878:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"32881:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32871:6:15"},"nodeType":"YulFunctionCall","src":"32871:88:15"},"nodeType":"YulExpressionStatement","src":"32871:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"32975:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"32978:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32968:6:15"},"nodeType":"YulFunctionCall","src":"32968:15:15"},"nodeType":"YulExpressionStatement","src":"32968:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"32999:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"33002:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"32992:6:15"},"nodeType":"YulFunctionCall","src":"32992:15:15"},"nodeType":"YulExpressionStatement","src":"32992:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"32833:180:15"},{"body":{"nodeType":"YulBlock","src":"33070:269:15","statements":[{"nodeType":"YulAssignment","src":"33080:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"33094:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"33100:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"33090:3:15"},"nodeType":"YulFunctionCall","src":"33090:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"33080:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"33111:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"33141:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"33147:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"33137:3:15"},"nodeType":"YulFunctionCall","src":"33137:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"33115:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"33188:51:15","statements":[{"nodeType":"YulAssignment","src":"33202:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"33216:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"33224:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"33212:3:15"},"nodeType":"YulFunctionCall","src":"33212:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"33202:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"33168:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"33161:6:15"},"nodeType":"YulFunctionCall","src":"33161:26:15"},"nodeType":"YulIf","src":"33158:81:15"},{"body":{"nodeType":"YulBlock","src":"33291:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"33305:16:15"},"nodeType":"YulFunctionCall","src":"33305:18:15"},"nodeType":"YulExpressionStatement","src":"33305:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"33255:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"33278:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"33286:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"33275:2:15"},"nodeType":"YulFunctionCall","src":"33275:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"33252:2:15"},"nodeType":"YulFunctionCall","src":"33252:38:15"},"nodeType":"YulIf","src":"33249:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"33054:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"33063:6:15","type":""}],"src":"33019:320:15"},{"body":{"nodeType":"YulBlock","src":"33451:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"33473:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"33481:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33469:3:15"},"nodeType":"YulFunctionCall","src":"33469:14:15"},{"hexValue":"50617963726573743a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"33485:24:15","type":"","value":"Paycrest: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33462:6:15"},"nodeType":"YulFunctionCall","src":"33462:48:15"},"nodeType":"YulExpressionStatement","src":"33462:48:15"}]},"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"33443:6:15","type":""}],"src":"33345:172:15"},{"body":{"nodeType":"YulBlock","src":"33669:220:15","statements":[{"nodeType":"YulAssignment","src":"33679:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33745:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"33750:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"33686:58:15"},"nodeType":"YulFunctionCall","src":"33686:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"33679:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33851:3:15"}],"functionName":{"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulIdentifier","src":"33762:88:15"},"nodeType":"YulFunctionCall","src":"33762:93:15"},"nodeType":"YulExpressionStatement","src":"33762:93:15"},{"nodeType":"YulAssignment","src":"33864:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33875:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"33880:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33871:3:15"},"nodeType":"YulFunctionCall","src":"33871:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"33864:3:15"}]}]},"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"33657:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"33665:3:15","type":""}],"src":"33523:366:15"},{"body":{"nodeType":"YulBlock","src":"34066:248:15","statements":[{"nodeType":"YulAssignment","src":"34076:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34088:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34099:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34084:3:15"},"nodeType":"YulFunctionCall","src":"34084:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34076:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34123:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34134:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34119:3:15"},"nodeType":"YulFunctionCall","src":"34119:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"34142:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"34148:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"34138:3:15"},"nodeType":"YulFunctionCall","src":"34138:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34112:6:15"},"nodeType":"YulFunctionCall","src":"34112:47:15"},"nodeType":"YulExpressionStatement","src":"34112:47:15"},{"nodeType":"YulAssignment","src":"34168:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"34302:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"34176:124:15"},"nodeType":"YulFunctionCall","src":"34176:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34168:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"34046:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"34061:4:15","type":""}],"src":"33895:419:15"},{"body":{"nodeType":"YulBlock","src":"34468:282:15","statements":[{"nodeType":"YulAssignment","src":"34478:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34490:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34501:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34486:3:15"},"nodeType":"YulFunctionCall","src":"34486:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34478:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"34558:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34571:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34582:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34567:3:15"},"nodeType":"YulFunctionCall","src":"34567:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"34514:43:15"},"nodeType":"YulFunctionCall","src":"34514:71:15"},"nodeType":"YulExpressionStatement","src":"34514:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"34639:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34652:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34663:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34648:3:15"},"nodeType":"YulFunctionCall","src":"34648:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"34595:43:15"},"nodeType":"YulFunctionCall","src":"34595:72:15"},"nodeType":"YulExpressionStatement","src":"34595:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"34715:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34728:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"34739:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34724:3:15"},"nodeType":"YulFunctionCall","src":"34724:18:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"34677:37:15"},"nodeType":"YulFunctionCall","src":"34677:66:15"},"nodeType":"YulExpressionStatement","src":"34677:66:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"34424:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"34436:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"34444:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"34452:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"34463:4:15","type":""}],"src":"34320:430:15"},{"body":{"nodeType":"YulBlock","src":"34862:127:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"34884:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"34892:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34880:3:15"},"nodeType":"YulFunctionCall","src":"34880:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"34896:34:15","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34873:6:15"},"nodeType":"YulFunctionCall","src":"34873:58:15"},"nodeType":"YulExpressionStatement","src":"34873:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"34952:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"34960:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34948:3:15"},"nodeType":"YulFunctionCall","src":"34948:15:15"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"34965:16:15","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34941:6:15"},"nodeType":"YulFunctionCall","src":"34941:41:15"},"nodeType":"YulExpressionStatement","src":"34941:41:15"}]},"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"34854:6:15","type":""}],"src":"34756:233:15"},{"body":{"nodeType":"YulBlock","src":"35141:220:15","statements":[{"nodeType":"YulAssignment","src":"35151:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35217:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"35222:2:15","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"35158:58:15"},"nodeType":"YulFunctionCall","src":"35158:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"35151:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35323:3:15"}],"functionName":{"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nodeType":"YulIdentifier","src":"35234:88:15"},"nodeType":"YulFunctionCall","src":"35234:93:15"},"nodeType":"YulExpressionStatement","src":"35234:93:15"},{"nodeType":"YulAssignment","src":"35336:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35347:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"35352:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35343:3:15"},"nodeType":"YulFunctionCall","src":"35343:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"35336:3:15"}]}]},"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"35129:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"35137:3:15","type":""}],"src":"34995:366:15"},{"body":{"nodeType":"YulBlock","src":"35538:248:15","statements":[{"nodeType":"YulAssignment","src":"35548:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35560:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35571:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35556:3:15"},"nodeType":"YulFunctionCall","src":"35556:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35548:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35595:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"35606:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35591:3:15"},"nodeType":"YulFunctionCall","src":"35591:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"35614:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"35620:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"35610:3:15"},"nodeType":"YulFunctionCall","src":"35610:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35584:6:15"},"nodeType":"YulFunctionCall","src":"35584:47:15"},"nodeType":"YulExpressionStatement","src":"35584:47:15"},{"nodeType":"YulAssignment","src":"35640:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"35774:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"35648:124:15"},"nodeType":"YulFunctionCall","src":"35648:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"35640:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"35518:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"35533:4:15","type":""}],"src":"35367:419:15"},{"body":{"nodeType":"YulBlock","src":"35845:32:15","statements":[{"nodeType":"YulAssignment","src":"35855:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"35866:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"35855:7:15"}]}]},"name":"cleanup_t_rational_1_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"35827:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"35837:7:15","type":""}],"src":"35792:85:15"},{"body":{"nodeType":"YulBlock","src":"35926:43:15","statements":[{"nodeType":"YulAssignment","src":"35936:27:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"35951:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"35958:4:15","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"35947:3:15"},"nodeType":"YulFunctionCall","src":"35947:16:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"35936:7:15"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"35908:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"35918:7:15","type":""}],"src":"35883:86:15"},{"body":{"nodeType":"YulBlock","src":"36041:88:15","statements":[{"nodeType":"YulAssignment","src":"36051:72:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36115:5:15"}],"functionName":{"name":"cleanup_t_rational_1_by_1","nodeType":"YulIdentifier","src":"36089:25:15"},"nodeType":"YulFunctionCall","src":"36089:32:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"36080:8:15"},"nodeType":"YulFunctionCall","src":"36080:42:15"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"36064:15:15"},"nodeType":"YulFunctionCall","src":"36064:59:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"36051:9:15"}]}]},"name":"convert_t_rational_1_by_1_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36021:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"36031:9:15","type":""}],"src":"35975:154:15"},{"body":{"nodeType":"YulBlock","src":"36206:72:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36223:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36265:5:15"}],"functionName":{"name":"convert_t_rational_1_by_1_to_t_uint8","nodeType":"YulIdentifier","src":"36228:36:15"},"nodeType":"YulFunctionCall","src":"36228:43:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"36216:6:15"},"nodeType":"YulFunctionCall","src":"36216:56:15"},"nodeType":"YulExpressionStatement","src":"36216:56:15"}]},"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36194:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"36201:3:15","type":""}],"src":"36135:143:15"},{"body":{"nodeType":"YulBlock","src":"36388:130:15","statements":[{"nodeType":"YulAssignment","src":"36398:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36410:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36421:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36406:3:15"},"nodeType":"YulFunctionCall","src":"36406:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"36398:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"36484:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"36497:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"36508:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36493:3:15"},"nodeType":"YulFunctionCall","src":"36493:17:15"}],"functionName":{"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"36434:49:15"},"nodeType":"YulFunctionCall","src":"36434:77:15"},"nodeType":"YulExpressionStatement","src":"36434:77:15"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"36360:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"36372:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"36383:4:15","type":""}],"src":"36284:234:15"},{"body":{"nodeType":"YulBlock","src":"36589:31:15","statements":[{"nodeType":"YulAssignment","src":"36600:13:15","value":{"name":"len","nodeType":"YulIdentifier","src":"36610:3:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"36600:6:15"}]}]},"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36567:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"36574:3:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"36582:6:15","type":""}],"src":"36524:96:15"},{"body":{"nodeType":"YulBlock","src":"36679:87:15","statements":[{"nodeType":"YulAssignment","src":"36689:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"36697:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"36689:4:15"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"36717:1:15","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"36720:3:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"36710:6:15"},"nodeType":"YulFunctionCall","src":"36710:14:15"},"nodeType":"YulExpressionStatement","src":"36710:14:15"},{"nodeType":"YulAssignment","src":"36733:26:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"36751:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"36754:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"36741:9:15"},"nodeType":"YulFunctionCall","src":"36741:18:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"36733:4:15"}]}]},"name":"array_dataslot_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"36666:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"36674:4:15","type":""}],"src":"36626:140:15"},{"body":{"nodeType":"YulBlock","src":"36816:49:15","statements":[{"nodeType":"YulAssignment","src":"36826:33:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36844:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"36851:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36840:3:15"},"nodeType":"YulFunctionCall","src":"36840:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"36856:2:15","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"36836:3:15"},"nodeType":"YulFunctionCall","src":"36836:23:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"36826:6:15"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36799:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"36809:6:15","type":""}],"src":"36772:93:15"},{"body":{"nodeType":"YulBlock","src":"36924:54:15","statements":[{"nodeType":"YulAssignment","src":"36934:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"36959:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"36965:5:15"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"36955:3:15"},"nodeType":"YulFunctionCall","src":"36955:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"36934:8:15"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"36899:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"36905:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"36915:8:15","type":""}],"src":"36871:107:15"},{"body":{"nodeType":"YulBlock","src":"37060:317:15","statements":[{"nodeType":"YulVariableDeclaration","src":"37070:35:15","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"37091:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"37103:1:15","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"37087:3:15"},"nodeType":"YulFunctionCall","src":"37087:18:15"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"37074:9:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"37114:109:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"37145:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"37156:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"37126:18:15"},"nodeType":"YulFunctionCall","src":"37126:97:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"37118:4:15","type":""}]},{"nodeType":"YulAssignment","src":"37232:51:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"37263:9:15"},{"name":"toInsert","nodeType":"YulIdentifier","src":"37274:8:15"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"37244:18:15"},"nodeType":"YulFunctionCall","src":"37244:39:15"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"37232:8:15"}]},{"nodeType":"YulAssignment","src":"37292:30:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37305:5:15"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"37316:4:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"37312:3:15"},"nodeType":"YulFunctionCall","src":"37312:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"37301:3:15"},"nodeType":"YulFunctionCall","src":"37301:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"37292:5:15"}]},{"nodeType":"YulAssignment","src":"37331:40:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37344:5:15"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"37355:8:15"},{"name":"mask","nodeType":"YulIdentifier","src":"37365:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"37351:3:15"},"nodeType":"YulFunctionCall","src":"37351:19:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"37341:2:15"},"nodeType":"YulFunctionCall","src":"37341:30:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"37331:6:15"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37021:5:15","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"37028:10:15","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"37040:8:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"37053:6:15","type":""}],"src":"36984:393:15"},{"body":{"nodeType":"YulBlock","src":"37443:82:15","statements":[{"nodeType":"YulAssignment","src":"37453:66:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37511:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"37493:17:15"},"nodeType":"YulFunctionCall","src":"37493:24:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"37484:8:15"},"nodeType":"YulFunctionCall","src":"37484:34:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"37466:17:15"},"nodeType":"YulFunctionCall","src":"37466:53:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"37453:9:15"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37423:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"37433:9:15","type":""}],"src":"37383:142:15"},{"body":{"nodeType":"YulBlock","src":"37578:28:15","statements":[{"nodeType":"YulAssignment","src":"37588:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"37595:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"37588:3:15"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"37564:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"37574:3:15","type":""}],"src":"37531:75:15"},{"body":{"nodeType":"YulBlock","src":"37688:193:15","statements":[{"nodeType":"YulVariableDeclaration","src":"37698:63:15","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"37753:7:15"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"37722:30:15"},"nodeType":"YulFunctionCall","src":"37722:39:15"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"37702:16:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"37777:4:15"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"37817:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"37811:5:15"},"nodeType":"YulFunctionCall","src":"37811:11:15"},{"name":"offset","nodeType":"YulIdentifier","src":"37824:6:15"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"37856:16:15"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"37832:23:15"},"nodeType":"YulFunctionCall","src":"37832:41:15"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"37783:27:15"},"nodeType":"YulFunctionCall","src":"37783:91:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"37770:6:15"},"nodeType":"YulFunctionCall","src":"37770:105:15"},"nodeType":"YulExpressionStatement","src":"37770:105:15"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"37665:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"37671:6:15","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"37679:7:15","type":""}],"src":"37612:269:15"},{"body":{"nodeType":"YulBlock","src":"37936:24:15","statements":[{"nodeType":"YulAssignment","src":"37946:8:15","value":{"kind":"number","nodeType":"YulLiteral","src":"37953:1:15","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"37946:3:15"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"37932:3:15","type":""}],"src":"37887:73:15"},{"body":{"nodeType":"YulBlock","src":"38019:136:15","statements":[{"nodeType":"YulVariableDeclaration","src":"38029:46:15","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"38043:30:15"},"nodeType":"YulFunctionCall","src":"38043:32:15"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"38033:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"38128:4:15"},{"name":"offset","nodeType":"YulIdentifier","src":"38134:6:15"},{"name":"zero_0","nodeType":"YulIdentifier","src":"38142:6:15"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"38084:43:15"},"nodeType":"YulFunctionCall","src":"38084:65:15"},"nodeType":"YulExpressionStatement","src":"38084:65:15"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"38005:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"38011:6:15","type":""}],"src":"37966:189:15"},{"body":{"nodeType":"YulBlock","src":"38211:136:15","statements":[{"body":{"nodeType":"YulBlock","src":"38278:63:15","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"38322:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"38329:1:15","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"38292:29:15"},"nodeType":"YulFunctionCall","src":"38292:39:15"},"nodeType":"YulExpressionStatement","src":"38292:39:15"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"38231:5:15"},{"name":"end","nodeType":"YulIdentifier","src":"38238:3:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"38228:2:15"},"nodeType":"YulFunctionCall","src":"38228:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"38243:26:15","statements":[{"nodeType":"YulAssignment","src":"38245:22:15","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"38258:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"38265:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38254:3:15"},"nodeType":"YulFunctionCall","src":"38254:13:15"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"38245:5:15"}]}]},"pre":{"nodeType":"YulBlock","src":"38225:2:15","statements":[]},"src":"38221:120:15"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"38199:5:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"38206:3:15","type":""}],"src":"38161:186:15"},{"body":{"nodeType":"YulBlock","src":"38431:463:15","statements":[{"body":{"nodeType":"YulBlock","src":"38457:430:15","statements":[{"nodeType":"YulVariableDeclaration","src":"38471:53:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"38518:5:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"38487:30:15"},"nodeType":"YulFunctionCall","src":"38487:37:15"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"38475:8:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"38537:63:15","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"38560:8:15"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"38588:10:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"38570:17:15"},"nodeType":"YulFunctionCall","src":"38570:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38556:3:15"},"nodeType":"YulFunctionCall","src":"38556:44:15"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"38541:11:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"38757:27:15","statements":[{"nodeType":"YulAssignment","src":"38759:23:15","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"38774:8:15"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"38759:11:15"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"38741:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"38753:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"38738:2:15"},"nodeType":"YulFunctionCall","src":"38738:18:15"},"nodeType":"YulIf","src":"38735:49:15"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"38826:11:15"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"38843:8:15"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"38871:3:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"38853:17:15"},"nodeType":"YulFunctionCall","src":"38853:22:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38839:3:15"},"nodeType":"YulFunctionCall","src":"38839:37:15"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"38797:28:15"},"nodeType":"YulFunctionCall","src":"38797:80:15"},"nodeType":"YulExpressionStatement","src":"38797:80:15"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"38448:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"38453:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"38445:2:15"},"nodeType":"YulFunctionCall","src":"38445:11:15"},"nodeType":"YulIf","src":"38442:445:15"}]},"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"38407:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"38414:3:15","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"38419:10:15","type":""}],"src":"38353:541:15"},{"body":{"nodeType":"YulBlock","src":"38963:54:15","statements":[{"nodeType":"YulAssignment","src":"38973:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"38998:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"39004:5:15"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"38994:3:15"},"nodeType":"YulFunctionCall","src":"38994:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"38973:8:15"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"38938:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"38944:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"38954:8:15","type":""}],"src":"38900:117:15"},{"body":{"nodeType":"YulBlock","src":"39074:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"39084:68:15","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"39133:1:15","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"39136:5:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"39129:3:15"},"nodeType":"YulFunctionCall","src":"39129:13:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"39148:1:15","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"39144:3:15"},"nodeType":"YulFunctionCall","src":"39144:6:15"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"39100:28:15"},"nodeType":"YulFunctionCall","src":"39100:51:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"39096:3:15"},"nodeType":"YulFunctionCall","src":"39096:56:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"39088:4:15","type":""}]},{"nodeType":"YulAssignment","src":"39161:25:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"39175:4:15"},{"name":"mask","nodeType":"YulIdentifier","src":"39181:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"39171:3:15"},"nodeType":"YulFunctionCall","src":"39171:15:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"39161:6:15"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"39051:4:15","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"39057:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"39067:6:15","type":""}],"src":"39023:169:15"},{"body":{"nodeType":"YulBlock","src":"39278:214:15","statements":[{"nodeType":"YulAssignment","src":"39411:37:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"39438:4:15"},{"name":"len","nodeType":"YulIdentifier","src":"39444:3:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"39419:18:15"},"nodeType":"YulFunctionCall","src":"39419:29:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"39411:4:15"}]},{"nodeType":"YulAssignment","src":"39457:29:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"39468:4:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"39478:1:15","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"39481:3:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"39474:3:15"},"nodeType":"YulFunctionCall","src":"39474:11:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"39465:2:15"},"nodeType":"YulFunctionCall","src":"39465:21:15"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"39457:4:15"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"39259:4:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"39265:3:15","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"39273:4:15","type":""}],"src":"39197:295:15"},{"body":{"nodeType":"YulBlock","src":"39594:1301:15","statements":[{"nodeType":"YulVariableDeclaration","src":"39605:57:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"39653:3:15"},{"name":"len","nodeType":"YulIdentifier","src":"39658:3:15"}],"functionName":{"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"39619:33:15"},"nodeType":"YulFunctionCall","src":"39619:43:15"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"39609:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"39747:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"39749:16:15"},"nodeType":"YulFunctionCall","src":"39749:18:15"},"nodeType":"YulExpressionStatement","src":"39749:18:15"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"39719:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"39727:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"39716:2:15"},"nodeType":"YulFunctionCall","src":"39716:30:15"},"nodeType":"YulIf","src":"39713:56:15"},{"nodeType":"YulVariableDeclaration","src":"39779:52:15","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"39825:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"39819:5:15"},"nodeType":"YulFunctionCall","src":"39819:11:15"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"39793:25:15"},"nodeType":"YulFunctionCall","src":"39793:38:15"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"39783:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"39923:4:15"},{"name":"oldLen","nodeType":"YulIdentifier","src":"39929:6:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"39937:6:15"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulIdentifier","src":"39878:44:15"},"nodeType":"YulFunctionCall","src":"39878:66:15"},"nodeType":"YulExpressionStatement","src":"39878:66:15"},{"nodeType":"YulVariableDeclaration","src":"39954:18:15","value":{"kind":"number","nodeType":"YulLiteral","src":"39971:1:15","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"39958:9:15","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"40019:624:15","statements":[{"nodeType":"YulVariableDeclaration","src":"40033:37:15","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"40052:6:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"40064:4:15","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"40060:3:15"},"nodeType":"YulFunctionCall","src":"40060:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"40048:3:15"},"nodeType":"YulFunctionCall","src":"40048:22:15"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"40037:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"40084:50:15","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"40129:4:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"40098:30:15"},"nodeType":"YulFunctionCall","src":"40098:36:15"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"40088:6:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"40147:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"40156:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"40151:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"40215:170:15","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"40240:6:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"40265:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"40270:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40261:3:15"},"nodeType":"YulFunctionCall","src":"40261:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"40248:12:15"},"nodeType":"YulFunctionCall","src":"40248:33:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"40233:6:15"},"nodeType":"YulFunctionCall","src":"40233:49:15"},"nodeType":"YulExpressionStatement","src":"40233:49:15"},{"nodeType":"YulAssignment","src":"40299:24:15","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"40313:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"40321:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40309:3:15"},"nodeType":"YulFunctionCall","src":"40309:14:15"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"40299:6:15"}]},{"nodeType":"YulAssignment","src":"40340:31:15","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"40357:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"40368:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40353:3:15"},"nodeType":"YulFunctionCall","src":"40353:18:15"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"40340:9:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"40181:1:15"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"40184:7:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"40178:2:15"},"nodeType":"YulFunctionCall","src":"40178:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"40193:21:15","statements":[{"nodeType":"YulAssignment","src":"40195:17:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"40204:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"40207:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40200:3:15"},"nodeType":"YulFunctionCall","src":"40200:12:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"40195:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"40174:3:15","statements":[]},"src":"40170:215:15"},{"body":{"nodeType":"YulBlock","src":"40421:163:15","statements":[{"nodeType":"YulVariableDeclaration","src":"40439:50:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"40473:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"40478:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40469:3:15"},"nodeType":"YulFunctionCall","src":"40469:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"40456:12:15"},"nodeType":"YulFunctionCall","src":"40456:33:15"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"40443:9:15","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"40513:6:15"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"40540:9:15"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"40555:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"40563:4:15","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"40551:3:15"},"nodeType":"YulFunctionCall","src":"40551:17:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"40521:18:15"},"nodeType":"YulFunctionCall","src":"40521:48:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"40506:6:15"},"nodeType":"YulFunctionCall","src":"40506:64:15"},"nodeType":"YulExpressionStatement","src":"40506:64:15"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"40404:7:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"40413:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"40401:2:15"},"nodeType":"YulFunctionCall","src":"40401:19:15"},"nodeType":"YulIf","src":"40398:186:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"40604:4:15"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"40618:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"40626:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"40614:3:15"},"nodeType":"YulFunctionCall","src":"40614:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"40630:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40610:3:15"},"nodeType":"YulFunctionCall","src":"40610:22:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"40597:6:15"},"nodeType":"YulFunctionCall","src":"40597:36:15"},"nodeType":"YulExpressionStatement","src":"40597:36:15"}]},"nodeType":"YulCase","src":"40012:631:15","value":{"kind":"number","nodeType":"YulLiteral","src":"40017:1:15","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"40660:229:15","statements":[{"nodeType":"YulVariableDeclaration","src":"40674:14:15","value":{"kind":"number","nodeType":"YulLiteral","src":"40687:1:15","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"40678:5:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"40711:74:15","statements":[{"nodeType":"YulAssignment","src":"40729:42:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"40755:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"40760:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40751:3:15"},"nodeType":"YulFunctionCall","src":"40751:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"40738:12:15"},"nodeType":"YulFunctionCall","src":"40738:33:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"40729:5:15"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"40704:6:15"},"nodeType":"YulIf","src":"40701:84:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"40805:4:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"40864:5:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"40871:6:15"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"40811:52:15"},"nodeType":"YulFunctionCall","src":"40811:67:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"40798:6:15"},"nodeType":"YulFunctionCall","src":"40798:81:15"},"nodeType":"YulExpressionStatement","src":"40798:81:15"}]},"nodeType":"YulCase","src":"40652:237:15","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"39992:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"40000:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"39989:2:15"},"nodeType":"YulFunctionCall","src":"39989:14:15"},"nodeType":"YulSwitch","src":"39982:907:15"}]},"name":"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"39578:4:15","type":""},{"name":"src","nodeType":"YulTypedName","src":"39584:3:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"39589:3:15","type":""}],"src":"39497:1398:15"},{"body":{"nodeType":"YulBlock","src":"41023:214:15","statements":[{"nodeType":"YulAssignment","src":"41033:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"41098:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"41103:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"41040:57:15"},"nodeType":"YulFunctionCall","src":"41040:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"41033:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"41157:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"41164:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"41169:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"41120:36:15"},"nodeType":"YulFunctionCall","src":"41120:56:15"},"nodeType":"YulExpressionStatement","src":"41120:56:15"},{"nodeType":"YulAssignment","src":"41185:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"41196:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"41223:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"41201:21:15"},"nodeType":"YulFunctionCall","src":"41201:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41192:3:15"},"nodeType":"YulFunctionCall","src":"41192:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"41185:3:15"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"40996:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"41003:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"41011:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"41019:3:15","type":""}],"src":"40923:314:15"},{"body":{"nodeType":"YulBlock","src":"41369:203:15","statements":[{"nodeType":"YulAssignment","src":"41379:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"41391:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"41402:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41387:3:15"},"nodeType":"YulFunctionCall","src":"41387:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"41379:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"41426:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"41437:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41422:3:15"},"nodeType":"YulFunctionCall","src":"41422:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"41445:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"41451:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"41441:3:15"},"nodeType":"YulFunctionCall","src":"41441:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"41415:6:15"},"nodeType":"YulFunctionCall","src":"41415:47:15"},"nodeType":"YulExpressionStatement","src":"41415:47:15"},{"nodeType":"YulAssignment","src":"41471:94:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"41543:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"41551:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"41560:4:15"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"41479:63:15"},"nodeType":"YulFunctionCall","src":"41479:86:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"41471:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"41333:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"41345:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"41353:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"41364:4:15","type":""}],"src":"41243:329:15"},{"body":{"nodeType":"YulBlock","src":"41684:119:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"41706:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"41714:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41702:3:15"},"nodeType":"YulFunctionCall","src":"41702:14:15"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"41718:34:15","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"41695:6:15"},"nodeType":"YulFunctionCall","src":"41695:58:15"},"nodeType":"YulExpressionStatement","src":"41695:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"41774:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"41782:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41770:3:15"},"nodeType":"YulFunctionCall","src":"41770:15:15"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"41787:8:15","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"41763:6:15"},"nodeType":"YulFunctionCall","src":"41763:33:15"},"nodeType":"YulExpressionStatement","src":"41763:33:15"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"41676:6:15","type":""}],"src":"41578:225:15"},{"body":{"nodeType":"YulBlock","src":"41955:220:15","statements":[{"nodeType":"YulAssignment","src":"41965:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42031:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"42036:2:15","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"41972:58:15"},"nodeType":"YulFunctionCall","src":"41972:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"41965:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42137:3:15"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"42048:88:15"},"nodeType":"YulFunctionCall","src":"42048:93:15"},"nodeType":"YulExpressionStatement","src":"42048:93:15"},{"nodeType":"YulAssignment","src":"42150:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42161:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"42166:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42157:3:15"},"nodeType":"YulFunctionCall","src":"42157:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"42150:3:15"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"41943:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"41951:3:15","type":""}],"src":"41809:366:15"},{"body":{"nodeType":"YulBlock","src":"42352:248:15","statements":[{"nodeType":"YulAssignment","src":"42362:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42374:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42385:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42370:3:15"},"nodeType":"YulFunctionCall","src":"42370:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"42362:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42409:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42420:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42405:3:15"},"nodeType":"YulFunctionCall","src":"42405:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"42428:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"42434:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"42424:3:15"},"nodeType":"YulFunctionCall","src":"42424:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"42398:6:15"},"nodeType":"YulFunctionCall","src":"42398:47:15"},"nodeType":"YulExpressionStatement","src":"42398:47:15"},{"nodeType":"YulAssignment","src":"42454:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"42588:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"42462:124:15"},"nodeType":"YulFunctionCall","src":"42462:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"42454:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"42332:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"42347:4:15","type":""}],"src":"42181:419:15"},{"body":{"nodeType":"YulBlock","src":"42732:206:15","statements":[{"nodeType":"YulAssignment","src":"42742:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42754:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42765:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42750:3:15"},"nodeType":"YulFunctionCall","src":"42750:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"42742:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"42822:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42835:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42846:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42831:3:15"},"nodeType":"YulFunctionCall","src":"42831:17:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"42778:43:15"},"nodeType":"YulFunctionCall","src":"42778:71:15"},"nodeType":"YulExpressionStatement","src":"42778:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"42903:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42916:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"42927:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42912:3:15"},"nodeType":"YulFunctionCall","src":"42912:18:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"42859:43:15"},"nodeType":"YulFunctionCall","src":"42859:72:15"},"nodeType":"YulExpressionStatement","src":"42859:72:15"}]},"name":"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"42696:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"42708:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"42716:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"42727:4:15","type":""}],"src":"42606:332:15"},{"body":{"nodeType":"YulBlock","src":"42989:149:15","statements":[{"nodeType":"YulAssignment","src":"42999:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"43022:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"43004:17:15"},"nodeType":"YulFunctionCall","src":"43004:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"42999:1:15"}]},{"nodeType":"YulAssignment","src":"43033:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"43056:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"43038:17:15"},"nodeType":"YulFunctionCall","src":"43038:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"43033:1:15"}]},{"nodeType":"YulAssignment","src":"43067:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"43079:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"43082:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"43075:3:15"},"nodeType":"YulFunctionCall","src":"43075:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"43067:4:15"}]},{"body":{"nodeType":"YulBlock","src":"43109:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"43111:16:15"},"nodeType":"YulFunctionCall","src":"43111:18:15"},"nodeType":"YulExpressionStatement","src":"43111:18:15"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"43100:4:15"},{"name":"x","nodeType":"YulIdentifier","src":"43106:1:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"43097:2:15"},"nodeType":"YulFunctionCall","src":"43097:11:15"},"nodeType":"YulIf","src":"43094:37:15"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"42975:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"42978:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"42984:4:15","type":""}],"src":"42944:194:15"},{"body":{"nodeType":"YulBlock","src":"43192:362:15","statements":[{"nodeType":"YulAssignment","src":"43202:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"43225:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"43207:17:15"},"nodeType":"YulFunctionCall","src":"43207:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"43202:1:15"}]},{"nodeType":"YulAssignment","src":"43236:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"43259:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"43241:17:15"},"nodeType":"YulFunctionCall","src":"43241:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"43236:1:15"}]},{"nodeType":"YulVariableDeclaration","src":"43270:28:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"43293:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"43296:1:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"43289:3:15"},"nodeType":"YulFunctionCall","src":"43289:9:15"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"43274:11:15","type":""}]},{"nodeType":"YulAssignment","src":"43307:41:15","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"43336:11:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"43318:17:15"},"nodeType":"YulFunctionCall","src":"43318:30:15"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"43307:7:15"}]},{"body":{"nodeType":"YulBlock","src":"43525:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"43527:16:15"},"nodeType":"YulFunctionCall","src":"43527:18:15"},"nodeType":"YulExpressionStatement","src":"43527:18:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"43458:1:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"43451:6:15"},"nodeType":"YulFunctionCall","src":"43451:9:15"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"43481:1:15"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"43488:7:15"},{"name":"x","nodeType":"YulIdentifier","src":"43497:1:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"43484:3:15"},"nodeType":"YulFunctionCall","src":"43484:15:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"43478:2:15"},"nodeType":"YulFunctionCall","src":"43478:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"43431:2:15"},"nodeType":"YulFunctionCall","src":"43431:83:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"43411:6:15"},"nodeType":"YulFunctionCall","src":"43411:113:15"},"nodeType":"YulIf","src":"43408:139:15"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"43175:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"43178:1:15","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"43184:7:15","type":""}],"src":"43144:410:15"},{"body":{"nodeType":"YulBlock","src":"43588:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"43605:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"43608:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43598:6:15"},"nodeType":"YulFunctionCall","src":"43598:88:15"},"nodeType":"YulExpressionStatement","src":"43598:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"43702:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"43705:4:15","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43695:6:15"},"nodeType":"YulFunctionCall","src":"43695:15:15"},"nodeType":"YulExpressionStatement","src":"43695:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"43726:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"43729:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"43719:6:15"},"nodeType":"YulFunctionCall","src":"43719:15:15"},"nodeType":"YulExpressionStatement","src":"43719:15:15"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"43560:180:15"},{"body":{"nodeType":"YulBlock","src":"43788:143:15","statements":[{"nodeType":"YulAssignment","src":"43798:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"43821:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"43803:17:15"},"nodeType":"YulFunctionCall","src":"43803:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"43798:1:15"}]},{"nodeType":"YulAssignment","src":"43832:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"43855:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"43837:17:15"},"nodeType":"YulFunctionCall","src":"43837:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"43832:1:15"}]},{"body":{"nodeType":"YulBlock","src":"43879:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"43881:16:15"},"nodeType":"YulFunctionCall","src":"43881:18:15"},"nodeType":"YulExpressionStatement","src":"43881:18:15"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"43876:1:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"43869:6:15"},"nodeType":"YulFunctionCall","src":"43869:9:15"},"nodeType":"YulIf","src":"43866:35:15"},{"nodeType":"YulAssignment","src":"43911:14:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"43920:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"43923:1:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"43916:3:15"},"nodeType":"YulFunctionCall","src":"43916:9:15"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"43911:1:15"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"43777:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"43780:1:15","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"43786:1:15","type":""}],"src":"43746:185:15"},{"body":{"nodeType":"YulBlock","src":"43981:147:15","statements":[{"nodeType":"YulAssignment","src":"43991:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44014:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"43996:17:15"},"nodeType":"YulFunctionCall","src":"43996:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"43991:1:15"}]},{"nodeType":"YulAssignment","src":"44025:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"44048:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"44030:17:15"},"nodeType":"YulFunctionCall","src":"44030:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"44025:1:15"}]},{"nodeType":"YulAssignment","src":"44059:16:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44070:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"44073:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44066:3:15"},"nodeType":"YulFunctionCall","src":"44066:9:15"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"44059:3:15"}]},{"body":{"nodeType":"YulBlock","src":"44099:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"44101:16:15"},"nodeType":"YulFunctionCall","src":"44101:18:15"},"nodeType":"YulExpressionStatement","src":"44101:18:15"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"44091:1:15"},{"name":"sum","nodeType":"YulIdentifier","src":"44094:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"44088:2:15"},"nodeType":"YulFunctionCall","src":"44088:10:15"},"nodeType":"YulIf","src":"44085:36:15"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"43968:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"43971:1:15","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"43977:3:15","type":""}],"src":"43937:191:15"},{"body":{"nodeType":"YulBlock","src":"44240:61:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"44262:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"44270:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44258:3:15"},"nodeType":"YulFunctionCall","src":"44258:14:15"},{"hexValue":"546f6b656e4e6f74537570706f72746564","kind":"string","nodeType":"YulLiteral","src":"44274:19:15","type":"","value":"TokenNotSupported"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"44251:6:15"},"nodeType":"YulFunctionCall","src":"44251:43:15"},"nodeType":"YulExpressionStatement","src":"44251:43:15"}]},"name":"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"44232:6:15","type":""}],"src":"44134:167:15"},{"body":{"nodeType":"YulBlock","src":"44453:220:15","statements":[{"nodeType":"YulAssignment","src":"44463:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44529:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"44534:2:15","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"44470:58:15"},"nodeType":"YulFunctionCall","src":"44470:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"44463:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44635:3:15"}],"functionName":{"name":"store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1","nodeType":"YulIdentifier","src":"44546:88:15"},"nodeType":"YulFunctionCall","src":"44546:93:15"},"nodeType":"YulExpressionStatement","src":"44546:93:15"},{"nodeType":"YulAssignment","src":"44648:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44659:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"44664:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44655:3:15"},"nodeType":"YulFunctionCall","src":"44655:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"44648:3:15"}]}]},"name":"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"44441:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"44449:3:15","type":""}],"src":"44307:366:15"},{"body":{"nodeType":"YulBlock","src":"44850:248:15","statements":[{"nodeType":"YulAssignment","src":"44860:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"44872:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"44883:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44868:3:15"},"nodeType":"YulFunctionCall","src":"44868:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"44860:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"44907:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"44918:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44903:3:15"},"nodeType":"YulFunctionCall","src":"44903:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"44926:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"44932:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"44922:3:15"},"nodeType":"YulFunctionCall","src":"44922:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"44896:6:15"},"nodeType":"YulFunctionCall","src":"44896:47:15"},"nodeType":"YulExpressionStatement","src":"44896:47:15"},{"nodeType":"YulAssignment","src":"44952:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"45086:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"44960:124:15"},"nodeType":"YulFunctionCall","src":"44960:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"44952:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"44830:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"44845:4:15","type":""}],"src":"44679:419:15"},{"body":{"nodeType":"YulBlock","src":"45210:56:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"45232:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"45240:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45228:3:15"},"nodeType":"YulFunctionCall","src":"45228:14:15"},{"hexValue":"416d6f756e7449735a65726f","kind":"string","nodeType":"YulLiteral","src":"45244:14:15","type":"","value":"AmountIsZero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45221:6:15"},"nodeType":"YulFunctionCall","src":"45221:38:15"},"nodeType":"YulExpressionStatement","src":"45221:38:15"}]},"name":"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"45202:6:15","type":""}],"src":"45104:162:15"},{"body":{"nodeType":"YulBlock","src":"45418:220:15","statements":[{"nodeType":"YulAssignment","src":"45428:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45494:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"45499:2:15","type":"","value":"12"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"45435:58:15"},"nodeType":"YulFunctionCall","src":"45435:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"45428:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45600:3:15"}],"functionName":{"name":"store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2","nodeType":"YulIdentifier","src":"45511:88:15"},"nodeType":"YulFunctionCall","src":"45511:93:15"},"nodeType":"YulExpressionStatement","src":"45511:93:15"},{"nodeType":"YulAssignment","src":"45613:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"45624:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"45629:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45620:3:15"},"nodeType":"YulFunctionCall","src":"45620:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"45613:3:15"}]}]},"name":"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"45406:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"45414:3:15","type":""}],"src":"45272:366:15"},{"body":{"nodeType":"YulBlock","src":"45815:248:15","statements":[{"nodeType":"YulAssignment","src":"45825:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45837:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"45848:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45833:3:15"},"nodeType":"YulFunctionCall","src":"45833:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45825:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45872:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"45883:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45868:3:15"},"nodeType":"YulFunctionCall","src":"45868:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"45891:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"45897:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"45887:3:15"},"nodeType":"YulFunctionCall","src":"45887:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45861:6:15"},"nodeType":"YulFunctionCall","src":"45861:47:15"},"nodeType":"YulExpressionStatement","src":"45861:47:15"},{"nodeType":"YulAssignment","src":"45917:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"46051:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"45925:124:15"},"nodeType":"YulFunctionCall","src":"45925:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45917:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"45795:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"45810:4:15","type":""}],"src":"45644:419:15"},{"body":{"nodeType":"YulBlock","src":"46175:60:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"46197:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"46205:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46193:3:15"},"nodeType":"YulFunctionCall","src":"46193:14:15"},{"hexValue":"5468726f775a65726f41646472657373","kind":"string","nodeType":"YulLiteral","src":"46209:18:15","type":"","value":"ThrowZeroAddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"46186:6:15"},"nodeType":"YulFunctionCall","src":"46186:42:15"},"nodeType":"YulExpressionStatement","src":"46186:42:15"}]},"name":"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"46167:6:15","type":""}],"src":"46069:166:15"},{"body":{"nodeType":"YulBlock","src":"46387:220:15","statements":[{"nodeType":"YulAssignment","src":"46397:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46463:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"46468:2:15","type":"","value":"16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"46404:58:15"},"nodeType":"YulFunctionCall","src":"46404:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"46397:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46569:3:15"}],"functionName":{"name":"store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7","nodeType":"YulIdentifier","src":"46480:88:15"},"nodeType":"YulFunctionCall","src":"46480:93:15"},"nodeType":"YulExpressionStatement","src":"46480:93:15"},{"nodeType":"YulAssignment","src":"46582:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"46593:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"46598:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46589:3:15"},"nodeType":"YulFunctionCall","src":"46589:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"46582:3:15"}]}]},"name":"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"46375:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"46383:3:15","type":""}],"src":"46241:366:15"},{"body":{"nodeType":"YulBlock","src":"46784:248:15","statements":[{"nodeType":"YulAssignment","src":"46794:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"46806:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"46817:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46802:3:15"},"nodeType":"YulFunctionCall","src":"46802:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"46794:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"46841:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"46852:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46837:3:15"},"nodeType":"YulFunctionCall","src":"46837:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"46860:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"46866:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"46856:3:15"},"nodeType":"YulFunctionCall","src":"46856:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"46830:6:15"},"nodeType":"YulFunctionCall","src":"46830:47:15"},"nodeType":"YulExpressionStatement","src":"46830:47:15"},{"nodeType":"YulAssignment","src":"46886:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47020:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"46894:124:15"},"nodeType":"YulFunctionCall","src":"46894:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"46886:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"46764:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"46779:4:15","type":""}],"src":"46613:419:15"},{"body":{"nodeType":"YulBlock","src":"47144:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"47166:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"47174:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47162:3:15"},"nodeType":"YulFunctionCall","src":"47162:14:15"},{"hexValue":"496e76616c6964496e737469747574696f6e436f6465","kind":"string","nodeType":"YulLiteral","src":"47178:24:15","type":"","value":"InvalidInstitutionCode"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47155:6:15"},"nodeType":"YulFunctionCall","src":"47155:48:15"},"nodeType":"YulExpressionStatement","src":"47155:48:15"}]},"name":"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"47136:6:15","type":""}],"src":"47038:172:15"},{"body":{"nodeType":"YulBlock","src":"47362:220:15","statements":[{"nodeType":"YulAssignment","src":"47372:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47438:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"47443:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"47379:58:15"},"nodeType":"YulFunctionCall","src":"47379:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"47372:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47544:3:15"}],"functionName":{"name":"store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5","nodeType":"YulIdentifier","src":"47455:88:15"},"nodeType":"YulFunctionCall","src":"47455:93:15"},"nodeType":"YulExpressionStatement","src":"47455:93:15"},{"nodeType":"YulAssignment","src":"47557:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47568:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"47573:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47564:3:15"},"nodeType":"YulFunctionCall","src":"47564:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"47557:3:15"}]}]},"name":"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"47350:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"47358:3:15","type":""}],"src":"47216:366:15"},{"body":{"nodeType":"YulBlock","src":"47759:248:15","statements":[{"nodeType":"YulAssignment","src":"47769:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47781:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"47792:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47777:3:15"},"nodeType":"YulFunctionCall","src":"47777:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"47769:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47816:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"47827:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47812:3:15"},"nodeType":"YulFunctionCall","src":"47812:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47835:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"47841:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"47831:3:15"},"nodeType":"YulFunctionCall","src":"47831:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47805:6:15"},"nodeType":"YulFunctionCall","src":"47805:47:15"},"nodeType":"YulExpressionStatement","src":"47805:47:15"},{"nodeType":"YulAssignment","src":"47861:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"47995:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"47869:124:15"},"nodeType":"YulFunctionCall","src":"47869:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"47861:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"47739:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"47754:4:15","type":""}],"src":"47588:419:15"},{"body":{"nodeType":"YulBlock","src":"48119:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"48141:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"48149:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48137:3:15"},"nodeType":"YulFunctionCall","src":"48137:14:15"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"48153:34:15","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48130:6:15"},"nodeType":"YulFunctionCall","src":"48130:58:15"},"nodeType":"YulExpressionStatement","src":"48130:58:15"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"48111:6:15","type":""}],"src":"48013:182:15"},{"body":{"nodeType":"YulBlock","src":"48347:220:15","statements":[{"nodeType":"YulAssignment","src":"48357:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48423:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"48428:2:15","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"48364:58:15"},"nodeType":"YulFunctionCall","src":"48364:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"48357:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48529:3:15"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"48440:88:15"},"nodeType":"YulFunctionCall","src":"48440:93:15"},"nodeType":"YulExpressionStatement","src":"48440:93:15"},{"nodeType":"YulAssignment","src":"48542:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48553:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"48558:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48549:3:15"},"nodeType":"YulFunctionCall","src":"48549:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"48542:3:15"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"48335:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"48343:3:15","type":""}],"src":"48201:366:15"},{"body":{"nodeType":"YulBlock","src":"48744:248:15","statements":[{"nodeType":"YulAssignment","src":"48754:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"48766:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"48777:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48762:3:15"},"nodeType":"YulFunctionCall","src":"48762:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"48754:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"48801:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"48812:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48797:3:15"},"nodeType":"YulFunctionCall","src":"48797:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"48820:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"48826:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"48816:3:15"},"nodeType":"YulFunctionCall","src":"48816:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48790:6:15"},"nodeType":"YulFunctionCall","src":"48790:47:15"},"nodeType":"YulExpressionStatement","src":"48790:47:15"},{"nodeType":"YulAssignment","src":"48846:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"48980:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"48854:124:15"},"nodeType":"YulFunctionCall","src":"48854:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"48846:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"48724:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"48739:4:15","type":""}],"src":"48573:419:15"},{"body":{"nodeType":"YulBlock","src":"49104:124:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"49126:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"49134:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49122:3:15"},"nodeType":"YulFunctionCall","src":"49122:14:15"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"49138:34:15","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"49115:6:15"},"nodeType":"YulFunctionCall","src":"49115:58:15"},"nodeType":"YulExpressionStatement","src":"49115:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"49194:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"49202:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49190:3:15"},"nodeType":"YulFunctionCall","src":"49190:15:15"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"49207:13:15","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"49183:6:15"},"nodeType":"YulFunctionCall","src":"49183:38:15"},"nodeType":"YulExpressionStatement","src":"49183:38:15"}]},"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"49096:6:15","type":""}],"src":"48998:230:15"},{"body":{"nodeType":"YulBlock","src":"49380:220:15","statements":[{"nodeType":"YulAssignment","src":"49390:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49456:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"49461:2:15","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"49397:58:15"},"nodeType":"YulFunctionCall","src":"49397:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"49390:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49562:3:15"}],"functionName":{"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nodeType":"YulIdentifier","src":"49473:88:15"},"nodeType":"YulFunctionCall","src":"49473:93:15"},"nodeType":"YulExpressionStatement","src":"49473:93:15"},{"nodeType":"YulAssignment","src":"49575:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49586:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"49591:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49582:3:15"},"nodeType":"YulFunctionCall","src":"49582:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"49575:3:15"}]}]},"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"49368:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"49376:3:15","type":""}],"src":"49234:366:15"},{"body":{"nodeType":"YulBlock","src":"49777:248:15","statements":[{"nodeType":"YulAssignment","src":"49787:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49799:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"49810:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49795:3:15"},"nodeType":"YulFunctionCall","src":"49795:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49787:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49834:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"49845:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49830:3:15"},"nodeType":"YulFunctionCall","src":"49830:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"49853:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"49859:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"49849:3:15"},"nodeType":"YulFunctionCall","src":"49849:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"49823:6:15"},"nodeType":"YulFunctionCall","src":"49823:47:15"},"nodeType":"YulExpressionStatement","src":"49823:47:15"},{"nodeType":"YulAssignment","src":"49879:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"50013:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"49887:124:15"},"nodeType":"YulFunctionCall","src":"49887:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49879:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49757:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"49772:4:15","type":""}],"src":"49606:419:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n // struct PaycrestSettingManager.Institution -> struct PaycrestSettingManager.Institution\n function abi_encode_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // code\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x00))\n }\n\n {\n // name\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encodeUpdatedPos_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr(value0, pos) -> updatedPos {\n abi_encode_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr(value0, pos)\n updatedPos := add(pos, 0x40)\n }\n\n function array_nextElement_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct PaycrestSettingManager.Institution[] -> struct PaycrestSettingManager.Institution[]\n function abi_encode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_struct$_Institution_$3609_memory_ptr_to_t_struct$_Institution_$3609_memory_ptr(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_array$_t_address_$dyn_calldata_ptrt_addresst_uint64t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7 {\n if slt(sub(dataEnd, headStart), 224) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3, value4 := abi_decode_t_array$_t_address_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value5 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value6 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value7 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint96(value) {\n if iszero(eq(value, cleanup_t_uint96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint96(value)\n }\n\n // string\n function abi_decode_t_string_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_addresst_uint256t_bytes32t_bytes32t_uint96t_addresst_uint256t_addresst_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint96(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 256))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value8, value9 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n // struct PaycrestSettingManager.Institution\n function abi_decode_t_struct$_Institution_$3609_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x40) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x40)\n\n {\n // code\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n {\n // name\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x40))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x40) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_struct$_Institution_$3609_memory_ptr(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_uint96_to_t_uint96(value, pos) {\n mstore(pos, cleanup_t_uint96(value))\n }\n\n function abi_encode_t_bool_to_t_bool(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n // struct IPaycrest.Order -> struct IPaycrest.Order\n function abi_encode_t_struct$_Order_$3935_memory_ptr_to_t_struct$_Order_$3935_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x0120)\n\n {\n // seller\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // token\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // senderFeeRecipient\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x40))\n }\n\n {\n // senderFee\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x60))\n }\n\n {\n // rate\n\n let memberValue0 := mload(add(value, 0x80))\n abi_encode_t_uint96_to_t_uint96(memberValue0, add(pos, 0x80))\n }\n\n {\n // isFulfilled\n\n let memberValue0 := mload(add(value, 0xa0))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0xa0))\n }\n\n {\n // refundAddress\n\n let memberValue0 := mload(add(value, 0xc0))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0xc0))\n }\n\n {\n // currentBPS\n\n let memberValue0 := mload(add(value, 0xe0))\n abi_encode_t_uint96_to_t_uint96(memberValue0, add(pos, 0xe0))\n }\n\n {\n // amount\n\n let memberValue0 := mload(add(value, 0x0100))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x0100))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_Order_$3935_memory_ptr__to_t_struct$_Order_$3935_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 288)\n\n abi_encode_t_struct$_Order_$3935_memory_ptr_to_t_struct$_Order_$3935_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n // struct PaycrestSettingManager.InstitutionByCode -> struct PaycrestSettingManager.InstitutionByCode\n function abi_encode_t_struct$_InstitutionByCode_$3614_memory_ptr_to_t_struct$_InstitutionByCode_$3614_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x40)\n\n {\n // name\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x00))\n }\n\n {\n // currency\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x20))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_InstitutionByCode_$3614_memory_ptr__to_t_struct$_InstitutionByCode_$3614_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_struct$_InstitutionByCode_$3614_memory_ptr_to_t_struct$_InstitutionByCode_$3614_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_addresst_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint128(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff)\n }\n\n function abi_encode_t_uint128_to_t_uint128_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint128(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint128_t_uint128_t_uint256__to_t_uint128_t_uint128_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_uint128(value) {\n if iszero(eq(value, cleanup_t_uint128(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint128(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint128(value)\n }\n\n function abi_decode_tuple_t_uint128t_uint128(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243(memPtr) {\n\n mstore(add(memPtr, 0), \"OnlyAggregator\")\n\n }\n\n function abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_feafe41130685cc96aef13592e300ecc17e4f49a66bae4a40d65fbdcce6c7243_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5(memPtr) {\n\n mstore(add(memPtr, 0), \"OrderFulfilled\")\n\n }\n\n function abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_84045048554d058b8a53b78300214112125a1eccddd735f23a805c1c4be2d6f5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint96(x, y) -> diff {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n diff := sub(x, y)\n\n if gt(diff, 0xffffffffffffffffffffffff) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint64_to_t_uint96(value) -> converted {\n converted := cleanup_t_uint96(identity(cleanup_t_uint64(value)))\n }\n\n function abi_encode_t_uint64_to_t_uint96_fromStack(value, pos) {\n mstore(pos, convert_t_uint64_to_t_uint96(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes32_t_uint64__to_t_bytes32_t_bytes32_t_uint96__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint64_to_t_uint96_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function convert_t_uint96_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint96(value)))\n }\n\n function abi_encode_t_uint96_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint96_to_t_uint256(value))\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // string -> string\n function abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_uint96_t_bytes32_t_bytes32_t_string_calldata_ptr__to_t_uint256_t_bytes32_t_bytes32_t_string_memory_ptr__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint96_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(value3, value4, tail)\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(memPtr) {\n\n mstore(add(memPtr, 0), \"Paycrest: zero address\")\n\n }\n\n function abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is alrea\")\n\n mstore(add(memPtr, 32), \"dy initialized\")\n\n }\n\n function abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function convert_t_rational_1_by_1_to_t_uint8(value) -> converted {\n converted := cleanup_t_uint8(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint8(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_bytes_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len) {\n\n let newLen := array_length_t_bytes_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1(memPtr) {\n\n mstore(add(memPtr, 0), \"TokenNotSupported\")\n\n }\n\n function abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n store_literal_in_memory_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d2f8e8f0a3132d85392dd42596f134395b200d03cc73cebaef0c903d898657e1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2(memPtr) {\n\n mstore(add(memPtr, 0), \"AmountIsZero\")\n\n }\n\n function abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 12)\n store_literal_in_memory_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_41a3c7da6a405d0b582130b233ab9373122491f5044da88c4622af2417f2b5d2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7(memPtr) {\n\n mstore(add(memPtr, 0), \"ThrowZeroAddress\")\n\n }\n\n function abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c69ddfb7ac12bc88a1972db6046dbf646efc1690dd81423d8eb86a59fbc59dd7_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5(memPtr) {\n\n mstore(add(memPtr, 0), \"InvalidInstitutionCode\")\n\n }\n\n function abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8d342490ebeb898cd40842289fa022183f4fcca41c57866dcb96110f8ec752a5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(memPtr) {\n\n mstore(add(memPtr, 0), \"Initializable: contract is not i\")\n\n mstore(add(memPtr, 32), \"nitializing\")\n\n }\n\n function abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063d8e8de341161007c578063d8e8de341461034f578063d9caed121461037f578063e4683a791461039b578063e8d6e0de146103cb578063f2fde38b146103e9578063f5326b191461040557610137565b80638da5cb5b146102bd57806399e3c0b4146102db578063b810c636146102f7578063c4d66de814610317578063cb79455b1461033357610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb1461027157806387490d861461028d57610137565b8063026213381461013c578063137764fb1461016c5780632654ec7e1461019d57806332200882146101cd5780633ad59dbc146101e9575b600080fd5b610156600480360381019061015191906126f3565b610421565b604051610163919061280d565b60405180910390f35b6101866004803603810190610181919061296a565b61055f565b604051610194929190612a4a565b60405180910390f35b6101b760048036038101906101b29190612b43565b61096a565b6040516101c49190612c2e565b60405180910390f35b6101e760048036038101906101e29190612ded565b610db7565b005b6101f1610ecb565b6040516101fe9190612ec8565b60405180910390f35b61020f610f5d565b005b61022b60048036038101906102269190612eea565b610f71565b6040516102389190612f26565b60405180910390f35b61025b600480360381019061025691906126f3565b610fc7565b6040516102689190613034565b60405180910390f35b61028b60048036038101906102869190613050565b6111f8565b005b6102a760048036038101906102a291906126f3565b611345565b6040516102b491906130bf565b60405180910390f35b6102c5611386565b6040516102d291906130da565b60405180910390f35b6102f560048036038101906102f091906130f5565b6113b0565b005b6102ff611565565b60405161030e93929190613182565b60405180910390f35b610331600480360381019061032c9190612eea565b6115b6565b005b61034d6004803603810190610348919061320f565b6117cd565b005b61036960048036038101906103649190612eea565b611824565b6040516103769190612f26565b60405180910390f35b6103996004803603810190610394919061325c565b61187a565b005b6103b560048036038101906103b091906132af565b611906565b6040516103c29190612f26565b60405180910390f35b6103d3611bb3565b6040516103e091906130da565b60405180910390f35b61040360048036038101906103fe9190612eea565b611bdd565b005b61041f600480360381019061041a919061331b565b611c60565b005b60606000609e6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049e57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610458565b50505050905060008151905060008167ffffffffffffffff8111156104c6576104c5612c5a565b5b6040519080825280602002602001820160405280156104ff57816020015b6104ec612586565b8152602001906001900390816104e45790505b50905060005b82811015610553578381815181106105205761051f61335b565b5b602002602001015182828151811061053b5761053a61335b565b5b60200260200101819052508080600101915050610505565b50809350505050919050565b600080606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e9906133e7565b60405180910390fd5b60a060008a8152602001908152602001600020600401600c9054906101000a900460ff1615610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d90613453565b60405180910390fd5b600060a060008b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff1660a060008c815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff166106d891906134a2565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600061071d8b8767ffffffffffffffff1687611d17565b9050600060a060008d815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036107bc57600160a060008d8152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a060008d81526020019081526020016000206003015411156107bb576107ba8b611eb0565b5b5b60008160000151111561086f578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b815260040161082a9291906134e2565b6020604051808303816000875af1158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d9190613520565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b81526004016108ae9291906134e2565b6020604051808303816000875af11580156108cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f19190613520565b506109028989848460400151612004565b8673ffffffffffffffffffffffffffffffffffffffff168b7ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268e8d8a60405161094d93929190613588565b60405180910390a38a829350935050509850989650505050505050565b60006109798b8b86898d61214e565b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b81526004016109b6939291906135bf565b6020604051808303816000875af11580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190613520565b5060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610a4a906135f6565b91905055503360a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610aa19291906134e2565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b81525060a0600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610da19594939291906136ab565b60405180910390a49a9950505050505050505050565b610dbf61235d565b60008151905060005b81811015610ec557609e6000858152602001908152602001600020838281518110610df657610df561335b565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610e5b57610e5a61335b565b5b602002602001015160200151815260200185815250609f6000858481518110610e8757610e8661335b565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610dc8565b50505050565b606060698054610eda90613728565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0690613728565b8015610f535780601f10610f2857610100808354040283529160200191610f53565b820191906000526020600020905b815481529060010190602001808311610f3657829003601f168201915b5050505050905090565b610f6561235d565b610f6f60006123db565b565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610fcf6125a6565b60a06000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b61120061235d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361126f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611266906137a5565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036112d85780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113415780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b61134d612668565b609f6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113b861235d565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e906137a5565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036114a65780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115255780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace930838383604051611558939291906137c5565b60405180910390a1505050565b6000806000606660009054906101000a90046fffffffffffffffffffffffffffffffff16606660109054906101000a90046fffffffffffffffffffffffffffffffff16606554925092509250909192565b60008060019054906101000a900460ff161590508080156115e75750600160008054906101000a900460ff1660ff16105b8061161457506115f6306124a1565b1580156116135750600160008054906101000a900460ff1660ff16145b5b611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a9061386e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611690576001600060016101000a81548160ff0219169083151502179055505b6001609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506101f4606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506117706124c4565b80156117c95760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516117c091906138d6565b60405180910390a15b5050565b6117d561235d565b8181606991826117e6929190613a9e565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051611818929190613b9b565b60405180910390a15050565b6000609d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61188261235d565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016118bd9291906134e2565b6020604051808303816000875af11580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190613520565b50505050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f906133e7565b60405180910390fd5b60a06000848152602001908152602001600020600401600c9054906101000a900460ff16156119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f390613453565b60405180910390fd5b600160a06000858152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a0600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60a0600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660a06000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611b2e9291906134e2565b6020604051808303816000875af1158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b719190613520565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611ba19190612c2e565b60405180910390a26001905092915050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611be561235d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b90613c31565b60405180910390fd5b611c5d816123db565b50565b611c6861235d565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051611d0b929190613c51565b60405180910390a15050565b611d1f612688565b600060a0600086815260200190815260200160002060060154905060a060008681526020019081526020016000206003015481611d5c9190613c7a565b9050606554846bffffffffffffffffffffffff1682611d7b9190613cae565b611d859190613d1f565b826020018181525050606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360200151611dd19190613cae565b611ddb9190613d1f565b82600001818152505081600001518260200151611df89190613c7a565b826020018181525050606554606660109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360000151611e449190613cae565b611e4e9190613d1f565b8260400181815250508215611e8a57816000015182602001818151611e739190613d50565b915081815250506000826000018181525050611ea8565b81604001518260000151611e9e9190613c7a565b8260000181815250505b509392505050565b600060a0600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060a0600084815260200190815260200160002060030154905060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611f779291906134e2565b6020604051808303816000875af1158015611f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fba9190613520565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b60008484905090506000818361201a9190613d1f565b905060005b82811015612145578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8888848181106120565761205561335b565b5b905060200201602081019061206b9190612eea565b846040518363ffffffff1660e01b81526004016120899291906134e2565b6020604051808303816000875af11580156120a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cc9190613520565b50818787838181106120e1576120e061335b565b5b90506020020160208101906120f69190612eea565b73ffffffffffffffffffffffffffffffffffffffff167f61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c260405160405180910390a3808060010191505061201f565b50505050505050565b609c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d190613dd0565b60405180910390fd5b6000841161221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221490613e3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228390613ea8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f290613ea8565b60405180910390fd5b6000801b609f60008381526020019081526020016000206000015403612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90613f14565b60405180910390fd5b5050505050565b61236561251d565b73ffffffffffffffffffffffffffffffffffffffff16612383611386565b73ffffffffffffffffffffffffffffffffffffffff16146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d090613f80565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250a90614012565b60405180910390fd5b61251b612525565b565b600033905090565b600060019054906101000a900460ff16612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b90614012565b60405180910390fd5b61258461257f61251d565b6123db565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b60405180606001604052806000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6126d0816126bd565b81146126db57600080fd5b50565b6000813590506126ed816126c7565b92915050565b600060208284031215612709576127086126b3565b5b6000612717848285016126de565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612755816126bd565b82525050565b604082016000820151612771600085018261274c565b506020820151612784602085018261274c565b50505050565b6000612796838361275b565b60408301905092915050565b6000602082019050919050565b60006127ba82612720565b6127c4818561272b565b93506127cf8361273c565b8060005b838110156128005781516127e7888261278a565b97506127f2836127a2565b9250506001810190506127d3565b5085935050505092915050565b6000602082019050818103600083015261282781846127af565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126128545761285361282f565b5b8235905067ffffffffffffffff81111561287157612870612834565b5b60208301915083602082028301111561288d5761288c612839565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128bf82612894565b9050919050565b6128cf816128b4565b81146128da57600080fd5b50565b6000813590506128ec816128c6565b92915050565b600067ffffffffffffffff82169050919050565b61290f816128f2565b811461291a57600080fd5b50565b60008135905061292c81612906565b92915050565b60008115159050919050565b61294781612932565b811461295257600080fd5b50565b6000813590506129648161293e565b92915050565b60008060008060008060008060e0898b03121561298a576129896126b3565b5b60006129988b828c016126de565b98505060206129a98b828c016126de565b97505060406129ba8b828c016126de565b965050606089013567ffffffffffffffff8111156129db576129da6126b8565b5b6129e78b828c0161283e565b955095505060806129fa8b828c016128dd565b93505060a0612a0b8b828c0161291d565b92505060c0612a1c8b828c01612955565b9150509295985092959890939650565b612a35816126bd565b82525050565b612a44816128b4565b82525050565b6000604082019050612a5f6000830185612a2c565b612a6c6020830184612a3b565b9392505050565b6000819050919050565b612a8681612a73565b8114612a9157600080fd5b50565b600081359050612aa381612a7d565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612aca81612aa9565b8114612ad557600080fd5b50565b600081359050612ae781612ac1565b92915050565b60008083601f840112612b0357612b0261282f565b5b8235905067ffffffffffffffff811115612b2057612b1f612834565b5b602083019150836001820283011115612b3c57612b3b612839565b5b9250929050565b6000806000806000806000806000806101208b8d031215612b6757612b666126b3565b5b6000612b758d828e016128dd565b9a50506020612b868d828e01612a94565b9950506040612b978d828e016126de565b9850506060612ba88d828e016126de565b9750506080612bb98d828e01612ad8565b96505060a0612bca8d828e016128dd565b95505060c0612bdb8d828e01612a94565b94505060e0612bec8d828e016128dd565b9350506101008b013567ffffffffffffffff811115612c0e57612c0d6126b8565b5b612c1a8d828e01612aed565b92509250509295989b9194979a5092959850565b6000602082019050612c436000830184612a2c565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c9282612c49565b810181811067ffffffffffffffff82111715612cb157612cb0612c5a565b5b80604052505050565b6000612cc46126a9565b9050612cd08282612c89565b919050565b600067ffffffffffffffff821115612cf057612cef612c5a565b5b602082029050602081019050919050565b600080fd5b600060408284031215612d1c57612d1b612d01565b5b612d266040612cba565b90506000612d36848285016126de565b6000830152506020612d4a848285016126de565b60208301525092915050565b6000612d69612d6484612cd5565b612cba565b90508083825260208201905060408402830185811115612d8c57612d8b612839565b5b835b81811015612db55780612da18882612d06565b845260208401935050604081019050612d8e565b5050509392505050565b600082601f830112612dd457612dd361282f565b5b8135612de4848260208601612d56565b91505092915050565b60008060408385031215612e0457612e036126b3565b5b6000612e12858286016126de565b925050602083013567ffffffffffffffff811115612e3357612e326126b8565b5b612e3f85828601612dbf565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e83578082015181840152602081019050612e68565b60008484015250505050565b6000612e9a82612e49565b612ea48185612e54565b9350612eb4818560208601612e65565b612ebd81612c49565b840191505092915050565b60006020820190508181036000830152612ee28184612e8f565b905092915050565b600060208284031215612f0057612eff6126b3565b5b6000612f0e848285016128dd565b91505092915050565b612f2081612932565b82525050565b6000602082019050612f3b6000830184612f17565b92915050565b612f4a816128b4565b82525050565b612f5981612a73565b82525050565b612f6881612aa9565b82525050565b612f7781612932565b82525050565b61012082016000820151612f946000850182612f41565b506020820151612fa76020850182612f41565b506040820151612fba6040850182612f41565b506060820151612fcd6060850182612f50565b506080820151612fe06080850182612f5f565b5060a0820151612ff360a0850182612f6e565b5060c082015161300660c0850182612f41565b5060e082015161301960e0850182612f5f565b5061010082015161302e610100850182612f50565b50505050565b60006101208201905061304a6000830184612f7d565b92915050565b60008060408385031215613067576130666126b3565b5b6000613075858286016126de565b9250506020613086858286016128dd565b9150509250929050565b6040820160008201516130a6600085018261274c565b5060208201516130b9602085018261274c565b50505050565b60006040820190506130d46000830184613090565b92915050565b60006020820190506130ef6000830184612a3b565b92915050565b60008060006060848603121561310e5761310d6126b3565b5b600061311c868287016126de565b935050602061312d868287016128dd565b925050604061313e86828701612955565b9150509250925092565b60006fffffffffffffffffffffffffffffffff82169050919050565b61316d81613148565b82525050565b61317c81612a73565b82525050565b60006060820190506131976000830186613164565b6131a46020830185613164565b6131b16040830184613173565b949350505050565b60008083601f8401126131cf576131ce61282f565b5b8235905067ffffffffffffffff8111156131ec576131eb612834565b5b60208301915083600182028301111561320857613207612839565b5b9250929050565b60008060208385031215613226576132256126b3565b5b600083013567ffffffffffffffff811115613244576132436126b8565b5b613250858286016131b9565b92509250509250929050565b600080600060608486031215613275576132746126b3565b5b6000613283868287016128dd565b9350506020613294868287016128dd565b92505060406132a586828701612a94565b9150509250925092565b600080604083850312156132c6576132c56126b3565b5b60006132d4858286016126de565b92505060206132e5858286016126de565b9150509250929050565b6132f881613148565b811461330357600080fd5b50565b600081359050613315816132ef565b92915050565b60008060408385031215613332576133316126b3565b5b600061334085828601613306565b925050602061335185828601613306565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b60006133d1600e8361338a565b91506133dc8261339b565b602082019050919050565b60006020820190508181036000830152613400816133c4565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b600061343d600e8361338a565b915061344882613407565b602082019050919050565b6000602082019050818103600083015261346c81613430565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134ad82612aa9565b91506134b883612aa9565b925082820390506bffffffffffffffffffffffff8111156134dc576134db613473565b5b92915050565b60006040820190506134f76000830185612a3b565b6135046020830184613173565b9392505050565b60008151905061351a8161293e565b92915050565b600060208284031215613536576135356126b3565b5b60006135448482850161350b565b91505092915050565b6000819050919050565b600061357261356d613568846128f2565b61354d565b612aa9565b9050919050565b61358281613557565b82525050565b600060608201905061359d6000830186612a2c565b6135aa6020830185612a2c565b6135b76040830184613579565b949350505050565b60006060820190506135d46000830186612a3b565b6135e16020830185612a3b565b6135ee6040830184613173565b949350505050565b600061360182612a73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361363357613632613473565b5b600182019050919050565b600061365961365461364f84612aa9565b61354d565b612a73565b9050919050565b6136698161363e565b82525050565b82818337600083830152505050565b600061368a838561338a565b935061369783858461366f565b6136a083612c49565b840190509392505050565b60006080820190506136c06000830188613660565b6136cd6020830187612a2c565b6136da6040830186612a2c565b81810360608301526136ed81848661367e565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061374057607f821691505b602082108103613753576137526136f9565b5b50919050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b600061378f60168361338a565b915061379a82613759565b602082019050919050565b600060208201905081810360008301526137be81613782565b9050919050565b60006060820190506137da6000830186612a2c565b6137e76020830185612a3b565b6137f46040830184612f17565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613858602e8361338a565b9150613863826137fc565b604082019050919050565b600060208201905081810360008301526138878161384b565b9050919050565b6000819050919050565b600060ff82169050919050565b60006138c06138bb6138b68461388e565b61354d565b613898565b9050919050565b6138d0816138a5565b82525050565b60006020820190506138eb60008301846138c7565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261395e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613921565b6139688683613921565b95508019841693508086168417925050509392505050565b600061399b61399661399184612a73565b61354d565b612a73565b9050919050565b6000819050919050565b6139b583613980565b6139c96139c1826139a2565b84845461392e565b825550505050565b600090565b6139de6139d1565b6139e98184846139ac565b505050565b5b81811015613a0d57613a026000826139d6565b6001810190506139ef565b5050565b601f821115613a5257613a23816138fc565b613a2c84613911565b81016020851015613a3b578190505b613a4f613a4785613911565b8301826139ee565b50505b505050565b600082821c905092915050565b6000613a7560001984600802613a57565b1980831691505092915050565b6000613a8e8383613a64565b9150826002028217905092915050565b613aa883836138f1565b67ffffffffffffffff811115613ac157613ac0612c5a565b5b613acb8254613728565b613ad6828285613a11565b6000601f831160018114613b055760008415613af3578287013590505b613afd8582613a82565b865550613b65565b601f198416613b13866138fc565b60005b82811015613b3b57848901358255600182019150602085019450602081019050613b16565b86831015613b585784890135613b54601f891682613a64565b8355505b6001600288020188555050505b50505050505050565b6000613b7a8385612e54565b9350613b8783858461366f565b613b9083612c49565b840190509392505050565b60006020820190508181036000830152613bb6818486613b6e565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c1b60268361338a565b9150613c2682613bbf565b604082019050919050565b60006020820190508181036000830152613c4a81613c0e565b9050919050565b6000604082019050613c666000830185613164565b613c736020830184613164565b9392505050565b6000613c8582612a73565b9150613c9083612a73565b9250828203905081811115613ca857613ca7613473565b5b92915050565b6000613cb982612a73565b9150613cc483612a73565b9250828202613cd281612a73565b91508282048414831517613ce957613ce8613473565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d2a82612a73565b9150613d3583612a73565b925082613d4557613d44613cf0565b5b828204905092915050565b6000613d5b82612a73565b9150613d6683612a73565b9250828201905080821115613d7e57613d7d613473565b5b92915050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613dba60118361338a565b9150613dc582613d84565b602082019050919050565b60006020820190508181036000830152613de981613dad565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613e26600c8361338a565b9150613e3182613df0565b602082019050919050565b60006020820190508181036000830152613e5581613e19565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613e9260108361338a565b9150613e9d82613e5c565b602082019050919050565b60006020820190508181036000830152613ec181613e85565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613efe60168361338a565b9150613f0982613ec8565b602082019050919050565b60006020820190508181036000830152613f2d81613ef1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f6a60208361338a565b9150613f7582613f34565b602082019050919050565b60006020820190508181036000830152613f9981613f5d565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613ffc602b8361338a565b915061400782613fa0565b604082019050919050565b6000602082019050818103600083015261402b81613fef565b905091905056fea2646970667358221220f91cbcea9a42b2acb7f7466ef2d6e066a41b76107a58a644e5bd38e40084f3f864736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xD8E8DE34 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xD8E8DE34 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xE4683A79 EQ PUSH2 0x39B JUMPI DUP1 PUSH4 0xE8D6E0DE EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0xF5326B19 EQ PUSH2 0x405 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xB810C636 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x333 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x75151B63 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0x768C6EC0 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x87490D86 EQ PUSH2 0x28D JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x2621338 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x137764FB EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x2654EC7E EQ PUSH2 0x19D JUMPI DUP1 PUSH4 0x32200882 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x3AD59DBC EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x421 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x280D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x296A JUMP JUMPDEST PUSH2 0x55F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x194 SWAP3 SWAP2 SWAP1 PUSH2 0x2A4A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B2 SWAP2 SWAP1 PUSH2 0x2B43 JUMP JUMPDEST PUSH2 0x96A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E2 SWAP2 SWAP1 PUSH2 0x2DED JUMP JUMPDEST PUSH2 0xDB7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F1 PUSH2 0xECB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2EC8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH2 0xF5D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH2 0xF71 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0xFC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x3034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x28B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x286 SWAP2 SWAP1 PUSH2 0x3050 JUMP JUMPDEST PUSH2 0x11F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A2 SWAP2 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH2 0x1345 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B4 SWAP2 SWAP1 PUSH2 0x30BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C5 PUSH2 0x1386 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D2 SWAP2 SWAP1 PUSH2 0x30DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F0 SWAP2 SWAP1 PUSH2 0x30F5 JUMP JUMPDEST PUSH2 0x13B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FF PUSH2 0x1565 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x331 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x32C SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH2 0x15B6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x34D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x348 SWAP2 SWAP1 PUSH2 0x320F JUMP JUMPDEST PUSH2 0x17CD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x364 SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH2 0x1824 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x376 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x399 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x394 SWAP2 SWAP1 PUSH2 0x325C JUMP JUMPDEST PUSH2 0x187A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3B0 SWAP2 SWAP1 PUSH2 0x32AF JUMP JUMPDEST PUSH2 0x1906 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3C2 SWAP2 SWAP1 PUSH2 0x2F26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D3 PUSH2 0x1BB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E0 SWAP2 SWAP1 PUSH2 0x30DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FE SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH2 0x1BDD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41A SWAP2 SWAP1 PUSH2 0x331B JUMP JUMPDEST PUSH2 0x1C60 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x9E PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x49E JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x458 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C5 PUSH2 0x2C5A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FF JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x4EC PUSH2 0x2586 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x4E4 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x520 JUMPI PUSH2 0x51F PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x53B JUMPI PUSH2 0x53A PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x505 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E9 SWAP1 PUSH2 0x33E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x64D SWAP1 PUSH2 0x3453 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA0 PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6D8 SWAP2 SWAP1 PUSH2 0x34A2 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x71D DUP12 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x1D17 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7BC JUMPI PUSH1 0x1 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD GT ISZERO PUSH2 0x7BB JUMPI PUSH2 0x7BA DUP12 PUSH2 0x1EB0 JUMP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD GT ISZERO PUSH2 0x86F JUMPI DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x67 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x82A SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x849 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x86D SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8AE SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8F1 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP PUSH2 0x902 DUP10 DUP10 DUP5 DUP5 PUSH1 0x40 ADD MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH32 0xF26DE978CBAEA68EA699627155A10AD53DF3321B0F95A08264C0CFD6D4C05326 DUP15 DUP14 DUP11 PUSH1 0x40 MLOAD PUSH2 0x94D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3588 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP11 DUP3 SWAP4 POP SWAP4 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x979 DUP12 DUP12 DUP7 DUP10 DUP14 PUSH2 0x214E JUMP JUMPDEST DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP14 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x35BF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F9 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP PUSH1 0xA1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0xA4A SWAP1 PUSH2 0x35F6 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP CALLER PUSH1 0xA1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAA1 SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x65 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE POP PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x100 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE SWAP1 POP POP DUP1 DUP11 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C205F90C01160D42994A0EB521810056D94BB82A1FCB038D7179C4158A1F15B DUP11 DUP14 DUP14 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xDA1 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xDBF PUSH2 0x235D JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xEC5 JUMPI PUSH1 0x9E PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDF6 JUMPI PUSH2 0xDF5 PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xE5B JUMPI PUSH2 0xE5A PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE87 JUMPI PUSH2 0xE86 PUSH2 0x335B JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xDC8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x69 DUP1 SLOAD PUSH2 0xEDA SWAP1 PUSH2 0x3728 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xF06 SWAP1 PUSH2 0x3728 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF53 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF28 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF53 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF36 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xF65 PUSH2 0x235D JUMP JUMPDEST PUSH2 0xF6F PUSH1 0x0 PUSH2 0x23DB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9C PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFCF PUSH2 0x25A6 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1200 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x126F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1266 SWAP1 PUSH2 0x37A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x12D8 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x1341 JUMPI DUP1 PUSH1 0x68 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x134D PUSH2 0x2668 JUMP JUMPDEST PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x13B8 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1427 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x141E SWAP1 PUSH2 0x37A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x14A6 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x1525 JUMPI DUP1 PUSH1 0x9D PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1558 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x37C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x66 PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x65 SLOAD SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x15E7 JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND LT JUMPDEST DUP1 PUSH2 0x1614 JUMPI POP PUSH2 0x15F6 ADDRESS PUSH2 0x24A1 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1613 JUMPI POP PUSH1 0x1 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND EQ JUMPDEST JUMPDEST PUSH2 0x1653 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x164A SWAP1 PUSH2 0x386E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1690 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x186A0 PUSH1 0x65 DUP2 SWAP1 SSTORE POP PUSH2 0x1388 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1F4 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1770 PUSH2 0x24C4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x17C9 JUMPI PUSH1 0x0 DUP1 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x17C0 SWAP2 SWAP1 PUSH2 0x38D6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x17D5 PUSH2 0x235D JUMP JUMPDEST DUP2 DUP2 PUSH1 0x69 SWAP2 DUP3 PUSH2 0x17E6 SWAP3 SWAP2 SWAP1 PUSH2 0x3A9E JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1818 SWAP3 SWAP2 SWAP1 PUSH2 0x3B9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9D PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1882 PUSH2 0x235D JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18BD SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1900 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1998 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198F SWAP1 PUSH2 0x33E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x19FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F3 SWAP1 PUSH2 0x3453 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B2E SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B4D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B71 SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP DUP3 PUSH31 0x7C875846B687732A7579C19BB1DADE66CD14E9F4F809565E2B2B5E76C72B4F DUP4 PUSH1 0x40 MLOAD PUSH2 0x1BA1 SWAP2 SWAP1 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x68 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1BE5 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C54 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C4B SWAP1 PUSH2 0x3C31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C5D DUP2 PUSH2 0x23DB JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1C68 PUSH2 0x235D JUMP JUMPDEST DUP2 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xE38926C5806B98A6FD00C5D791A36FBD196537FE48D11C45C9F1D0ACD1EA74DF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1D0B SWAP3 SWAP2 SWAP1 PUSH2 0x3C51 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x1D1F PUSH2 0x2688 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP PUSH1 0xA0 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH2 0x1D5C SWAP2 SWAP1 PUSH2 0x3C7A JUMP JUMPDEST SWAP1 POP PUSH1 0x65 SLOAD DUP5 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1D7B SWAP2 SWAP1 PUSH2 0x3CAE JUMP JUMPDEST PUSH2 0x1D85 SWAP2 SWAP1 PUSH2 0x3D1F JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x1DD1 SWAP2 SWAP1 PUSH2 0x3CAE JUMP JUMPDEST PUSH2 0x1DDB SWAP2 SWAP1 PUSH2 0x3D1F JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x1DF8 SWAP2 SWAP1 PUSH2 0x3C7A JUMP JUMPDEST DUP3 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x65 SLOAD PUSH1 0x66 PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x1E44 SWAP2 SWAP1 PUSH2 0x3CAE JUMP JUMPDEST PUSH2 0x1E4E SWAP2 SWAP1 PUSH2 0x3D1F JUMP JUMPDEST DUP3 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP DUP3 ISZERO PUSH2 0x1E8A JUMPI DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD DUP2 DUP2 MLOAD PUSH2 0x1E73 SWAP2 SWAP1 PUSH2 0x3D50 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1EA8 JUMP JUMPDEST DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD PUSH2 0x1E9E SWAP2 SWAP1 PUSH2 0x3C7A JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0xA0 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F77 SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F96 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FBA SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x96C76D5AEC8A8C11A9C8E02768E3FA309347330D08961E0CF9FD43B349B684C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 DUP4 PUSH2 0x201A SWAP2 SWAP1 PUSH2 0x3D1F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2145 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x2056 JUMPI PUSH2 0x2055 PUSH2 0x335B JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x206B SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2089 SWAP3 SWAP2 SWAP1 PUSH2 0x34E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20CC SWAP2 SWAP1 PUSH2 0x3520 JUMP JUMPDEST POP DUP2 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x20E1 JUMPI PUSH2 0x20E0 PUSH2 0x335B JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x20F6 SWAP2 SWAP1 PUSH2 0x2EEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x61DCEB70B8F97239C33A3F9C0D0EFC6C8759C7E9A808F75DD42B3A0F213186C2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x201F JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9C PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x21DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21D1 SWAP1 PUSH2 0x3DD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x221D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2214 SWAP1 PUSH2 0x3E3C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x228C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2283 SWAP1 PUSH2 0x3EA8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22F2 SWAP1 PUSH2 0x3EA8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SHL PUSH1 0x9F PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SUB PUSH2 0x2356 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x234D SWAP1 PUSH2 0x3F14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2365 PUSH2 0x251D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2383 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x23D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23D0 SWAP1 PUSH2 0x3F80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2513 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x250A SWAP1 PUSH2 0x4012 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x251B PUSH2 0x2525 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2574 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x256B SWAP1 PUSH2 0x4012 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2584 PUSH2 0x257F PUSH2 0x251D JUMP JUMPDEST PUSH2 0x23DB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26D0 DUP2 PUSH2 0x26BD JUMP JUMPDEST DUP2 EQ PUSH2 0x26DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26ED DUP2 PUSH2 0x26C7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2709 JUMPI PUSH2 0x2708 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2717 DUP5 DUP3 DUP6 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2755 DUP2 PUSH2 0x26BD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2771 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x274C JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2784 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x274C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2796 DUP4 DUP4 PUSH2 0x275B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27BA DUP3 PUSH2 0x2720 JUMP JUMPDEST PUSH2 0x27C4 DUP2 DUP6 PUSH2 0x272B JUMP JUMPDEST SWAP4 POP PUSH2 0x27CF DUP4 PUSH2 0x273C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2800 JUMPI DUP2 MLOAD PUSH2 0x27E7 DUP9 DUP3 PUSH2 0x278A JUMP JUMPDEST SWAP8 POP PUSH2 0x27F2 DUP4 PUSH2 0x27A2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x27D3 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2827 DUP2 DUP5 PUSH2 0x27AF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2854 JUMPI PUSH2 0x2853 PUSH2 0x282F JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2871 JUMPI PUSH2 0x2870 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x288D JUMPI PUSH2 0x288C PUSH2 0x2839 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28BF DUP3 PUSH2 0x2894 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x28CF DUP2 PUSH2 0x28B4 JUMP JUMPDEST DUP2 EQ PUSH2 0x28DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x28EC DUP2 PUSH2 0x28C6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x290F DUP2 PUSH2 0x28F2 JUMP JUMPDEST DUP2 EQ PUSH2 0x291A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x292C DUP2 PUSH2 0x2906 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2947 DUP2 PUSH2 0x2932 JUMP JUMPDEST DUP2 EQ PUSH2 0x2952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2964 DUP2 PUSH2 0x293E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x298A JUMPI PUSH2 0x2989 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2998 DUP12 DUP3 DUP13 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x29A9 DUP12 DUP3 DUP13 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x29BA DUP12 DUP3 DUP13 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29DB JUMPI PUSH2 0x29DA PUSH2 0x26B8 JUMP JUMPDEST JUMPDEST PUSH2 0x29E7 DUP12 DUP3 DUP13 ADD PUSH2 0x283E JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x80 PUSH2 0x29FA DUP12 DUP3 DUP13 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x2A0B DUP12 DUP3 DUP13 ADD PUSH2 0x291D JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x2A1C DUP12 DUP3 DUP13 ADD PUSH2 0x2955 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH2 0x2A35 DUP2 PUSH2 0x26BD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2A44 DUP2 PUSH2 0x28B4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2A5F PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x2A6C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2A3B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A86 DUP2 PUSH2 0x2A73 JUMP JUMPDEST DUP2 EQ PUSH2 0x2A91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2AA3 DUP2 PUSH2 0x2A7D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2ACA DUP2 PUSH2 0x2AA9 JUMP JUMPDEST DUP2 EQ PUSH2 0x2AD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2AE7 DUP2 PUSH2 0x2AC1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2B03 JUMPI PUSH2 0x2B02 PUSH2 0x282F JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2B20 JUMPI PUSH2 0x2B1F PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2B3C JUMPI PUSH2 0x2B3B PUSH2 0x2839 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x2B67 JUMPI PUSH2 0x2B66 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2B75 DUP14 DUP3 DUP15 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x2B86 DUP14 DUP3 DUP15 ADD PUSH2 0x2A94 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x2B97 DUP14 DUP3 DUP15 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x2BA8 DUP14 DUP3 DUP15 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x2BB9 DUP14 DUP3 DUP15 ADD PUSH2 0x2AD8 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x2BCA DUP14 DUP3 DUP15 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x2BDB DUP14 DUP3 DUP15 ADD PUSH2 0x2A94 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x2BEC DUP14 DUP3 DUP15 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C0E JUMPI PUSH2 0x2C0D PUSH2 0x26B8 JUMP JUMPDEST JUMPDEST PUSH2 0x2C1A DUP14 DUP3 DUP15 ADD PUSH2 0x2AED JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2C43 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A2C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2C92 DUP3 PUSH2 0x2C49 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2CB1 JUMPI PUSH2 0x2CB0 PUSH2 0x2C5A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CC4 PUSH2 0x26A9 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CD0 DUP3 DUP3 PUSH2 0x2C89 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2CF0 JUMPI PUSH2 0x2CEF PUSH2 0x2C5A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D1C JUMPI PUSH2 0x2D1B PUSH2 0x2D01 JUMP JUMPDEST JUMPDEST PUSH2 0x2D26 PUSH1 0x40 PUSH2 0x2CBA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D36 DUP5 DUP3 DUP6 ADD PUSH2 0x26DE JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2D4A DUP5 DUP3 DUP6 ADD PUSH2 0x26DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D69 PUSH2 0x2D64 DUP5 PUSH2 0x2CD5 JUMP JUMPDEST PUSH2 0x2CBA JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2D8C JUMPI PUSH2 0x2D8B PUSH2 0x2839 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DB5 JUMPI DUP1 PUSH2 0x2DA1 DUP9 DUP3 PUSH2 0x2D06 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0x2D8E JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2DD4 JUMPI PUSH2 0x2DD3 PUSH2 0x282F JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2DE4 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2D56 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E04 JUMPI PUSH2 0x2E03 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E12 DUP6 DUP3 DUP7 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E33 JUMPI PUSH2 0x2E32 PUSH2 0x26B8 JUMP JUMPDEST JUMPDEST PUSH2 0x2E3F DUP6 DUP3 DUP7 ADD PUSH2 0x2DBF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E83 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2E68 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E9A DUP3 PUSH2 0x2E49 JUMP JUMPDEST PUSH2 0x2EA4 DUP2 DUP6 PUSH2 0x2E54 JUMP JUMPDEST SWAP4 POP PUSH2 0x2EB4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2E65 JUMP JUMPDEST PUSH2 0x2EBD DUP2 PUSH2 0x2C49 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2EE2 DUP2 DUP5 PUSH2 0x2E8F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F00 JUMPI PUSH2 0x2EFF PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F0E DUP5 DUP3 DUP6 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2F20 DUP2 PUSH2 0x2932 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2F3B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F17 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2F4A DUP2 PUSH2 0x28B4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2F59 DUP2 PUSH2 0x2A73 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2F68 DUP2 PUSH2 0x2AA9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2F77 DUP2 PUSH2 0x2932 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x120 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2F94 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2F41 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2FA7 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2F41 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2FBA PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2F41 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2FCD PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2F50 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x2FE0 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2F5F JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x2FF3 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2F6E JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x3006 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2F41 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3019 PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2F5F JUMP JUMPDEST POP PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x302E PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0x2F50 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP3 ADD SWAP1 POP PUSH2 0x304A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F7D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3067 JUMPI PUSH2 0x3066 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3075 DUP6 DUP3 DUP7 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3086 DUP6 DUP3 DUP7 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x30A6 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x274C JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x30B9 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x274C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x30D4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3090 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x30EF PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A3B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x310E JUMPI PUSH2 0x310D PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x311C DUP7 DUP3 DUP8 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x312D DUP7 DUP3 DUP8 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x313E DUP7 DUP3 DUP8 ADD PUSH2 0x2955 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x316D DUP2 PUSH2 0x3148 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x317C DUP2 PUSH2 0x2A73 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3197 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x3164 JUMP JUMPDEST PUSH2 0x31A4 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3164 JUMP JUMPDEST PUSH2 0x31B1 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3173 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x31CF JUMPI PUSH2 0x31CE PUSH2 0x282F JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31EC JUMPI PUSH2 0x31EB PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3208 JUMPI PUSH2 0x3207 PUSH2 0x2839 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3226 JUMPI PUSH2 0x3225 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3244 JUMPI PUSH2 0x3243 PUSH2 0x26B8 JUMP JUMPDEST JUMPDEST PUSH2 0x3250 DUP6 DUP3 DUP7 ADD PUSH2 0x31B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3275 JUMPI PUSH2 0x3274 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3283 DUP7 DUP3 DUP8 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3294 DUP7 DUP3 DUP8 ADD PUSH2 0x28DD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x32A5 DUP7 DUP3 DUP8 ADD PUSH2 0x2A94 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C6 JUMPI PUSH2 0x32C5 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x32D4 DUP6 DUP3 DUP7 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x32E5 DUP6 DUP3 DUP7 ADD PUSH2 0x26DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x32F8 DUP2 PUSH2 0x3148 JUMP JUMPDEST DUP2 EQ PUSH2 0x3303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3315 DUP2 PUSH2 0x32EF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3332 JUMPI PUSH2 0x3331 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3340 DUP6 DUP3 DUP7 ADD PUSH2 0x3306 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3351 DUP6 DUP3 DUP7 ADD PUSH2 0x3306 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F6E6C7941676772656761746F72000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33D1 PUSH1 0xE DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x33DC DUP3 PUSH2 0x339B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3400 DUP2 PUSH2 0x33C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F7264657246756C66696C6C6564000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343D PUSH1 0xE DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3448 DUP3 PUSH2 0x3407 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x346C DUP2 PUSH2 0x3430 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34AD DUP3 PUSH2 0x2AA9 JUMP JUMPDEST SWAP2 POP PUSH2 0x34B8 DUP4 PUSH2 0x2AA9 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x34DC JUMPI PUSH2 0x34DB PUSH2 0x3473 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x34F7 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2A3B JUMP JUMPDEST PUSH2 0x3504 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3173 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x351A DUP2 PUSH2 0x293E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3536 JUMPI PUSH2 0x3535 PUSH2 0x26B3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3544 DUP5 DUP3 DUP6 ADD PUSH2 0x350B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3572 PUSH2 0x356D PUSH2 0x3568 DUP5 PUSH2 0x28F2 JUMP JUMPDEST PUSH2 0x354D JUMP JUMPDEST PUSH2 0x2AA9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3582 DUP2 PUSH2 0x3557 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x359D PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x35AA PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x35B7 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3579 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x35D4 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2A3B JUMP JUMPDEST PUSH2 0x35E1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2A3B JUMP JUMPDEST PUSH2 0x35EE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3173 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3601 DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x3633 JUMPI PUSH2 0x3632 PUSH2 0x3473 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3659 PUSH2 0x3654 PUSH2 0x364F DUP5 PUSH2 0x2AA9 JUMP JUMPDEST PUSH2 0x354D JUMP JUMPDEST PUSH2 0x2A73 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3669 DUP2 PUSH2 0x363E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x368A DUP4 DUP6 PUSH2 0x338A JUMP JUMPDEST SWAP4 POP PUSH2 0x3697 DUP4 DUP6 DUP5 PUSH2 0x366F JUMP JUMPDEST PUSH2 0x36A0 DUP4 PUSH2 0x2C49 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x36C0 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x3660 JUMP JUMPDEST PUSH2 0x36CD PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x36DA PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x2A2C JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x36ED DUP2 DUP5 DUP7 PUSH2 0x367E JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x3740 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x3753 JUMPI PUSH2 0x3752 PUSH2 0x36F9 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x378F PUSH1 0x16 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x379A DUP3 PUSH2 0x3759 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x37BE DUP2 PUSH2 0x3782 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x37DA PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2A2C JUMP JUMPDEST PUSH2 0x37E7 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2A3B JUMP JUMPDEST PUSH2 0x37F4 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2F17 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3858 PUSH1 0x2E DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3863 DUP3 PUSH2 0x37FC JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3887 DUP2 PUSH2 0x384B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38C0 PUSH2 0x38BB PUSH2 0x38B6 DUP5 PUSH2 0x388E JUMP JUMPDEST PUSH2 0x354D JUMP JUMPDEST PUSH2 0x3898 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x38D0 DUP2 PUSH2 0x38A5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x38EB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x38C7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x395E PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x3921 JUMP JUMPDEST PUSH2 0x3968 DUP7 DUP4 PUSH2 0x3921 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x399B PUSH2 0x3996 PUSH2 0x3991 DUP5 PUSH2 0x2A73 JUMP JUMPDEST PUSH2 0x354D JUMP JUMPDEST PUSH2 0x2A73 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x39B5 DUP4 PUSH2 0x3980 JUMP JUMPDEST PUSH2 0x39C9 PUSH2 0x39C1 DUP3 PUSH2 0x39A2 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x392E JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x39DE PUSH2 0x39D1 JUMP JUMPDEST PUSH2 0x39E9 DUP2 DUP5 DUP5 PUSH2 0x39AC JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A0D JUMPI PUSH2 0x3A02 PUSH1 0x0 DUP3 PUSH2 0x39D6 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x39EF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x3A52 JUMPI PUSH2 0x3A23 DUP2 PUSH2 0x38FC JUMP JUMPDEST PUSH2 0x3A2C DUP5 PUSH2 0x3911 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x3A3B JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x3A4F PUSH2 0x3A47 DUP6 PUSH2 0x3911 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x39EE JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A75 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x3A57 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A8E DUP4 DUP4 PUSH2 0x3A64 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3AA8 DUP4 DUP4 PUSH2 0x38F1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AC1 JUMPI PUSH2 0x3AC0 PUSH2 0x2C5A JUMP JUMPDEST JUMPDEST PUSH2 0x3ACB DUP3 SLOAD PUSH2 0x3728 JUMP JUMPDEST PUSH2 0x3AD6 DUP3 DUP3 DUP6 PUSH2 0x3A11 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3B05 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x3AF3 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x3AFD DUP6 DUP3 PUSH2 0x3A82 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x3B65 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x3B13 DUP7 PUSH2 0x38FC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3B3B JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3B16 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x3B58 JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x3B54 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x3A64 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B7A DUP4 DUP6 PUSH2 0x2E54 JUMP JUMPDEST SWAP4 POP PUSH2 0x3B87 DUP4 DUP6 DUP5 PUSH2 0x366F JUMP JUMPDEST PUSH2 0x3B90 DUP4 PUSH2 0x2C49 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3BB6 DUP2 DUP5 DUP7 PUSH2 0x3B6E JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1B PUSH1 0x26 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3C26 DUP3 PUSH2 0x3BBF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C4A DUP2 PUSH2 0x3C0E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3C66 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3164 JUMP JUMPDEST PUSH2 0x3C73 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3164 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C85 DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH2 0x3C90 DUP4 PUSH2 0x2A73 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3CA8 JUMPI PUSH2 0x3CA7 PUSH2 0x3473 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CB9 DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH2 0x3CC4 DUP4 PUSH2 0x2A73 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3CD2 DUP2 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x3CE9 JUMPI PUSH2 0x3CE8 PUSH2 0x3473 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D2A DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH2 0x3D35 DUP4 PUSH2 0x2A73 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x3D45 JUMPI PUSH2 0x3D44 PUSH2 0x3CF0 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D5B DUP3 PUSH2 0x2A73 JUMP JUMPDEST SWAP2 POP PUSH2 0x3D66 DUP4 PUSH2 0x2A73 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3D7E JUMPI PUSH2 0x3D7D PUSH2 0x3473 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x546F6B656E4E6F74537570706F72746564000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DBA PUSH1 0x11 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3DC5 DUP3 PUSH2 0x3D84 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DE9 DUP2 PUSH2 0x3DAD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E7449735A65726F0000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E26 PUSH1 0xC DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3E31 DUP3 PUSH2 0x3DF0 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3E55 DUP2 PUSH2 0x3E19 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5468726F775A65726F4164647265737300000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E92 PUSH1 0x10 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3E9D DUP3 PUSH2 0x3E5C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3EC1 DUP2 PUSH2 0x3E85 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C6964496E737469747574696F6E436F646500000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EFE PUSH1 0x16 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3F09 DUP3 PUSH2 0x3EC8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3F2D DUP2 PUSH2 0x3EF1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F6A PUSH1 0x20 DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x3F75 DUP3 PUSH2 0x3F34 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3F99 DUP2 PUSH2 0x3F5D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FFC PUSH1 0x2B DUP4 PUSH2 0x338A JUMP JUMPDEST SWAP2 POP PUSH2 0x4007 DUP3 PUSH2 0x3FA0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x402B DUP2 PUSH2 0x3FEF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 SHR 0xBC 0xEA SWAP11 TIMESTAMP 0xB2 0xAC 0xB7 0xF7 CHAINID PUSH15 0xF2D6E066A41B76107A58A644E5BD38 0xE4 STOP DUP5 RETURN 0xF8 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"367:10240:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9143:487;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3753:1725;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1487:1454;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1833:500:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10260:96:12;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2064:101:0;;;:::i;:::-;;8794:119:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8623:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2630:263:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8980:157:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1441:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1483:344:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9683:179:12;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;875:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2899:161:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10087:120:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10453:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6381:546;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9922:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2314:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2339:285:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9143:487:12;9218:20;9250:33;9286:21;:31;9308:8;9286:31;;;;;;;;;;;9250:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9327:14;9344:12;:19;9327:36;;9373:27;9421:6;9403:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;9373:55;;9452:9;9447:145;9471:6;9467:1;:10;9447:145;;;9507:12;9520:1;9507:15;;;;;;;;:::i;:::-;;;;;;;;9495:6;9502:1;9495:9;;;;;;;;:::i;:::-;;;;;;;:27;;;;9564:3;;;;;;;9447:145;;;;9617:6;9610:13;;;;;9143:487;;;:::o;3753:1725::-;4030:7;4039;1186:18;;;;;;;;;;;1172:32;;:10;:32;;;1164:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4124:5:::1;:15;4130:8;4124:15;;;;;;;;;;;:27;;;;;;;;;;;;4123:28;4115:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4218:13;4234:5;:15;4240:8;4234:15;;;;;;;;;;;:21;;;;;;;;;;;;4218:37;;4364:14;4334:44;;:5;:15;4340:8;4334:15;;;;;;;;;;;:26;;;:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4520:21;4547:52;4562:8;4572:14;4547:52;;4588:10;4547:14;:52::i;:::-;4518:81;;4642:1;4612:5;:15;4618:8;4612:15;;;;;;;;;;;:26;;;;;;;;;;;;:31;;::::0;4609:296:::1;;4743:4;4713:5;:15;4719:8;4713:15;;;;;;;;;;;:27;;;:34;;;;;;;;;;;;;;;;;;4793:1;4765:5;:15;4771:8;4765:15;;;;;;;;;;;:25;;;:29;4761:134;;;4853:27;4871:8;4853:17;:27::i;:::-;4761:134;4609:296;4952:1;4927:10;:22;;;:26;4923:154;;;5013:5;5006:22;;;5029:12;;;;;;;;;;;5043:10;:22;;;5006:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4923:154;5139:5;5132:22;;;5155:18;5175:10;:34;;;5132:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5257:65;5274:11;;5287:5;5294:10;:27;;;5257:16;:65::i;:::-;5402:18;5360:77;;5383:8;5360:77;5368:13;5393:6;5422:14;5360:77;;;;;;;;:::i;:::-;;;;;;;;5455:8;5465:5;5447:24;;;;;;3753:1725:::0;;;;;;;;;;;:::o;1487:1454::-;1799:15;1862:80;1871:6;1879:7;1888:14;1904:19;1925:16;1862:8;:80::i;:::-;2007:6;2000:27;;;2028:10;2048:4;2055:7;2000:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2129:6;:18;2136:10;2129:18;;;;;;;;;;;;;;;;:21;;;;;;;;;:::i;:::-;;;;;;2387:10;2399:6;:18;2406:10;2399:18;;;;;;;;;;;;;;;;2376:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2366:53;;;;;;2356:63;;2476:334;;;;;;;;2504:10;2476:334;;;;;;2535:6;2476:334;;;;;;2575:19;2476:334;;;;;;2619:10;2476:334;;;;2649:5;2476:334;;;;;;2681:5;2476:334;;;;;;2715:14;2476:334;;;;;;2762:7;;2476:334;;;;;;;;2792:7;2476:334;;;2459:5;:14;2465:7;2459:14;;;;;;;;;;;:351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2880:7;2871;2863:6;2855:79;;;2889:5;2896:16;2914:6;2922:11;;2855:79;;;;;;;;;;:::i;:::-;;;;;;;;1487:1454;;;;;;;;;;;;:::o;1833:500:13:-;1334:13:0;:11;:13::i;:::-;1950:14:13::1;1967:12;:19;1950:36;;2001:6;1996:331;2017:6;2013:1;:10;1996:331;;;2041:21;:31;2063:8;2041:31;;;;;;;;;;;2078:12;2091:1;2078:15;;;;;;;;:::i;:::-;;;;;;;;2041:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2160:97;;;;;;;;2202:12;2215:1;2202:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2160:97;;;;2234:8;2160:97;;::::0;2108:27:::1;:49;2136:12;2149:1;2136:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2108:49;;;;;;;;;;;:149;;;;;;;;;;;;;;;;;;;2299:3;;;;;;;1996:331;;;;1939:394;1833:500:::0;;:::o;10260:96:12:-;10307:12;10338:11;10331:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10260:96;:::o;2064:101:0:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;8794:119:12:-;8858:4;8881:17;:25;8899:6;8881:25;;;;;;;;;;;;;;;;;;;;;;;;;8874:32;;8794:119;;;:::o;8623:115::-;8685:12;;:::i;:::-;8716:5;:15;8722:8;8716:15;;;;;;;;;;;8709:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:115;;;:::o;2630:263:13:-;1334:13:0;:11;:13::i;:::-;2746:1:13::1;2729:19;;:5;:19;;::::0;2721:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2789:13;:4;:13:::0;2785:39:::1;;2819:5;2804:12;;:20;;;;;;;;;;;;;;;;;;2785:39;2838:20;:4;:20:::0;2834:52:::1;;2881:5;2860:18;;:26;;;;;;;;;;;;;;;;;;2834:52;2630:263:::0;;:::o;8980:157:12:-;9054:24;;:::i;:::-;9097:27;:33;9125:4;9097:33;;;;;;;;;;;9090:40;;;;;;;;;;;;;;;;;;;;;;;;;;;8980:157;;;:::o;1441:85:0:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;1483:344:13:-;1334:13:0;:11;:13::i;:::-;1607:1:13::1;1590:19;;:5;:19;;::::0;1582:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1650:15;:4;:15:::0;1646:54:::1;;1694:6;1667:17;:24;1685:5;1667:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1646:54;1714:19;:4;:19:::0;1710:55:::1;;1759:6;1735:14;:21;1750:5;1735:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1710:55;1781:39;1800:4;1806:5;1813:6;1781:39;;;;;;;;:::i;:::-;;;;;;;;1483:344:::0;;;:::o;9683:179:12:-;9739:7;9757;9775;9806:18;;;;;;;;;;;9826:19;;;;;;;;;;;9847:7;;9799:56;;;;;;9683:179;;;:::o;875:249::-;3279:19:1;3302:13;;;;;;;;;;;3301:14;3279:36;;3347:14;:34;;;;;3380:1;3365:12;;;;;;;;;;:16;;;3347:34;3346:108;;;;3388:44;3426:4;3388:29;:44::i;:::-;3387:45;:66;;;;;3452:1;3436:12;;;;;;;;;;:17;;;3387:66;3346:108;3325:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;3551:1;3536:12;;:16;;;;;;;;;;;;;;;;;;3566:14;3562:65;;;3612:4;3596:13;;:20;;;;;;;;;;;;;;;;;;3562:65;972:4:12::1;945:17;:24;963:5;945:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;999:7;989;:17;;;;1038:4;1017:18;;:25;;;;;;;;;;;;;;;;;;1080:3;1058:19;;:25;;;;;;;;;;;;;;;;;;1101:16;:14;:16::i;:::-;3651:14:1::0;3647:99;;;3697:5;3681:13;;:21;;;;;;;;;;;;;;;;;;3721:14;3733:1;3721:14;;;;;;:::i;:::-;;;;;;;;3647:99;3269:483;875:249:12;:::o;2899:161:13:-;1334:13:0;:11;:13::i;:::-;3003:10:13::1;;2989:11;:24;;;;;;;:::i;:::-;;3028:25;3042:10;;3028:25;;;;;;;:::i;:::-;;;;;;;;2899:161:::0;;:::o;10087:120:12:-;10155:4;10178:14;:22;10193:6;10178:22;;;;;;;;;;;;;;;;;;;;;;;;;10171:29;;10087:120;;;:::o;10453:151::-;1334:13:0;:11;:13::i;:::-;10560:6:12::1;10553:23;;;10577:10;10589:7;10553:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10453:151:::0;;;:::o;6381:546::-;6466:4;1186:18;;;;;;;;;;;1172:32;;:10;:32;;;1164:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;6548:5:::1;:15;6554:8;6548:15;;;;;;;;;;;:27;;;;;;;;;;;;6547:28;6539:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6664:4;6634:5;:15;6640:8;6634:15;;;;;;;;;;;:27;;;:34;;;;;;;;;;;;;;;;;;6707:1;6678:5;:15;6684:8;6678:15;;;;;;;;;;;:26;;;:30;;;;;;;;;;;;;;;;;;6756:5;:15;6762:8;6756:15;;;;;;;;;;;:21;;;;;;;;;;;;6749:38;;;6788:5;:15;6794:8;6788:15;;;;;;;;;;;:29;;;;;;;;;;;;6819:5;:15;6825:8;6819:15;;;;;;;;;;;:22;;;6749:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6882:8;6873:26;6892:6;6873:26;;;;;;:::i;:::-;;;;;;;;6916:4;6909:11;;6381:546:::0;;;;:::o;9922:105::-;9976:7;10002:18;;;;;;;;;;;9995:25;;9922:105;:::o;2314:198:0:-;1334:13;:11;:13::i;:::-;2422:1:::1;2402:22;;:8;:22;;::::0;2394:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:28;2496:8;2477:18;:28::i;:::-;2314:198:::0;:::o;2339:285:13:-;1334:13:0;:11;:13::i;:::-;2476:19:13::1;2455:18;;:40;;;;;;;;;;;;;;;;;;2527:20;2505:19;;:42;;;;;;;;;;;;;;;;;;2562:55;2575:19;2596:20;2562:55;;;;;;;:::i;:::-;;;;;;;;2339:285:::0;;:::o;6933:1443:12:-;7036:21;;:::i;:::-;7130:14;7147:5;:15;7153:8;7147:15;;;;;;;;;;;:22;;;7130:39;;7235:5;:15;7241:8;7235:15;;;;;;;;;;;:25;;;7226:6;:34;;;;:::i;:::-;7217:43;;7404:7;;7386:14;7377:23;;:6;:23;;;;:::i;:::-;7376:35;;;;:::i;:::-;7339:10;:34;;:72;;;;;7564:7;;7542:18;;;;;;;;;;;7505:55;;:10;:34;;;:55;;;;:::i;:::-;7504:67;;;;:::i;:::-;7479:10;:22;;:92;;;;;7744:10;:22;;;7707:10;:34;;;:59;;;;:::i;:::-;7669:10;:34;;:98;;;;;7919:7;;7896:19;;;;;;;;;;;7871:44;;:10;:22;;;:44;;;;:::i;:::-;7870:56;;;;:::i;:::-;7840:10;:27;;:86;;;;;8123:10;8119:251;;;8187:10;:22;;;8149:10;:34;;:60;;;;;;;:::i;:::-;;;;;;;;8248:1;8223:10;:22;;:26;;;;;8119:251;;;8331:10;:27;;;8306:10;:22;;;:52;;;;:::i;:::-;8280:10;:22;;:79;;;;;8119:251;7060:1316;6933:1443;;;;;:::o;5992:343::-;6056:17;6076:5;:15;6082:8;6076:15;;;;;;;;;;;:34;;;;;;;;;;;;6056:54;;6120:12;6135:5;:15;6141:8;6135:15;;;;;;;;;;;:25;;;6120:40;;6208:5;:15;6214:8;6208:15;;;;;;;;;;;:21;;;;;;;;;;;;6201:38;;;6240:9;6251:4;6201:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6323:4;6312:9;6294:34;;;;;;;;;;;;6046:289;;5992:343;:::o;5484:502::-;5604:14;5621:11;;:18;;5604:35;;5649:24;5697:6;5676:18;:27;;;;:::i;:::-;5649:54;;5717:9;5713:267;5736:6;5732:1;:10;5713:267;;;5767:5;5760:22;;;5783:11;;5795:1;5783:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5799:16;5760:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5893:16;5877:11;;5889:1;5877:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5861:49;;;;;;;;;;;;5952:3;;;;;;;5713:267;;;;5594:392;;5484:502;;;;:::o;2947:559::-;3158:17;:25;3176:6;3158:25;;;;;;;;;;;;;;;;;;;;;;;;;3150:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;3233:1;3223:7;:11;3215:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;3295:1;3269:28;;:14;:28;;;3261:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3367:1;3336:33;;:19;:33;;;3328:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;3470:1;3462:10;;3408:27;:45;3436:16;3408:45;;;;;;;;;;;:50;;;:64;3400:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;2947:559;;;;;:::o;1599:130:0:-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;2666:187::-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;1423:320:5:-;1483:4;1735:1;1713:7;:19;;;:23;1706:30;;1423:320;;;:::o;1003:95:0:-;5374:13:1;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1065:26:0::1;:24;:26::i;:::-;1003:95::o:0;850:96:6:-;903:7;929:10;922:17;;850:96;:::o;1104:111:0:-;5374:13:1;;;;;;;;;;;5366:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:32:0::1;1195:12;:10;:12::i;:::-;1176:18;:32::i;:::-;1104:111::o:0;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:143::-;1121:6;1155:5;1149:12;1139:22;;1025:143;;;:::o;1174:213::-;1302:11;1336:6;1331:3;1324:19;1376:4;1371:3;1367:14;1352:29;;1174:213;;;;:::o;1393:161::-;1489:4;1512:3;1504:11;;1542:4;1537:3;1533:14;1525:22;;1393:161;;;:::o;1560:108::-;1637:24;1655:5;1637:24;:::i;:::-;1632:3;1625:37;1560:108;;:::o;1768:505::-;1913:4;1908:3;1904:14;2000:4;1993:5;1989:16;1983:23;2019:63;2076:4;2071:3;2067:14;2053:12;2019:63;:::i;:::-;1928:164;2174:4;2167:5;2163:16;2157:23;2193:63;2250:4;2245:3;2241:14;2227:12;2193:63;:::i;:::-;2102:164;1882:391;1768:505;;:::o;2279:295::-;2406:10;2427:104;2527:3;2519:6;2427:104;:::i;:::-;2563:4;2558:3;2554:14;2540:28;;2279:295;;;;:::o;2580:142::-;2679:4;2711;2706:3;2702:14;2694:22;;2580:142;;;:::o;2826:964::-;3003:3;3032:83;3109:5;3032:83;:::i;:::-;3131:115;3239:6;3234:3;3131:115;:::i;:::-;3124:122;;3270:85;3349:5;3270:85;:::i;:::-;3378:7;3409:1;3394:371;3419:6;3416:1;3413:13;3394:371;;;3495:6;3489:13;3522:121;3639:3;3624:13;3522:121;:::i;:::-;3515:128;;3666:89;3748:6;3666:89;:::i;:::-;3656:99;;3454:311;3441:1;3438;3434:9;3429:14;;3394:371;;;3398:14;3781:3;3774:10;;3008:782;;;2826:964;;;;:::o;3796:489::-;3997:4;4035:2;4024:9;4020:18;4012:26;;4084:9;4078:4;4074:20;4070:1;4059:9;4055:17;4048:47;4112:166;4273:4;4264:6;4112:166;:::i;:::-;4104:174;;3796:489;;;;:::o;4291:117::-;4400:1;4397;4390:12;4414:117;4523:1;4520;4513:12;4537:117;4646:1;4643;4636:12;4677:568;4750:8;4760:6;4810:3;4803:4;4795:6;4791:17;4787:27;4777:122;;4818:79;;:::i;:::-;4777:122;4931:6;4918:20;4908:30;;4961:18;4953:6;4950:30;4947:117;;;4983:79;;:::i;:::-;4947:117;5097:4;5089:6;5085:17;5073:29;;5151:3;5143:4;5135:6;5131:17;5121:8;5117:32;5114:41;5111:128;;;5158:79;;:::i;:::-;5111:128;4677:568;;;;;:::o;5251:126::-;5288:7;5328:42;5321:5;5317:54;5306:65;;5251:126;;;:::o;5383:96::-;5420:7;5449:24;5467:5;5449:24;:::i;:::-;5438:35;;5383:96;;;:::o;5485:122::-;5558:24;5576:5;5558:24;:::i;:::-;5551:5;5548:35;5538:63;;5597:1;5594;5587:12;5538:63;5485:122;:::o;5613:139::-;5659:5;5697:6;5684:20;5675:29;;5713:33;5740:5;5713:33;:::i;:::-;5613:139;;;;:::o;5758:101::-;5794:7;5834:18;5827:5;5823:30;5812:41;;5758:101;;;:::o;5865:120::-;5937:23;5954:5;5937:23;:::i;:::-;5930:5;5927:34;5917:62;;5975:1;5972;5965:12;5917:62;5865:120;:::o;5991:137::-;6036:5;6074:6;6061:20;6052:29;;6090:32;6116:5;6090:32;:::i;:::-;5991:137;;;;:::o;6134:90::-;6168:7;6211:5;6204:13;6197:21;6186:32;;6134:90;;;:::o;6230:116::-;6300:21;6315:5;6300:21;:::i;:::-;6293:5;6290:32;6280:60;;6336:1;6333;6326:12;6280:60;6230:116;:::o;6352:133::-;6395:5;6433:6;6420:20;6411:29;;6449:30;6473:5;6449:30;:::i;:::-;6352:133;;;;:::o;6491:1425::-;6627:6;6635;6643;6651;6659;6667;6675;6683;6732:3;6720:9;6711:7;6707:23;6703:33;6700:120;;;6739:79;;:::i;:::-;6700:120;6859:1;6884:53;6929:7;6920:6;6909:9;6905:22;6884:53;:::i;:::-;6874:63;;6830:117;6986:2;7012:53;7057:7;7048:6;7037:9;7033:22;7012:53;:::i;:::-;7002:63;;6957:118;7114:2;7140:53;7185:7;7176:6;7165:9;7161:22;7140:53;:::i;:::-;7130:63;;7085:118;7270:2;7259:9;7255:18;7242:32;7301:18;7293:6;7290:30;7287:117;;;7323:79;;:::i;:::-;7287:117;7436:80;7508:7;7499:6;7488:9;7484:22;7436:80;:::i;:::-;7418:98;;;;7213:313;7565:3;7592:53;7637:7;7628:6;7617:9;7613:22;7592:53;:::i;:::-;7582:63;;7536:119;7694:3;7721:52;7765:7;7756:6;7745:9;7741:22;7721:52;:::i;:::-;7711:62;;7665:118;7822:3;7849:50;7891:7;7882:6;7871:9;7867:22;7849:50;:::i;:::-;7839:60;;7793:116;6491:1425;;;;;;;;;;;:::o;7922:118::-;8009:24;8027:5;8009:24;:::i;:::-;8004:3;7997:37;7922:118;;:::o;8046:::-;8133:24;8151:5;8133:24;:::i;:::-;8128:3;8121:37;8046:118;;:::o;8170:332::-;8291:4;8329:2;8318:9;8314:18;8306:26;;8342:71;8410:1;8399:9;8395:17;8386:6;8342:71;:::i;:::-;8423:72;8491:2;8480:9;8476:18;8467:6;8423:72;:::i;:::-;8170:332;;;;;:::o;8508:77::-;8545:7;8574:5;8563:16;;8508:77;;;:::o;8591:122::-;8664:24;8682:5;8664:24;:::i;:::-;8657:5;8654:35;8644:63;;8703:1;8700;8693:12;8644:63;8591:122;:::o;8719:139::-;8765:5;8803:6;8790:20;8781:29;;8819:33;8846:5;8819:33;:::i;:::-;8719:139;;;;:::o;8864:109::-;8900:7;8940:26;8933:5;8929:38;8918:49;;8864:109;;;:::o;8979:120::-;9051:23;9068:5;9051:23;:::i;:::-;9044:5;9041:34;9031:62;;9089:1;9086;9079:12;9031:62;8979:120;:::o;9105:137::-;9150:5;9188:6;9175:20;9166:29;;9204:32;9230:5;9204:32;:::i;:::-;9105:137;;;;:::o;9262:553::-;9320:8;9330:6;9380:3;9373:4;9365:6;9361:17;9357:27;9347:122;;9388:79;;:::i;:::-;9347:122;9501:6;9488:20;9478:30;;9531:18;9523:6;9520:30;9517:117;;;9553:79;;:::i;:::-;9517:117;9667:4;9659:6;9655:17;9643:29;;9721:3;9713:4;9705:6;9701:17;9691:8;9687:32;9684:41;9681:128;;;9728:79;;:::i;:::-;9681:128;9262:553;;;;;:::o;9821:1693::-;9963:6;9971;9979;9987;9995;10003;10011;10019;10027;10035;10084:3;10072:9;10063:7;10059:23;10055:33;10052:120;;;10091:79;;:::i;:::-;10052:120;10211:1;10236:53;10281:7;10272:6;10261:9;10257:22;10236:53;:::i;:::-;10226:63;;10182:117;10338:2;10364:53;10409:7;10400:6;10389:9;10385:22;10364:53;:::i;:::-;10354:63;;10309:118;10466:2;10492:53;10537:7;10528:6;10517:9;10513:22;10492:53;:::i;:::-;10482:63;;10437:118;10594:2;10620:53;10665:7;10656:6;10645:9;10641:22;10620:53;:::i;:::-;10610:63;;10565:118;10722:3;10749:52;10793:7;10784:6;10773:9;10769:22;10749:52;:::i;:::-;10739:62;;10693:118;10850:3;10877:53;10922:7;10913:6;10902:9;10898:22;10877:53;:::i;:::-;10867:63;;10821:119;10979:3;11006:53;11051:7;11042:6;11031:9;11027:22;11006:53;:::i;:::-;10996:63;;10950:119;11108:3;11135:53;11180:7;11171:6;11160:9;11156:22;11135:53;:::i;:::-;11125:63;;11079:119;11265:3;11254:9;11250:19;11237:33;11297:18;11289:6;11286:30;11283:117;;;11319:79;;:::i;:::-;11283:117;11432:65;11489:7;11480:6;11469:9;11465:22;11432:65;:::i;:::-;11414:83;;;;11208:299;9821:1693;;;;;;;;;;;;;:::o;11520:222::-;11613:4;11651:2;11640:9;11636:18;11628:26;;11664:71;11732:1;11721:9;11717:17;11708:6;11664:71;:::i;:::-;11520:222;;;;:::o;11748:102::-;11789:6;11840:2;11836:7;11831:2;11824:5;11820:14;11816:28;11806:38;;11748:102;;;:::o;11856:180::-;11904:77;11901:1;11894:88;12001:4;11998:1;11991:15;12025:4;12022:1;12015:15;12042:281;12125:27;12147:4;12125:27;:::i;:::-;12117:6;12113:40;12255:6;12243:10;12240:22;12219:18;12207:10;12204:34;12201:62;12198:88;;;12266:18;;:::i;:::-;12198:88;12306:10;12302:2;12295:22;12085:238;12042:281;;:::o;12329:129::-;12363:6;12390:20;;:::i;:::-;12380:30;;12419:33;12447:4;12439:6;12419:33;:::i;:::-;12329:129;;;:::o;12464:340::-;12570:4;12660:18;12652:6;12649:30;12646:56;;;12682:18;;:::i;:::-;12646:56;12732:4;12724:6;12720:17;12712:25;;12792:4;12786;12782:15;12774:23;;12464:340;;;:::o;12810:117::-;12919:1;12916;12909:12;13105:578;13183:5;13227:4;13215:9;13210:3;13206:19;13202:30;13199:117;;;13235:79;;:::i;:::-;13199:117;13334:21;13350:4;13334:21;:::i;:::-;13325:30;;13414:1;13454:49;13499:3;13490:6;13479:9;13475:22;13454:49;:::i;:::-;13447:4;13440:5;13436:16;13429:75;13365:150;13574:2;13615:49;13660:3;13651:6;13640:9;13636:22;13615:49;:::i;:::-;13608:4;13601:5;13597:16;13590:75;13525:151;13105:578;;;;:::o;13740:797::-;13865:5;13890:110;13906:93;13992:6;13906:93;:::i;:::-;13890:110;:::i;:::-;13881:119;;14020:5;14049:6;14042:5;14035:21;14083:4;14076:5;14072:16;14065:23;;14136:4;14128:6;14124:17;14116:6;14112:30;14165:3;14157:6;14154:15;14151:122;;;14184:79;;:::i;:::-;14151:122;14299:6;14282:249;14316:6;14311:3;14308:15;14282:249;;;14391:3;14420:66;14482:3;14470:10;14420:66;:::i;:::-;14415:3;14408:79;14516:4;14511:3;14507:14;14500:21;;14358:173;14342:4;14337:3;14333:14;14326:21;;14282:249;;;14286:21;13871:666;;13740:797;;;;;:::o;14594:428::-;14694:5;14743:3;14736:4;14728:6;14724:17;14720:27;14710:122;;14751:79;;:::i;:::-;14710:122;14868:6;14855:20;14893:123;15012:3;15004:6;14997:4;14989:6;14985:17;14893:123;:::i;:::-;14884:132;;14700:322;14594:428;;;;:::o;15028:742::-;15150:6;15158;15207:2;15195:9;15186:7;15182:23;15178:32;15175:119;;;15213:79;;:::i;:::-;15175:119;15333:1;15358:53;15403:7;15394:6;15383:9;15379:22;15358:53;:::i;:::-;15348:63;;15304:117;15488:2;15477:9;15473:18;15460:32;15519:18;15511:6;15508:30;15505:117;;;15541:79;;:::i;:::-;15505:117;15646:107;15745:7;15736:6;15725:9;15721:22;15646:107;:::i;:::-;15636:117;;15431:332;15028:742;;;;;:::o;15776:98::-;15827:6;15861:5;15855:12;15845:22;;15776:98;;;:::o;15880:168::-;15963:11;15997:6;15992:3;15985:19;16037:4;16032:3;16028:14;16013:29;;15880:168;;;;:::o;16054:246::-;16135:1;16145:113;16159:6;16156:1;16153:13;16145:113;;;16244:1;16239:3;16235:11;16229:18;16225:1;16220:3;16216:11;16209:39;16181:2;16178:1;16174:10;16169:15;;16145:113;;;16292:1;16283:6;16278:3;16274:16;16267:27;16116:184;16054:246;;;:::o;16306:373::-;16392:3;16420:38;16452:5;16420:38;:::i;:::-;16474:70;16537:6;16532:3;16474:70;:::i;:::-;16467:77;;16553:65;16611:6;16606:3;16599:4;16592:5;16588:16;16553:65;:::i;:::-;16643:29;16665:6;16643:29;:::i;:::-;16638:3;16634:39;16627:46;;16396:283;16306:373;;;;:::o;16685:309::-;16796:4;16834:2;16823:9;16819:18;16811:26;;16883:9;16877:4;16873:20;16869:1;16858:9;16854:17;16847:47;16911:76;16982:4;16973:6;16911:76;:::i;:::-;16903:84;;16685:309;;;;:::o;17000:329::-;17059:6;17108:2;17096:9;17087:7;17083:23;17079:32;17076:119;;;17114:79;;:::i;:::-;17076:119;17234:1;17259:53;17304:7;17295:6;17284:9;17280:22;17259:53;:::i;:::-;17249:63;;17205:117;17000:329;;;;:::o;17335:109::-;17416:21;17431:5;17416:21;:::i;:::-;17411:3;17404:34;17335:109;;:::o;17450:210::-;17537:4;17575:2;17564:9;17560:18;17552:26;;17588:65;17650:1;17639:9;17635:17;17626:6;17588:65;:::i;:::-;17450:210;;;;:::o;17666:108::-;17743:24;17761:5;17743:24;:::i;:::-;17738:3;17731:37;17666:108;;:::o;17780:::-;17857:24;17875:5;17857:24;:::i;:::-;17852:3;17845:37;17780:108;;:::o;17894:105::-;17969:23;17986:5;17969:23;:::i;:::-;17964:3;17957:36;17894:105;;:::o;18005:99::-;18076:21;18091:5;18076:21;:::i;:::-;18071:3;18064:34;18005:99;;:::o;18166:1763::-;18309:6;18304:3;18300:16;18400:4;18393:5;18389:16;18383:23;18419:63;18476:4;18471:3;18467:14;18453:12;18419:63;:::i;:::-;18326:166;18575:4;18568:5;18564:16;18558:23;18594:63;18651:4;18646:3;18642:14;18628:12;18594:63;:::i;:::-;18502:165;18763:4;18756:5;18752:16;18746:23;18782:63;18839:4;18834:3;18830:14;18816:12;18782:63;:::i;:::-;18677:178;18942:4;18935:5;18931:16;18925:23;18961:63;19018:4;19013:3;19009:14;18995:12;18961:63;:::i;:::-;18865:169;19116:4;19109:5;19105:16;19099:23;19135:61;19190:4;19185:3;19181:14;19167:12;19135:61;:::i;:::-;19044:162;19295:4;19288:5;19284:16;19278:23;19314:57;19365:4;19360:3;19356:14;19342:12;19314:57;:::i;:::-;19216:165;19472:4;19465:5;19461:16;19455:23;19491:63;19548:4;19543:3;19539:14;19525:12;19491:63;:::i;:::-;19391:173;19652:4;19645:5;19641:16;19635:23;19671:61;19726:4;19721:3;19717:14;19703:12;19671:61;:::i;:::-;19574:168;19826:6;19819:5;19815:18;19809:25;19847:65;19904:6;19899:3;19895:16;19881:12;19847:65;:::i;:::-;19752:170;18278:1651;18166:1763;;:::o;19935:315::-;20074:4;20112:3;20101:9;20097:19;20089:27;;20126:117;20240:1;20229:9;20225:17;20216:6;20126:117;:::i;:::-;19935:315;;;;:::o;20256:474::-;20324:6;20332;20381:2;20369:9;20360:7;20356:23;20352:32;20349:119;;;20387:79;;:::i;:::-;20349:119;20507:1;20532:53;20577:7;20568:6;20557:9;20553:22;20532:53;:::i;:::-;20522:63;;20478:117;20634:2;20660:53;20705:7;20696:6;20685:9;20681:22;20660:53;:::i;:::-;20650:63;;20605:118;20256:474;;;;;:::o;20842:531::-;21009:4;21004:3;21000:14;21096:4;21089:5;21085:16;21079:23;21115:63;21172:4;21167:3;21163:14;21149:12;21115:63;:::i;:::-;21024:164;21274:4;21267:5;21263:16;21257:23;21293:63;21350:4;21345:3;21341:14;21327:12;21293:63;:::i;:::-;21198:168;20978:395;20842:531;;:::o;21379:362::-;21542:4;21580:2;21569:9;21565:18;21557:26;;21593:141;21731:1;21720:9;21716:17;21707:6;21593:141;:::i;:::-;21379:362;;;;:::o;21747:222::-;21840:4;21878:2;21867:9;21863:18;21855:26;;21891:71;21959:1;21948:9;21944:17;21935:6;21891:71;:::i;:::-;21747:222;;;;:::o;21975:613::-;22049:6;22057;22065;22114:2;22102:9;22093:7;22089:23;22085:32;22082:119;;;22120:79;;:::i;:::-;22082:119;22240:1;22265:53;22310:7;22301:6;22290:9;22286:22;22265:53;:::i;:::-;22255:63;;22211:117;22367:2;22393:53;22438:7;22429:6;22418:9;22414:22;22393:53;:::i;:::-;22383:63;;22338:118;22495:2;22521:50;22563:7;22554:6;22543:9;22539:22;22521:50;:::i;:::-;22511:60;;22466:115;21975:613;;;;;:::o;22594:118::-;22631:7;22671:34;22664:5;22660:46;22649:57;;22594:118;;;:::o;22718:::-;22805:24;22823:5;22805:24;:::i;:::-;22800:3;22793:37;22718:118;;:::o;22842:::-;22929:24;22947:5;22929:24;:::i;:::-;22924:3;22917:37;22842:118;;:::o;22966:442::-;23115:4;23153:2;23142:9;23138:18;23130:26;;23166:71;23234:1;23223:9;23219:17;23210:6;23166:71;:::i;:::-;23247:72;23315:2;23304:9;23300:18;23291:6;23247:72;:::i;:::-;23329;23397:2;23386:9;23382:18;23373:6;23329:72;:::i;:::-;22966:442;;;;;;:::o;23427:552::-;23484:8;23494:6;23544:3;23537:4;23529:6;23525:17;23521:27;23511:122;;23552:79;;:::i;:::-;23511:122;23665:6;23652:20;23642:30;;23695:18;23687:6;23684:30;23681:117;;;23717:79;;:::i;:::-;23681:117;23831:4;23823:6;23819:17;23807:29;;23885:3;23877:4;23869:6;23865:17;23855:8;23851:32;23848:41;23845:128;;;23892:79;;:::i;:::-;23845:128;23427:552;;;;;:::o;23985:527::-;24055:6;24063;24112:2;24100:9;24091:7;24087:23;24083:32;24080:119;;;24118:79;;:::i;:::-;24080:119;24266:1;24255:9;24251:17;24238:31;24296:18;24288:6;24285:30;24282:117;;;24318:79;;:::i;:::-;24282:117;24431:64;24487:7;24478:6;24467:9;24463:22;24431:64;:::i;:::-;24413:82;;;;24209:296;23985:527;;;;;:::o;24518:619::-;24595:6;24603;24611;24660:2;24648:9;24639:7;24635:23;24631:32;24628:119;;;24666:79;;:::i;:::-;24628:119;24786:1;24811:53;24856:7;24847:6;24836:9;24832:22;24811:53;:::i;:::-;24801:63;;24757:117;24913:2;24939:53;24984:7;24975:6;24964:9;24960:22;24939:53;:::i;:::-;24929:63;;24884:118;25041:2;25067:53;25112:7;25103:6;25092:9;25088:22;25067:53;:::i;:::-;25057:63;;25012:118;24518:619;;;;;:::o;25143:474::-;25211:6;25219;25268:2;25256:9;25247:7;25243:23;25239:32;25236:119;;;25274:79;;:::i;:::-;25236:119;25394:1;25419:53;25464:7;25455:6;25444:9;25440:22;25419:53;:::i;:::-;25409:63;;25365:117;25521:2;25547:53;25592:7;25583:6;25572:9;25568:22;25547:53;:::i;:::-;25537:63;;25492:118;25143:474;;;;;:::o;25623:122::-;25696:24;25714:5;25696:24;:::i;:::-;25689:5;25686:35;25676:63;;25735:1;25732;25725:12;25676:63;25623:122;:::o;25751:139::-;25797:5;25835:6;25822:20;25813:29;;25851:33;25878:5;25851:33;:::i;:::-;25751:139;;;;:::o;25896:474::-;25964:6;25972;26021:2;26009:9;26000:7;25996:23;25992:32;25989:119;;;26027:79;;:::i;:::-;25989:119;26147:1;26172:53;26217:7;26208:6;26197:9;26193:22;26172:53;:::i;:::-;26162:63;;26118:117;26274:2;26300:53;26345:7;26336:6;26325:9;26321:22;26300:53;:::i;:::-;26290:63;;26245:118;25896:474;;;;;:::o;26376:180::-;26424:77;26421:1;26414:88;26521:4;26518:1;26511:15;26545:4;26542:1;26535:15;26562:169;26646:11;26680:6;26675:3;26668:19;26720:4;26715:3;26711:14;26696:29;;26562:169;;;;:::o;26737:164::-;26877:16;26873:1;26865:6;26861:14;26854:40;26737:164;:::o;26907:366::-;27049:3;27070:67;27134:2;27129:3;27070:67;:::i;:::-;27063:74;;27146:93;27235:3;27146:93;:::i;:::-;27264:2;27259:3;27255:12;27248:19;;26907:366;;;:::o;27279:419::-;27445:4;27483:2;27472:9;27468:18;27460:26;;27532:9;27526:4;27522:20;27518:1;27507:9;27503:17;27496:47;27560:131;27686:4;27560:131;:::i;:::-;27552:139;;27279:419;;;:::o;27704:164::-;27844:16;27840:1;27832:6;27828:14;27821:40;27704:164;:::o;27874:366::-;28016:3;28037:67;28101:2;28096:3;28037:67;:::i;:::-;28030:74;;28113:93;28202:3;28113:93;:::i;:::-;28231:2;28226:3;28222:12;28215:19;;27874:366;;;:::o;28246:419::-;28412:4;28450:2;28439:9;28435:18;28427:26;;28499:9;28493:4;28489:20;28485:1;28474:9;28470:17;28463:47;28527:131;28653:4;28527:131;:::i;:::-;28519:139;;28246:419;;;:::o;28671:180::-;28719:77;28716:1;28709:88;28816:4;28813:1;28806:15;28840:4;28837:1;28830:15;28857:216;28896:4;28916:19;28933:1;28916:19;:::i;:::-;28911:24;;28949:19;28966:1;28949:19;:::i;:::-;28944:24;;28992:1;28989;28985:9;28977:17;;29016:26;29010:4;29007:36;29004:62;;;29046:18;;:::i;:::-;29004:62;28857:216;;;;:::o;29079:332::-;29200:4;29238:2;29227:9;29223:18;29215:26;;29251:71;29319:1;29308:9;29304:17;29295:6;29251:71;:::i;:::-;29332:72;29400:2;29389:9;29385:18;29376:6;29332:72;:::i;:::-;29079:332;;;;;:::o;29417:137::-;29471:5;29502:6;29496:13;29487:22;;29518:30;29542:5;29518:30;:::i;:::-;29417:137;;;;:::o;29560:345::-;29627:6;29676:2;29664:9;29655:7;29651:23;29647:32;29644:119;;;29682:79;;:::i;:::-;29644:119;29802:1;29827:61;29880:7;29871:6;29860:9;29856:22;29827:61;:::i;:::-;29817:71;;29773:125;29560:345;;;;:::o;29911:60::-;29939:3;29960:5;29953:12;;29911:60;;;:::o;29977:138::-;30025:9;30058:51;30075:33;30084:23;30101:5;30084:23;:::i;:::-;30075:33;:::i;:::-;30058:51;:::i;:::-;30045:64;;29977:138;;;:::o;30121:127::-;30206:35;30235:5;30206:35;:::i;:::-;30201:3;30194:48;30121:127;;:::o;30254:438::-;30401:4;30439:2;30428:9;30424:18;30416:26;;30452:71;30520:1;30509:9;30505:17;30496:6;30452:71;:::i;:::-;30533:72;30601:2;30590:9;30586:18;30577:6;30533:72;:::i;:::-;30615:70;30681:2;30670:9;30666:18;30657:6;30615:70;:::i;:::-;30254:438;;;;;;:::o;30698:442::-;30847:4;30885:2;30874:9;30870:18;30862:26;;30898:71;30966:1;30955:9;30951:17;30942:6;30898:71;:::i;:::-;30979:72;31047:2;31036:9;31032:18;31023:6;30979:72;:::i;:::-;31061;31129:2;31118:9;31114:18;31105:6;31061:72;:::i;:::-;30698:442;;;;;;:::o;31146:233::-;31185:3;31208:24;31226:5;31208:24;:::i;:::-;31199:33;;31254:66;31247:5;31244:77;31241:103;;31324:18;;:::i;:::-;31241:103;31371:1;31364:5;31360:13;31353:20;;31146:233;;;:::o;31385:140::-;31434:9;31467:52;31485:33;31494:23;31511:5;31494:23;:::i;:::-;31485:33;:::i;:::-;31467:52;:::i;:::-;31454:65;;31385:140;;;:::o;31531:129::-;31617:36;31647:5;31617:36;:::i;:::-;31612:3;31605:49;31531:129;;:::o;31666:146::-;31763:6;31758:3;31753;31740:30;31804:1;31795:6;31790:3;31786:16;31779:27;31666:146;;;:::o;31842:317::-;31940:3;31961:71;32025:6;32020:3;31961:71;:::i;:::-;31954:78;;32042:56;32091:6;32086:3;32079:5;32042:56;:::i;:::-;32123:29;32145:6;32123:29;:::i;:::-;32118:3;32114:39;32107:46;;31842:317;;;;;:::o;32165:662::-;32371:4;32409:3;32398:9;32394:19;32386:27;;32423:70;32490:1;32479:9;32475:17;32466:6;32423:70;:::i;:::-;32503:72;32571:2;32560:9;32556:18;32547:6;32503:72;:::i;:::-;32585;32653:2;32642:9;32638:18;32629:6;32585:72;:::i;:::-;32704:9;32698:4;32694:20;32689:2;32678:9;32674:18;32667:48;32732:88;32815:4;32806:6;32798;32732:88;:::i;:::-;32724:96;;32165:662;;;;;;;;:::o;32833:180::-;32881:77;32878:1;32871:88;32978:4;32975:1;32968:15;33002:4;32999:1;32992:15;33019:320;33063:6;33100:1;33094:4;33090:12;33080:22;;33147:1;33141:4;33137:12;33168:18;33158:81;;33224:4;33216:6;33212:17;33202:27;;33158:81;33286:2;33278:6;33275:14;33255:18;33252:38;33249:84;;33305:18;;:::i;:::-;33249:84;33070:269;33019:320;;;:::o;33345:172::-;33485:24;33481:1;33473:6;33469:14;33462:48;33345:172;:::o;33523:366::-;33665:3;33686:67;33750:2;33745:3;33686:67;:::i;:::-;33679:74;;33762:93;33851:3;33762:93;:::i;:::-;33880:2;33875:3;33871:12;33864:19;;33523:366;;;:::o;33895:419::-;34061:4;34099:2;34088:9;34084:18;34076:26;;34148:9;34142:4;34138:20;34134:1;34123:9;34119:17;34112:47;34176:131;34302:4;34176:131;:::i;:::-;34168:139;;33895:419;;;:::o;34320:430::-;34463:4;34501:2;34490:9;34486:18;34478:26;;34514:71;34582:1;34571:9;34567:17;34558:6;34514:71;:::i;:::-;34595:72;34663:2;34652:9;34648:18;34639:6;34595:72;:::i;:::-;34677:66;34739:2;34728:9;34724:18;34715:6;34677:66;:::i;:::-;34320:430;;;;;;:::o;34756:233::-;34896:34;34892:1;34884:6;34880:14;34873:58;34965:16;34960:2;34952:6;34948:15;34941:41;34756:233;:::o;34995:366::-;35137:3;35158:67;35222:2;35217:3;35158:67;:::i;:::-;35151:74;;35234:93;35323:3;35234:93;:::i;:::-;35352:2;35347:3;35343:12;35336:19;;34995:366;;;:::o;35367:419::-;35533:4;35571:2;35560:9;35556:18;35548:26;;35620:9;35614:4;35610:20;35606:1;35595:9;35591:17;35584:47;35648:131;35774:4;35648:131;:::i;:::-;35640:139;;35367:419;;;:::o;35792:85::-;35837:7;35866:5;35855:16;;35792:85;;;:::o;35883:86::-;35918:7;35958:4;35951:5;35947:16;35936:27;;35883:86;;;:::o;35975:154::-;36031:9;36064:59;36080:42;36089:32;36115:5;36089:32;:::i;:::-;36080:42;:::i;:::-;36064:59;:::i;:::-;36051:72;;35975:154;;;:::o;36135:143::-;36228:43;36265:5;36228:43;:::i;:::-;36223:3;36216:56;36135:143;;:::o;36284:234::-;36383:4;36421:2;36410:9;36406:18;36398:26;;36434:77;36508:1;36497:9;36493:17;36484:6;36434:77;:::i;:::-;36284:234;;;;:::o;36524:96::-;36582:6;36610:3;36600:13;;36524:96;;;;:::o;36626:140::-;36674:4;36697:3;36689:11;;36720:3;36717:1;36710:14;36754:4;36751:1;36741:18;36733:26;;36626:140;;;:::o;36772:93::-;36809:6;36856:2;36851;36844:5;36840:14;36836:23;36826:33;;36772:93;;;:::o;36871:107::-;36915:8;36965:5;36959:4;36955:16;36934:37;;36871:107;;;;:::o;36984:393::-;37053:6;37103:1;37091:10;37087:18;37126:97;37156:66;37145:9;37126:97;:::i;:::-;37244:39;37274:8;37263:9;37244:39;:::i;:::-;37232:51;;37316:4;37312:9;37305:5;37301:21;37292:30;;37365:4;37355:8;37351:19;37344:5;37341:30;37331:40;;37060:317;;36984:393;;;;;:::o;37383:142::-;37433:9;37466:53;37484:34;37493:24;37511:5;37493:24;:::i;:::-;37484:34;:::i;:::-;37466:53;:::i;:::-;37453:66;;37383:142;;;:::o;37531:75::-;37574:3;37595:5;37588:12;;37531:75;;;:::o;37612:269::-;37722:39;37753:7;37722:39;:::i;:::-;37783:91;37832:41;37856:16;37832:41;:::i;:::-;37824:6;37817:4;37811:11;37783:91;:::i;:::-;37777:4;37770:105;37688:193;37612:269;;;:::o;37887:73::-;37932:3;37887:73;:::o;37966:189::-;38043:32;;:::i;:::-;38084:65;38142:6;38134;38128:4;38084:65;:::i;:::-;38019:136;37966:189;;:::o;38161:186::-;38221:120;38238:3;38231:5;38228:14;38221:120;;;38292:39;38329:1;38322:5;38292:39;:::i;:::-;38265:1;38258:5;38254:13;38245:22;;38221:120;;;38161:186;;:::o;38353:541::-;38453:2;38448:3;38445:11;38442:445;;;38487:37;38518:5;38487:37;:::i;:::-;38570:29;38588:10;38570:29;:::i;:::-;38560:8;38556:44;38753:2;38741:10;38738:18;38735:49;;;38774:8;38759:23;;38735:49;38797:80;38853:22;38871:3;38853:22;:::i;:::-;38843:8;38839:37;38826:11;38797:80;:::i;:::-;38457:430;;38442:445;38353:541;;;:::o;38900:117::-;38954:8;39004:5;38998:4;38994:16;38973:37;;38900:117;;;;:::o;39023:169::-;39067:6;39100:51;39148:1;39144:6;39136:5;39133:1;39129:13;39100:51;:::i;:::-;39096:56;39181:4;39175;39171:15;39161:25;;39074:118;39023:169;;;;:::o;39197:295::-;39273:4;39419:29;39444:3;39438:4;39419:29;:::i;:::-;39411:37;;39481:3;39478:1;39474:11;39468:4;39465:21;39457:29;;39197:295;;;;:::o;39497:1398::-;39619:43;39658:3;39653;39619:43;:::i;:::-;39727:18;39719:6;39716:30;39713:56;;;39749:18;;:::i;:::-;39713:56;39793:38;39825:4;39819:11;39793:38;:::i;:::-;39878:66;39937:6;39929;39923:4;39878:66;:::i;:::-;39971:1;40000:2;39992:6;39989:14;40017:1;40012:631;;;;40687:1;40704:6;40701:84;;;40760:9;40755:3;40751:19;40738:33;40729:42;;40701:84;40811:67;40871:6;40864:5;40811:67;:::i;:::-;40805:4;40798:81;40660:229;39982:907;;40012:631;40064:4;40060:9;40052:6;40048:22;40098:36;40129:4;40098:36;:::i;:::-;40156:1;40170:215;40184:7;40181:1;40178:14;40170:215;;;40270:9;40265:3;40261:19;40248:33;40240:6;40233:49;40321:1;40313:6;40309:14;40299:24;;40368:2;40357:9;40353:18;40340:31;;40207:4;40204:1;40200:12;40195:17;;40170:215;;;40413:6;40404:7;40401:19;40398:186;;;40478:9;40473:3;40469:19;40456:33;40521:48;40563:4;40555:6;40551:17;40540:9;40521:48;:::i;:::-;40513:6;40506:64;40421:163;40398:186;40630:1;40626;40618:6;40614:14;40610:22;40604:4;40597:36;40019:624;;;39982:907;;39594:1301;;;39497:1398;;;:::o;40923:314::-;41019:3;41040:70;41103:6;41098:3;41040:70;:::i;:::-;41033:77;;41120:56;41169:6;41164:3;41157:5;41120:56;:::i;:::-;41201:29;41223:6;41201:29;:::i;:::-;41196:3;41192:39;41185:46;;40923:314;;;;;:::o;41243:329::-;41364:4;41402:2;41391:9;41387:18;41379:26;;41451:9;41445:4;41441:20;41437:1;41426:9;41422:17;41415:47;41479:86;41560:4;41551:6;41543;41479:86;:::i;:::-;41471:94;;41243:329;;;;;:::o;41578:225::-;41718:34;41714:1;41706:6;41702:14;41695:58;41787:8;41782:2;41774:6;41770:15;41763:33;41578:225;:::o;41809:366::-;41951:3;41972:67;42036:2;42031:3;41972:67;:::i;:::-;41965:74;;42048:93;42137:3;42048:93;:::i;:::-;42166:2;42161:3;42157:12;42150:19;;41809:366;;;:::o;42181:419::-;42347:4;42385:2;42374:9;42370:18;42362:26;;42434:9;42428:4;42424:20;42420:1;42409:9;42405:17;42398:47;42462:131;42588:4;42462:131;:::i;:::-;42454:139;;42181:419;;;:::o;42606:332::-;42727:4;42765:2;42754:9;42750:18;42742:26;;42778:71;42846:1;42835:9;42831:17;42822:6;42778:71;:::i;:::-;42859:72;42927:2;42916:9;42912:18;42903:6;42859:72;:::i;:::-;42606:332;;;;;:::o;42944:194::-;42984:4;43004:20;43022:1;43004:20;:::i;:::-;42999:25;;43038:20;43056:1;43038:20;:::i;:::-;43033:25;;43082:1;43079;43075:9;43067:17;;43106:1;43100:4;43097:11;43094:37;;;43111:18;;:::i;:::-;43094:37;42944:194;;;;:::o;43144:410::-;43184:7;43207:20;43225:1;43207:20;:::i;:::-;43202:25;;43241:20;43259:1;43241:20;:::i;:::-;43236:25;;43296:1;43293;43289:9;43318:30;43336:11;43318:30;:::i;:::-;43307:41;;43497:1;43488:7;43484:15;43481:1;43478:22;43458:1;43451:9;43431:83;43408:139;;43527:18;;:::i;:::-;43408:139;43192:362;43144:410;;;;:::o;43560:180::-;43608:77;43605:1;43598:88;43705:4;43702:1;43695:15;43729:4;43726:1;43719:15;43746:185;43786:1;43803:20;43821:1;43803:20;:::i;:::-;43798:25;;43837:20;43855:1;43837:20;:::i;:::-;43832:25;;43876:1;43866:35;;43881:18;;:::i;:::-;43866:35;43923:1;43920;43916:9;43911:14;;43746:185;;;;:::o;43937:191::-;43977:3;43996:20;44014:1;43996:20;:::i;:::-;43991:25;;44030:20;44048:1;44030:20;:::i;:::-;44025:25;;44073:1;44070;44066:9;44059:16;;44094:3;44091:1;44088:10;44085:36;;;44101:18;;:::i;:::-;44085:36;43937:191;;;;:::o;44134:167::-;44274:19;44270:1;44262:6;44258:14;44251:43;44134:167;:::o;44307:366::-;44449:3;44470:67;44534:2;44529:3;44470:67;:::i;:::-;44463:74;;44546:93;44635:3;44546:93;:::i;:::-;44664:2;44659:3;44655:12;44648:19;;44307:366;;;:::o;44679:419::-;44845:4;44883:2;44872:9;44868:18;44860:26;;44932:9;44926:4;44922:20;44918:1;44907:9;44903:17;44896:47;44960:131;45086:4;44960:131;:::i;:::-;44952:139;;44679:419;;;:::o;45104:162::-;45244:14;45240:1;45232:6;45228:14;45221:38;45104:162;:::o;45272:366::-;45414:3;45435:67;45499:2;45494:3;45435:67;:::i;:::-;45428:74;;45511:93;45600:3;45511:93;:::i;:::-;45629:2;45624:3;45620:12;45613:19;;45272:366;;;:::o;45644:419::-;45810:4;45848:2;45837:9;45833:18;45825:26;;45897:9;45891:4;45887:20;45883:1;45872:9;45868:17;45861:47;45925:131;46051:4;45925:131;:::i;:::-;45917:139;;45644:419;;;:::o;46069:166::-;46209:18;46205:1;46197:6;46193:14;46186:42;46069:166;:::o;46241:366::-;46383:3;46404:67;46468:2;46463:3;46404:67;:::i;:::-;46397:74;;46480:93;46569:3;46480:93;:::i;:::-;46598:2;46593:3;46589:12;46582:19;;46241:366;;;:::o;46613:419::-;46779:4;46817:2;46806:9;46802:18;46794:26;;46866:9;46860:4;46856:20;46852:1;46841:9;46837:17;46830:47;46894:131;47020:4;46894:131;:::i;:::-;46886:139;;46613:419;;;:::o;47038:172::-;47178:24;47174:1;47166:6;47162:14;47155:48;47038:172;:::o;47216:366::-;47358:3;47379:67;47443:2;47438:3;47379:67;:::i;:::-;47372:74;;47455:93;47544:3;47455:93;:::i;:::-;47573:2;47568:3;47564:12;47557:19;;47216:366;;;:::o;47588:419::-;47754:4;47792:2;47781:9;47777:18;47769:26;;47841:9;47835:4;47831:20;47827:1;47816:9;47812:17;47805:47;47869:131;47995:4;47869:131;:::i;:::-;47861:139;;47588:419;;;:::o;48013:182::-;48153:34;48149:1;48141:6;48137:14;48130:58;48013:182;:::o;48201:366::-;48343:3;48364:67;48428:2;48423:3;48364:67;:::i;:::-;48357:74;;48440:93;48529:3;48440:93;:::i;:::-;48558:2;48553:3;48549:12;48542:19;;48201:366;;;:::o;48573:419::-;48739:4;48777:2;48766:9;48762:18;48754:26;;48826:9;48820:4;48816:20;48812:1;48801:9;48797:17;48790:47;48854:131;48980:4;48854:131;:::i;:::-;48846:139;;48573:419;;;:::o;48998:230::-;49138:34;49134:1;49126:6;49122:14;49115:58;49207:13;49202:2;49194:6;49190:15;49183:38;48998:230;:::o;49234:366::-;49376:3;49397:67;49461:2;49456:3;49397:67;:::i;:::-;49390:74;;49473:93;49562:3;49473:93;:::i;:::-;49591:2;49586:3;49582:12;49575:19;;49234:366;;;:::o;49606:419::-;49772:4;49810:2;49799:9;49795:18;49787:26;;49859:9;49853:4;49849:20;49845:1;49834:9;49830:17;49823:47;49887:131;50013:4;49887:131;:::i;:::-;49879:139;;49606:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"3297600","executionCost":"infinite","totalCost":"infinite"},"external":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"infinite","getAggregator()":"infinite","getAggregatorAddress()":"2610","getFeeDetails()":"infinite","getOrderInfo(bytes32)":"infinite","getSupportedInstitutionName(bytes32)":"infinite","getSupportedInstitutions(bytes32)":"infinite","getWhitelistedStatus(address)":"2905","initialize(address)":"211582","isTokenSupported(address)":"2928","owner()":"2545","refund(bytes32,bytes32)":"infinite","renounceOwnership()":"30421","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"infinite","settingManagerBool(bytes32,address,bool)":"infinite","settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":"infinite","transferOwnership(address)":"30854","updateProtocolAddresses(bytes32,address)":"51596","updateProtocolAggregator(bytes)":"infinite","updateProtocolFees(uint128,uint128)":"infinite","withdraw(address,address,uint256)":"infinite"},"internal":{"_calculateFees(bytes32,uint96,bool)":"infinite","_handler(address,uint256,address,address,bytes32)":"infinite","rewardValidators(address[] calldata,address,uint256)":"infinite","transferSenderFee(bytes32)":"infinite"}},"methodIdentifiers":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"2654ec7e","getAggregator()":"3ad59dbc","getAggregatorAddress()":"e8d6e0de","getFeeDetails()":"b810c636","getOrderInfo(bytes32)":"768c6ec0","getSupportedInstitutionName(bytes32)":"87490d86","getSupportedInstitutions(bytes32)":"02621338","getWhitelistedStatus(address)":"d8e8de34","initialize(address)":"c4d66de8","isTokenSupported(address)":"75151b63","owner()":"8da5cb5b","refund(bytes32,bytes32)":"e4683a79","renounceOwnership()":"715018a6","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"32200882","settingManagerBool(bytes32,address,bool)":"99e3c0b4","settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":"137764fb","transferOwnership(address)":"f2fde38b","updateProtocolAddresses(bytes32,address)":"79a0effb","updateProtocolAggregator(bytes)":"cb79455b","updateProtocolFees(uint128,uint128)":"f5326b19","withdraw(address,address,uint256)":"d9caed12"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"institutionCode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"protocolFee\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"validatorFeePercent\",\"type\":\"uint128\"}],\"name\":\"PaycrestFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"Refunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"SetAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"SetFeeRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SettingManagerBool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"settlePercent\",\"type\":\"uint96\"}],\"name\":\"Settled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSenderFee\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_institutionCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"_rate\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"_senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_senderFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"createOrder\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"name\":\"getOrderInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"rate\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"isFulfilled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"currentBPS\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaycrest.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"}],\"name\":\"getSupportedInstitutionName\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.InstitutionByCode\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"}],\"name\":\"getSupportedInstitutions\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getWhitelistedStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_usdc\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"}],\"name\":\"refund\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"institutions\",\"type\":\"tuple[]\"}],\"name\":\"setSupportedInstitutions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"settingManagerBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_liquidityProvider\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_settlePercent\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isPartner\",\"type\":\"bool\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"updateProtocolAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"updateProtocolAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_protocolFeePercent\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_validatorFeePercent\",\"type\":\"uint128\"}],\"name\":\"updateProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)\":{\"details\":\"Emitted when deposit is made.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Refunded(bytes32,bytes32)\":{\"details\":\"Emitted when aggregator refund transaction.\"},\"RewardValidator(address,uint256)\":{\"details\":\"Emitted when primary validator get therir rewards.\"},\"Settled(bytes32,bytes32,bytes32,address,uint96)\":{\"details\":\"Emitted when aggregator settle transaction.\"},\"TransferSenderFee(address,uint256)\":{\"details\":\"Emitted when sender get therir rewards.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"details\":\"See {createOrder-IPaycrest}. \"},\"getAggregator()\":{\"details\":\"See {getAggregator-IPaycrest}. \"},\"getAggregatorAddress()\":{\"details\":\"See {getAggregatorAddress-IPaycrest}. \"},\"getFeeDetails()\":{\"details\":\"See {getFeeDetails-IPaycrest}. \"},\"getOrderInfo(bytes32)\":{\"details\":\"See {getOrderInfo-IPaycrest}. \"},\"getSupportedInstitutionName(bytes32)\":{\"details\":\"See {getSupportedInstitutionName-IPaycrest}. \"},\"getWhitelistedStatus(address)\":{\"details\":\"See {getWhitelistedStatus-IPaycrest}. \"},\"isTokenSupported(address)\":{\"details\":\"See {isTokenSupported-IPaycrest}. \"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"refund(bytes32,bytes32)\":{\"details\":\"See {refund-IPaycrest}. \"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)\":{\"details\":\"See {settle-IPaycrest}. \"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Paycrest.sol\":\"Paycrest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20Upgradeable {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n */\\ninterface IERC20PermitUpgradeable {\\n /**\\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n * given ``owner``'s signed approval.\\n *\\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n * ordering also apply here.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `deadline` must be a timestamp in the future.\\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n * over the EIP712-formatted function arguments.\\n * - the signature must use ``owner``'s current nonce (see {nonces}).\\n *\\n * For more information on the signature format, see the\\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n * section].\\n */\\n function permit(\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n\\n /**\\n * @dev Returns the current nonce for `owner`. This value must be\\n * included whenever a signature is generated for {permit}.\\n *\\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n * prevents a signature from being used multiple times.\\n */\\n function nonces(address owner) external view returns (uint256);\\n\\n /**\\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd60f939a3ca0199014d079b4dd66aa757954334947d81eb5c1d35d7a83061ab3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n using AddressUpgradeable for address;\\n\\n /**\\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n /**\\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n */\\n function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n /**\\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n }\\n\\n /**\\n * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful.\\n */\\n function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n }\\n }\\n\\n /**\\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n * to be set to zero before setting it to a non-zero value, such as USDT.\\n */\\n function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n if (!_callOptionalReturnBool(token, approvalCall)) {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n _callOptionalReturn(token, approvalCall);\\n }\\n }\\n\\n /**\\n * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n * Revert on invalid signature.\\n */\\n function safePermit(\\n IERC20PermitUpgradeable token,\\n address owner,\\n address spender,\\n uint256 value,\\n uint256 deadline,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) internal {\\n uint256 nonceBefore = token.nonces(owner);\\n token.permit(owner, spender, value, deadline, v, r, s);\\n uint256 nonceAfter = token.nonces(owner);\\n require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n *\\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n */\\n function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n // and not revert is the subcall reverts.\\n\\n (bool success, bytes memory returndata) = address(token).call(data);\\n return\\n success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SignedMathUpgradeable.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = MathUpgradeable.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMathUpgradeable.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, MathUpgradeable.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../StringsUpgradeable.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSAUpgradeable {\\n enum RecoverError {\\n NoError,\\n InvalidSignature,\\n InvalidSignatureLength,\\n InvalidSignatureS,\\n InvalidSignatureV // Deprecated in v4.8\\n }\\n\\n function _throwError(RecoverError error) private pure {\\n if (error == RecoverError.NoError) {\\n return; // no error: do nothing\\n } else if (error == RecoverError.InvalidSignature) {\\n revert(\\\"ECDSA: invalid signature\\\");\\n } else if (error == RecoverError.InvalidSignatureLength) {\\n revert(\\\"ECDSA: invalid signature length\\\");\\n } else if (error == RecoverError.InvalidSignatureS) {\\n revert(\\\"ECDSA: invalid signature 's' value\\\");\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature` or error string. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n *\\n * Documentation for signature generation:\\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n if (signature.length == 65) {\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n /// @solidity memory-safe-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n return tryRecover(hash, v, r, s);\\n } else {\\n return (address(0), RecoverError.InvalidSignatureLength);\\n }\\n }\\n\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, signature);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n uint8 v = uint8((uint256(vs) >> 255) + 27);\\n return tryRecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n *\\n * _Available since v4.2._\\n */\\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n *\\n * _Available since v4.3._\\n */\\n function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return (address(0), RecoverError.InvalidSignatureS);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n address signer = ecrecover(hash, v, r, s);\\n if (signer == address(0)) {\\n return (address(0), RecoverError.InvalidSignature);\\n }\\n\\n return (signer, RecoverError.NoError);\\n }\\n\\n /**\\n * @dev Overload of {ECDSA-recover} that receives the `v`,\\n * `r` and `s` signature fields separately.\\n */\\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n _throwError(error);\\n return recovered;\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n mstore(0x1c, hash)\\n message := keccak256(0x00, 0x3c)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from `s`. This\\n * produces hash corresponding to the one signed with the\\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n * JSON-RPC method as part of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", StringsUpgradeable.toString(s.length), s));\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Typed Data, created from a\\n * `domainSeparator` and a `structHash`. This produces hash corresponding\\n * to the one signed with the\\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n * JSON-RPC method as part of EIP-712.\\n *\\n * See {recover}.\\n */\\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n mstore(add(ptr, 0x02), domainSeparator)\\n mstore(add(ptr, 0x22), structHash)\\n data := keccak256(ptr, 0x42)\\n }\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n * `validator` and `data` according to the version 0 of EIP-191.\\n *\\n * See {recover}.\\n */\\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n }\\n}\\n\",\"keccak256\":\"0xa014f65d84b02827055d99993ccdbfb4b56b2c9e91eb278d82a93330659d06e4\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMathUpgradeable {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/Paycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport {PaycrestSettingManager} from \\\"./PaycrestSettingManager.sol\\\";\\nimport {IPaycrest, IERC20} from \\\"./interface/IPaycrest.sol\\\";\\ncontract Paycrest is IPaycrest, PaycrestSettingManager { \\n using SafeERC20Upgradeable for IERC20;\\n using ECDSAUpgradeable for bytes32;\\n struct fee {\\n uint256 protocolFee;\\n uint256 liquidityProviderAmount;\\n uint256 validatorsReward;\\n }\\n mapping(bytes32 => Order) private order;\\n mapping(address => uint256) private _nonce;\\n uint256[50] private __gap;\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n function initialize(address _usdc) external initializer { \\n _isTokenSupported[_usdc] = true; \\n MAX_BPS = 100_000; \\n protocolFeePercent = 5000; // 5%\\n validatorFeePercent = 500; // 0.5%\\n __Ownable_init();\\n }\\n\\n modifier onlyAggregator {\\n require(msg.sender == _aggregatorAddress, \\\"OnlyAggregator\\\");\\n _;\\n }\\n \\n /* ##################################################################\\n USER CALLS\\n ################################################################## */\\n /** @dev See {createOrder-IPaycrest}. */\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash\\n ) external returns(bytes32 orderId) {\\n // checks that are required\\n _handler(_token, _amount, _refundAddress, _senderFeeRecipient, _institutionCode);\\n // first transfer token from msg.sender\\n IERC20(_token).transferFrom(msg.sender, address(this), _amount);\\n // increase users nonce to avoid replay attacks\\n _nonce[msg.sender] ++;\\n // @chibie @5ran6\\n // @todo sender fee should have limit, let say the maximum amount of sender fee should be 1% of the amount\\n // generate transaction id for the transaction\\n orderId = keccak256(abi.encode(msg.sender, _nonce[msg.sender]));\\n // update transaction\\n order[orderId] = Order({\\n seller: msg.sender,\\n token: _token,\\n senderFeeRecipient: _senderFeeRecipient,\\n senderFee: _senderFee,\\n rate: _rate,\\n isFulfilled: false,\\n refundAddress: _refundAddress,\\n currentBPS: uint64(MAX_BPS),\\n amount: _amount\\n });\\n // emit deposit event\\n emit Deposit(_token, _amount, orderId, _rate, _institutionCode, _label, messageHash);\\n }\\n\\n function _handler(address _token, uint256 _amount, address _refundAddress, address _senderFeeRecipient, bytes32 _institutionCode) internal view {\\n // use require for all the custom errors\\n require(_isTokenSupported[_token], \\\"TokenNotSupported\\\");\\n require(_amount > 0, \\\"AmountIsZero\\\");\\n require(_refundAddress != address(0), \\\"ThrowZeroAddress\\\");\\n require(_senderFeeRecipient != address(0), \\\"ThrowZeroAddress\\\");\\n require(supportedInstitutionsByCode[_institutionCode].name != bytes32(0), \\\"InvalidInstitutionCode\\\");\\n }\\n\\n /* ##################################################################\\n AGGREGATOR FUNCTIONS\\n ################################################################## */\\n /** @dev See {settle-IPaycrest}. */\\n function settle(\\n bytes32 _splitOrderId,\\n bytes32 _orderId, \\n bytes32 _label,\\n address[] calldata _validators, \\n address _liquidityProvider, \\n uint64 _settlePercent,\\n bool _isPartner\\n ) external onlyAggregator() returns(bytes32, address) {\\n // ensure the transaction has not been fulfilled\\n require(!order[_orderId].isFulfilled, \\\"OrderFulfilled\\\");\\n // load the token into memory\\n address token = order[_orderId].token;\\n // substract sum of amount based on the input _settlePercent\\n order[_orderId].currentBPS -= _settlePercent;\\n // if transaction amount is zero\\n // load the fees and transfer associated protocol fees to protocol fee recipient\\n ( fee memory _feeParams ) = _calculateFees(_orderId, _settlePercent, _isPartner);\\n if(order[_orderId].currentBPS == 0) {\\n // update the transaction to be fulfilled\\n order[_orderId].isFulfilled = true;\\n if (order[_orderId].senderFee > 0) {\\n // transfer sender fee\\n transferSenderFee(_orderId);\\n }\\n }\\n \\n if (_feeParams.protocolFee > 0) {\\n // transfer protocol fee\\n IERC20(token).transfer(feeRecipient, _feeParams.protocolFee);\\n }\\n // // transfer to liquidity provider \\n IERC20(token).transfer(_liquidityProvider, _feeParams.liquidityProviderAmount);\\n // // transfer to validators\\n rewardValidators(_validators, token, _feeParams.validatorsReward);\\n\\n // emit event\\n emit Settled(_splitOrderId, _orderId, _label, _liquidityProvider, _settlePercent);\\n return (_orderId, token);\\n }\\n\\n function rewardValidators(address[] calldata _validators, address token, uint256 _validatorsRewards) internal {\\n uint256 length = _validators.length;\\n uint256 _validatorReward = _validatorsRewards / length;\\n for(uint256 i = 0; i < length; ) {\\n IERC20(token).transfer(_validators[i], _validatorReward);\\n // emit event\\n emit RewardValidator(_validators[i], _validatorReward);\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function transferSenderFee(bytes32 _orderId) internal {\\n address recipient = order[_orderId].senderFeeRecipient;\\n uint256 _fee = order[_orderId].senderFee;\\n // transfer sender fee\\n IERC20(order[_orderId].token).transfer(recipient, _fee);\\n // emmit event\\n emit TransferSenderFee(recipient, _fee);\\n }\\n\\n /** @dev See {refund-IPaycrest}. */\\n function refund(bytes32 _orderId, bytes32 _label) external onlyAggregator() returns(bool) {\\n // ensure the transaction has not been fulfilled\\n require(!order[_orderId].isFulfilled, \\\"OrderFulfilled\\\");\\n // reser state values\\n order[_orderId].isFulfilled = true;\\n order[_orderId].currentBPS = 0;\\n // transfer to seller \\n IERC20(order[_orderId].token).transfer(order[_orderId].refundAddress, order[_orderId].amount);\\n // emit\\n emit Refunded(_orderId, _label);\\n return true;\\n }\\n\\n function _calculateFees(bytes32 _orderId, uint96 _settlePercent, bool _isPartner) private view returns(fee memory _feeParams ) {\\n // get the total amount associated with the orderId\\n uint256 amount = order[_orderId].amount;\\n // get sender fee from amount\\n amount = amount - order[_orderId].senderFee;\\n // get the settled percent that is scheduled for this amount\\n _feeParams.liquidityProviderAmount = (amount * _settlePercent) / MAX_BPS;\\n // deduct protocol fees from the new total amount\\n _feeParams.protocolFee = (_feeParams.liquidityProviderAmount * protocolFeePercent) / MAX_BPS; \\n // substract total fees from the new amount after getting the scheduled amount\\n _feeParams.liquidityProviderAmount = (_feeParams.liquidityProviderAmount - _feeParams.protocolFee);\\n // get primary validators fees primaryValidatorsReward\\n _feeParams.validatorsReward = (_feeParams.protocolFee * validatorFeePercent) / MAX_BPS;\\n // get primary validators fees secondaryValidatorsReward\\n // if (_isPartner) protocol fee should be 0, and the whole protocol fee should be added to liquidity provider\\n if (_isPartner) {\\n _feeParams.liquidityProviderAmount += _feeParams.protocolFee;\\n _feeParams.protocolFee = 0;\\n } else {\\n _feeParams.protocolFee = (_feeParams.protocolFee - _feeParams.validatorsReward);\\n }\\n }\\n \\n /* ##################################################################\\n VIEW CALLS\\n ################################################################## */\\n /** @dev See {getOrderInfo-IPaycrest}. */\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory) {\\n return order[_orderId];\\n }\\n\\n /** @dev See {isTokenSupported-IPaycrest}. */\\n function isTokenSupported(address _token) external view returns(bool) {\\n return _isTokenSupported[_token];\\n }\\n\\n /** @dev See {getSupportedInstitutionName-IPaycrest}. */\\n function getSupportedInstitutionName(bytes32 code) external view returns (InstitutionByCode memory) {\\n return supportedInstitutionsByCode[code];\\n }\\n\\n function getSupportedInstitutions(bytes32 currency) external view returns (Institution[] memory) {\\n Institution[] memory institutions = supportedInstitutions[currency];\\n uint256 length = institutions.length;\\n Institution[] memory result = new Institution[](length);\\n \\n for (uint256 i = 0; i < length; ) {\\n result[i] = institutions[i];\\n unchecked {\\n i++;\\n }\\n }\\n \\n return result;\\n }\\n\\n /** @dev See {getFeeDetails-IPaycrest}. */\\n function getFeeDetails() external view returns(\\n uint128, \\n uint128, \\n uint256\\n ) {\\n return(protocolFeePercent, validatorFeePercent, MAX_BPS);\\n }\\n\\n /** @dev See {getAggregatorAddress-IPaycrest}. */\\n function getAggregatorAddress() external view returns(address) {\\n return _aggregatorAddress;\\n }\\n\\n /** @dev See {getWhitelistedStatus-IPaycrest}. */\\n function getWhitelistedStatus(address sender) external view returns(bool) {\\n return _isWhitelisted[sender];\\n }\\n\\n /** @dev See {getAggregator-IPaycrest}. */\\n function getAggregator() external view returns(bytes memory) {\\n return _aggregator;\\n }\\n\\n\\n // DECLARE A FUNCTION TO WITHDRAW ANY TOKEN FROM CONTRACT CAN ONLY NE CALLED BY OWNER\\n function withdraw(address _token, address _recipient, uint256 _amount) external onlyOwner {\\n IERC20(_token).transfer(_recipient, _amount);\\n }\\n\\n}\\n\",\"keccak256\":\"0x0e0672b87ee8fe848774d6487ab87061d07a94c2b022f503f83d9c87b4f75164\",\"license\":\"UNLICENSED\"},\"contracts/PaycrestSettingManager.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\n\\ncontract PaycrestSettingManager is OwnableUpgradeable { \\n struct Institution {\\n bytes32 code; // usually not more than 8 letters\\n bytes32 name; // \\n }\\n struct InstitutionByCode {\\n bytes32 name;\\n bytes32 currency;\\n }\\n uint256 internal MAX_BPS;\\n uint128 internal protocolFeePercent; // 5%\\n uint128 internal validatorFeePercent; // 0.5%\\n address internal feeRecipient;\\n address internal _aggregatorAddress;\\n bytes internal _aggregator;\\n \\n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\\n uint256[50] private __gap;\\n\\n mapping(address => bool) internal _isTokenSupported;\\n mapping(address => bool) internal _isWhitelisted;\\n\\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\\n\\n event SettingManagerBool(bytes32 what, address value, bool status);\\n event PaycrestFees(uint128 protocolFee, uint128 validatorFeePercent);\\n event SetAggregator(bytes aggregator);\\n event SetFeeRecipient(address feeRecipient);\\n\\n \\n /* ##################################################################\\n OWNER FUNCTIONS\\n ################################################################## */\\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"token\\\") _isTokenSupported[value] = status;\\n if (what == \\\"whitelist\\\") _isWhitelisted[value] = status;\\n\\n emit SettingManagerBool(what, value, status);\\n }\\n\\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \\n uint256 length = institutions.length;\\n for (uint i = 0; i < length; ) {\\n supportedInstitutions[currency].push(institutions[i]);\\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\\n name: institutions[i].name, currency: currency\\n });\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function updateProtocolFees(uint128 _protocolFeePercent, uint128 _validatorFeePercent) external onlyOwner {\\n protocolFeePercent = _protocolFeePercent;\\n validatorFeePercent = _validatorFeePercent;\\n emit PaycrestFees(_protocolFeePercent, _validatorFeePercent);\\n }\\n\\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"fee\\\") feeRecipient = value;\\n if (what == \\\"aggregator\\\") _aggregatorAddress = value;\\n }\\n\\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\\n _aggregator = aggregator;\\n emit SetAggregator(aggregator);\\n }\\n\\n}\\n\",\"keccak256\":\"0x6524d2af2d5e14c160ce5f57f202d38f3112e87d427bbc9ddf06dd5ada4c7497\",\"license\":\"UNLICENSED\"},\"contracts/interface/IPaycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n/**\\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\\n * Factory and global config params\\n */\\ninterface IPaycrest {\\n \\n /* ##################################################################\\n EVENTS\\n ################################################################## */\\n /// @dev Emitted when deposit is made.\\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\\n /// @dev Emitted when aggregator settle transaction.\\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\\n /// @dev Emitted when aggregator refund transaction.\\n event Refunded(bytes32 indexed orderId, bytes32 label);\\n /// @dev Emitted when sender get therir rewards.\\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\\n /// @dev Emitted when primary validator get therir rewards.\\n event RewardValidator(address indexed validator, uint256 indexed amount);\\n\\n /* ##################################################################\\n STRUCTS\\n ################################################################## */\\n struct TransactionMetadata {\\n bytes8 identifier; // slot 0\\n bytes8 institution; // slot 0\\n bytes8 name; // slot 0\\n bytes8 currency; // slot 0\\n uint256 liquidityProviderID; // slot 1\\n }\\n\\n struct Order {\\n address seller; // slot 0\\n address token; // slot 1\\n address senderFeeRecipient;\\n uint256 senderFee;\\n uint96 rate; // slot 1\\n bool isFulfilled; // slot 2 {11 bytes available}\\n address refundAddress; // slot 2 {12 bytes available}\\n uint96 currentBPS; // slot 2 {}\\n uint256 amount; // slot 3\\n }\\n\\n\\n /* ##################################################################\\n EXTERNAL CALLS\\n ################################################################## */\\n /// @notice lock sender `_amount` of `token` into Paycrest.\\n /// Requirements:\\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _token address of the token.\\n /// @param _amount amount in the decimal of `_token` above.\\n /// @param _institutionCode institution code of the sender.\\n /// @param _label reference of the sender.\\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\\n /// @return _orderId the bytes20 which is the orderId\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash) external returns(bytes32 _orderId);\\n\\n /// @notice settle transaction and distribute rewards accordingly.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @param _validators arrays of secondary validators.\\n /// @param _liquidityProvider address of the liquidity provider.\\n /// @param _settlePercent rate at which the transaction is settled.\\n /// @param _isPartner is the liquidity provider a partner.\\n /// @return return the status of transaction {bool}\\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\\n\\n /// @notice refund to the specified refundable address.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `isFulfilled` must be false.\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @return return the status of transaction {bool}\\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\\n\\n /// @notice get supported token from Paycrest.\\n /// @param _token address of the token to check.\\n /// @return return the status of `_token` {bool}\\n function isTokenSupported(address _token) external view returns(bool);\\n\\n /// @notice get order details.\\n /// @param _orderId transaction Id.\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\\n\\n /// @notice get every rewards and address on Paycrest.\\n /// @return protocolReward amount that will be taken in percentage on all trade.\\n /// @return validatorFeePercent amount that will be given to primary validator in percentage from `protocolReward`\\n /// @return max_bps maximum amount in bps \\\"100% == 100_000\\\".\\n function getFeeDetails() external view returns(\\n uint128 protocolReward, \\n uint128 validatorFeePercent, \\n uint256 max_bps\\n );\\n\\n /// @notice get address of liquidity aggregator.\\n /// @return address of `Aggregator`.\\n function getAggregatorAddress() external view returns(address);\\n\\n /// @notice get aggregator public key.\\n /// @return aggregator public key.\\n function getAggregator() external view returns(bytes memory);\\n \\n /// @notice get address of sender whitelisting status.\\n /// @param sender address of the sender.\\n /// @return address of `status`.\\n function getWhitelistedStatus(address sender) external view returns(bool);\\n\\n}\\n\",\"keccak256\":\"0x7c0459f29e4b1c266f59dcf90bb14443345d43da8579b4cc189bdfdd7237dd58\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"contracts/Paycrest.sol:Paycrest","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"contracts/Paycrest.sol:Paycrest","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"contracts/Paycrest.sol:Paycrest","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":3616,"contract":"contracts/Paycrest.sol:Paycrest","label":"MAX_BPS","offset":0,"slot":"101","type":"t_uint256"},{"astId":3618,"contract":"contracts/Paycrest.sol:Paycrest","label":"protocolFeePercent","offset":0,"slot":"102","type":"t_uint128"},{"astId":3620,"contract":"contracts/Paycrest.sol:Paycrest","label":"validatorFeePercent","offset":16,"slot":"102","type":"t_uint128"},{"astId":3622,"contract":"contracts/Paycrest.sol:Paycrest","label":"feeRecipient","offset":0,"slot":"103","type":"t_address"},{"astId":3624,"contract":"contracts/Paycrest.sol:Paycrest","label":"_aggregatorAddress","offset":0,"slot":"104","type":"t_address"},{"astId":3626,"contract":"contracts/Paycrest.sol:Paycrest","label":"_aggregator","offset":0,"slot":"105","type":"t_bytes_storage"},{"astId":3630,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"106","type":"t_array(t_uint256)50_storage"},{"astId":3634,"contract":"contracts/Paycrest.sol:Paycrest","label":"_isTokenSupported","offset":0,"slot":"156","type":"t_mapping(t_address,t_bool)"},{"astId":3638,"contract":"contracts/Paycrest.sol:Paycrest","label":"_isWhitelisted","offset":0,"slot":"157","type":"t_mapping(t_address,t_bool)"},{"astId":3644,"contract":"contracts/Paycrest.sol:Paycrest","label":"supportedInstitutions","offset":0,"slot":"158","type":"t_mapping(t_bytes32,t_array(t_struct(Institution)3609_storage)dyn_storage)"},{"astId":3649,"contract":"contracts/Paycrest.sol:Paycrest","label":"supportedInstitutionsByCode","offset":0,"slot":"159","type":"t_mapping(t_bytes32,t_struct(InstitutionByCode)3614_storage)"},{"astId":2838,"contract":"contracts/Paycrest.sol:Paycrest","label":"order","offset":0,"slot":"160","type":"t_mapping(t_bytes32,t_struct(Order)3935_storage)"},{"astId":2842,"contract":"contracts/Paycrest.sol:Paycrest","label":"_nonce","offset":0,"slot":"161","type":"t_mapping(t_address,t_uint256)"},{"astId":2846,"contract":"contracts/Paycrest.sol:Paycrest","label":"__gap","offset":0,"slot":"162","type":"t_array(t_uint256)50_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Institution)3609_storage)dyn_storage":{"base":"t_struct(Institution)3609_storage","encoding":"dynamic_array","label":"struct PaycrestSettingManager.Institution[]","numberOfBytes":"32"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_array(t_struct(Institution)3609_storage)dyn_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])","numberOfBytes":"32","value":"t_array(t_struct(Institution)3609_storage)dyn_storage"},"t_mapping(t_bytes32,t_struct(InstitutionByCode)3614_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)","numberOfBytes":"32","value":"t_struct(InstitutionByCode)3614_storage"},"t_mapping(t_bytes32,t_struct(Order)3935_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct IPaycrest.Order)","numberOfBytes":"32","value":"t_struct(Order)3935_storage"},"t_struct(Institution)3609_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.Institution","members":[{"astId":3606,"contract":"contracts/Paycrest.sol:Paycrest","label":"code","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3608,"contract":"contracts/Paycrest.sol:Paycrest","label":"name","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(InstitutionByCode)3614_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.InstitutionByCode","members":[{"astId":3611,"contract":"contracts/Paycrest.sol:Paycrest","label":"name","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3613,"contract":"contracts/Paycrest.sol:Paycrest","label":"currency","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(Order)3935_storage":{"encoding":"inplace","label":"struct IPaycrest.Order","members":[{"astId":3918,"contract":"contracts/Paycrest.sol:Paycrest","label":"seller","offset":0,"slot":"0","type":"t_address"},{"astId":3920,"contract":"contracts/Paycrest.sol:Paycrest","label":"token","offset":0,"slot":"1","type":"t_address"},{"astId":3922,"contract":"contracts/Paycrest.sol:Paycrest","label":"senderFeeRecipient","offset":0,"slot":"2","type":"t_address"},{"astId":3924,"contract":"contracts/Paycrest.sol:Paycrest","label":"senderFee","offset":0,"slot":"3","type":"t_uint256"},{"astId":3926,"contract":"contracts/Paycrest.sol:Paycrest","label":"rate","offset":0,"slot":"4","type":"t_uint96"},{"astId":3928,"contract":"contracts/Paycrest.sol:Paycrest","label":"isFulfilled","offset":12,"slot":"4","type":"t_bool"},{"astId":3930,"contract":"contracts/Paycrest.sol:Paycrest","label":"refundAddress","offset":0,"slot":"5","type":"t_address"},{"astId":3932,"contract":"contracts/Paycrest.sol:Paycrest","label":"currentBPS","offset":20,"slot":"5","type":"t_uint96"},{"astId":3934,"contract":"contracts/Paycrest.sol:Paycrest","label":"amount","offset":0,"slot":"6","type":"t_uint256"}],"numberOfBytes":"224"},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/PaycrestSettingManager.sol":{"PaycrestSettingManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"protocolFee","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"validatorFeePercent","type":"uint128"}],"name":"PaycrestFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"SetAggregator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"value","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SettingManagerBool","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"currency","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"code","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"internalType":"struct PaycrestSettingManager.Institution[]","name":"institutions","type":"tuple[]"}],"name":"setSupportedInstitutions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"settingManagerBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"updateProtocolAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"aggregator","type":"bytes"}],"name":"updateProtocolAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"_protocolFeePercent","type":"uint128"},{"internalType":"uint128","name":"_validatorFeePercent","type":"uint128"}],"name":"updateProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50611361806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806399e3c0b41161005b57806399e3c0b4146100ed578063cb79455b14610109578063f2fde38b14610125578063f5326b191461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b35780638da5cb5b146100cf575b600080fd5b6100a760048036038101906100a29190610a86565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610b40565b610285565b005b6100d76103d2565b6040516100e49190610b8f565b60405180910390f35b61010760048036038101906101029190610be2565b6103fc565b005b610123600480360381019061011e9190610c90565b6105b1565b005b61013f600480360381019061013a9190610cdd565b610608565b005b61015b60048036038101906101569190610d52565b61068b565b005b610165610742565b60008151905060005b8181101561026b57609e600085815260200190815260200160002083828151811061019c5761019b610d92565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d92565b5b602002602001015160200151815260200185815250609f600085848151811061022d5761022c610d92565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b610279610742565b61028360006107c0565b565b61028d610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610e1e565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610404610742565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a90610e1e565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036104f25780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105715780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516105a493929190610e5c565b60405180910390a1505050565b6105b9610742565b8181606991826105ca9291906110b4565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516105fc9291906111d1565b60405180910390a15050565b610610610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361067f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067690611267565b60405180910390fd5b610688816107c0565b50565b610693610742565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051610736929190611296565b60405180910390a15050565b61074a610886565b73ffffffffffffffffffffffffffffffffffffffff166107686103d2565b73ffffffffffffffffffffffffffffffffffffffff16146107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b59061130b565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6108b5816108a2565b81146108c057600080fd5b50565b6000813590506108d2816108ac565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610926826108dd565b810181811067ffffffffffffffff82111715610945576109446108ee565b5b80604052505050565b600061095861088e565b9050610964828261091d565b919050565b600067ffffffffffffffff821115610984576109836108ee565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109b5576109b461099a565b5b6109bf604061094e565b905060006109cf848285016108c3565b60008301525060206109e3848285016108c3565b60208301525092915050565b6000610a026109fd84610969565b61094e565b90508083825260208201905060408402830185811115610a2557610a24610995565b5b835b81811015610a4e5780610a3a888261099f565b845260208401935050604081019050610a27565b5050509392505050565b600082601f830112610a6d57610a6c6108d8565b5b8135610a7d8482602086016109ef565b91505092915050565b60008060408385031215610a9d57610a9c610898565b5b6000610aab858286016108c3565b925050602083013567ffffffffffffffff811115610acc57610acb61089d565b5b610ad885828601610a58565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b0d82610ae2565b9050919050565b610b1d81610b02565b8114610b2857600080fd5b50565b600081359050610b3a81610b14565b92915050565b60008060408385031215610b5757610b56610898565b5b6000610b65858286016108c3565b9250506020610b7685828601610b2b565b9150509250929050565b610b8981610b02565b82525050565b6000602082019050610ba46000830184610b80565b92915050565b60008115159050919050565b610bbf81610baa565b8114610bca57600080fd5b50565b600081359050610bdc81610bb6565b92915050565b600080600060608486031215610bfb57610bfa610898565b5b6000610c09868287016108c3565b9350506020610c1a86828701610b2b565b9250506040610c2b86828701610bcd565b9150509250925092565b600080fd5b60008083601f840112610c5057610c4f6108d8565b5b8235905067ffffffffffffffff811115610c6d57610c6c610c35565b5b602083019150836001820283011115610c8957610c88610995565b5b9250929050565b60008060208385031215610ca757610ca6610898565b5b600083013567ffffffffffffffff811115610cc557610cc461089d565b5b610cd185828601610c3a565b92509250509250929050565b600060208284031215610cf357610cf2610898565b5b6000610d0184828501610b2b565b91505092915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b610d2f81610d0a565b8114610d3a57600080fd5b50565b600081359050610d4c81610d26565b92915050565b60008060408385031215610d6957610d68610898565b5b6000610d7785828601610d3d565b9250506020610d8885828601610d3d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610e08601683610dc1565b9150610e1382610dd2565b602082019050919050565b60006020820190508181036000830152610e3781610dfb565b9050919050565b610e47816108a2565b82525050565b610e5681610baa565b82525050565b6000606082019050610e716000830186610e3e565b610e7e6020830185610b80565b610e8b6040830184610e4d565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ee557607f821691505b602082108103610ef857610ef7610e9e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610f23565b610f6a8683610f23565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610fb1610fac610fa784610f82565b610f8c565b610f82565b9050919050565b6000819050919050565b610fcb83610f96565b610fdf610fd782610fb8565b848454610f30565b825550505050565b600090565b610ff4610fe7565b610fff818484610fc2565b505050565b5b8181101561102357611018600082610fec565b600181019050611005565b5050565b601f8211156110685761103981610efe565b61104284610f13565b81016020851015611051578190505b61106561105d85610f13565b830182611004565b50505b505050565b600082821c905092915050565b600061108b6000198460080261106d565b1980831691505092915050565b60006110a4838361107a565b9150826002028217905092915050565b6110be8383610e93565b67ffffffffffffffff8111156110d7576110d66108ee565b5b6110e18254610ecd565b6110ec828285611027565b6000601f83116001811461111b5760008415611109578287013590505b6111138582611098565b86555061117b565b601f19841661112986610efe565b60005b828110156111515784890135825560018201915060208501945060208101905061112c565b8683101561116e578489013561116a601f89168261107a565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111b08385611184565b93506111bd838584611195565b6111c6836108dd565b840190509392505050565b600060208201905081810360008301526111ec8184866111a4565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611251602683610dc1565b915061125c826111f5565b604082019050919050565b6000602082019050818103600083015261128081611244565b9050919050565b61129081610d0a565b82525050565b60006040820190506112ab6000830185611287565b6112b86020830184611287565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112f5602083610dc1565b9150611300826112bf565b602082019050919050565b60006020820190508181036000830152611324816112e8565b905091905056fea2646970667358221220cbcf63be5aea212b07add232a2fd1fea21e0a28d565c16921b2afe6d54e9534f64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1361 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x99E3C0B4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xF5326B19 EQ PUSH2 0x141 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x32200882 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA86 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xB40 JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD7 PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x102 SWAP2 SWAP1 PUSH2 0xBE2 JUMP JUMPDEST PUSH2 0x3FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x11E SWAP2 SWAP1 PUSH2 0xC90 JUMP JUMPDEST PUSH2 0x5B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13A SWAP2 SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0xD52 JUMP JUMPDEST PUSH2 0x68B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x165 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x9E PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19C JUMPI PUSH2 0x19B PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x201 JUMPI PUSH2 0x200 PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x22D JUMPI PUSH2 0x22C PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x16E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x279 PUSH2 0x742 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x0 PUSH2 0x7C0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x365 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x3CE JUMPI DUP1 PUSH1 0x68 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x404 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x473 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46A SWAP1 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x4F2 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x571 JUMPI DUP1 PUSH1 0x9D PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x5A4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x5B9 PUSH2 0x742 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x69 SWAP2 DUP3 PUSH2 0x5CA SWAP3 SWAP2 SWAP1 PUSH2 0x10B4 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x5FC SWAP3 SWAP2 SWAP1 PUSH2 0x11D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x610 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x676 SWAP1 PUSH2 0x1267 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x688 DUP2 PUSH2 0x7C0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x693 PUSH2 0x742 JUMP JUMPDEST DUP2 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xE38926C5806B98A6FD00C5D791A36FBD196537FE48D11C45C9F1D0ACD1EA74DF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x736 SWAP3 SWAP2 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x74A PUSH2 0x886 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x768 PUSH2 0x3D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7B5 SWAP1 PUSH2 0x130B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8B5 DUP2 PUSH2 0x8A2 JUMP JUMPDEST DUP2 EQ PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8D2 DUP2 PUSH2 0x8AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x926 DUP3 PUSH2 0x8DD JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x945 JUMPI PUSH2 0x944 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x958 PUSH2 0x88E JUMP JUMPDEST SWAP1 POP PUSH2 0x964 DUP3 DUP3 PUSH2 0x91D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x984 JUMPI PUSH2 0x983 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9B5 JUMPI PUSH2 0x9B4 PUSH2 0x99A JUMP JUMPDEST JUMPDEST PUSH2 0x9BF PUSH1 0x40 PUSH2 0x94E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9CF DUP5 DUP3 DUP6 ADD PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x9E3 DUP5 DUP3 DUP6 ADD PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA02 PUSH2 0x9FD DUP5 PUSH2 0x969 JUMP JUMPDEST PUSH2 0x94E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA25 JUMPI PUSH2 0xA24 PUSH2 0x995 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA4E JUMPI DUP1 PUSH2 0xA3A DUP9 DUP3 PUSH2 0x99F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0xA27 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA6D JUMPI PUSH2 0xA6C PUSH2 0x8D8 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA7D DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9EF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA9D JUMPI PUSH2 0xA9C PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAAB DUP6 DUP3 DUP7 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xACC JUMPI PUSH2 0xACB PUSH2 0x89D JUMP JUMPDEST JUMPDEST PUSH2 0xAD8 DUP6 DUP3 DUP7 ADD PUSH2 0xA58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB0D DUP3 PUSH2 0xAE2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB1D DUP2 PUSH2 0xB02 JUMP JUMPDEST DUP2 EQ PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB3A DUP2 PUSH2 0xB14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB57 JUMPI PUSH2 0xB56 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB65 DUP6 DUP3 DUP7 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB76 DUP6 DUP3 DUP7 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB89 DUP2 PUSH2 0xB02 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB80 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBBF DUP2 PUSH2 0xBAA JUMP JUMPDEST DUP2 EQ PUSH2 0xBCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBDC DUP2 PUSH2 0xBB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBFB JUMPI PUSH2 0xBFA PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC09 DUP7 DUP3 DUP8 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC1A DUP7 DUP3 DUP8 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xC2B DUP7 DUP3 DUP8 ADD PUSH2 0xBCD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC50 JUMPI PUSH2 0xC4F PUSH2 0x8D8 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC6D JUMPI PUSH2 0xC6C PUSH2 0xC35 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xC89 JUMPI PUSH2 0xC88 PUSH2 0x995 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCA7 JUMPI PUSH2 0xCA6 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCC5 JUMPI PUSH2 0xCC4 PUSH2 0x89D JUMP JUMPDEST JUMPDEST PUSH2 0xCD1 DUP6 DUP3 DUP7 ADD PUSH2 0xC3A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCF3 JUMPI PUSH2 0xCF2 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD01 DUP5 DUP3 DUP6 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD2F DUP2 PUSH2 0xD0A JUMP JUMPDEST DUP2 EQ PUSH2 0xD3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD4C DUP2 PUSH2 0xD26 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD69 JUMPI PUSH2 0xD68 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD77 DUP6 DUP3 DUP7 ADD PUSH2 0xD3D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xD88 DUP6 DUP3 DUP7 ADD PUSH2 0xD3D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE08 PUSH1 0x16 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0xE13 DUP3 PUSH2 0xDD2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE37 DUP2 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE47 DUP2 PUSH2 0x8A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE56 DUP2 PUSH2 0xBAA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xE71 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xE3E JUMP JUMPDEST PUSH2 0xE7E PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0xE8B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE4D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEE5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEF8 JUMPI PUSH2 0xEF7 PUSH2 0xE9E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0xF6A DUP7 DUP4 PUSH2 0xF23 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB1 PUSH2 0xFAC PUSH2 0xFA7 DUP5 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0xF8C JUMP JUMPDEST PUSH2 0xF82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFCB DUP4 PUSH2 0xF96 JUMP JUMPDEST PUSH2 0xFDF PUSH2 0xFD7 DUP3 PUSH2 0xFB8 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xF30 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFF4 PUSH2 0xFE7 JUMP JUMPDEST PUSH2 0xFFF DUP2 DUP5 DUP5 PUSH2 0xFC2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1023 JUMPI PUSH2 0x1018 PUSH1 0x0 DUP3 PUSH2 0xFEC JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1005 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1068 JUMPI PUSH2 0x1039 DUP2 PUSH2 0xEFE JUMP JUMPDEST PUSH2 0x1042 DUP5 PUSH2 0xF13 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1051 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1065 PUSH2 0x105D DUP6 PUSH2 0xF13 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x1004 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x106D JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10A4 DUP4 DUP4 PUSH2 0x107A JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10BE DUP4 DUP4 PUSH2 0xE93 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10D7 JUMPI PUSH2 0x10D6 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST PUSH2 0x10E1 DUP3 SLOAD PUSH2 0xECD JUMP JUMPDEST PUSH2 0x10EC DUP3 DUP3 DUP6 PUSH2 0x1027 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x111B JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x1109 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x1113 DUP6 DUP3 PUSH2 0x1098 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x117B JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x1129 DUP7 PUSH2 0xEFE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1151 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x112C JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x116E JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x116A PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x107A JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B0 DUP4 DUP6 PUSH2 0x1184 JUMP JUMPDEST SWAP4 POP PUSH2 0x11BD DUP4 DUP6 DUP5 PUSH2 0x1195 JUMP JUMPDEST PUSH2 0x11C6 DUP4 PUSH2 0x8DD JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11EC DUP2 DUP5 DUP7 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1251 PUSH1 0x26 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0x125C DUP3 PUSH2 0x11F5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1280 DUP2 PUSH2 0x1244 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1290 DUP2 PUSH2 0xD0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x12AB PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x12B8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1287 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12F5 PUSH1 0x20 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0x1300 DUP3 PUSH2 0x12BF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1324 DUP2 PUSH2 0x12E8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xCF PUSH4 0xBE5AEA21 0x2B SMOD 0xAD 0xD2 ORIGIN LOG2 REVERT 0x1F 0xEA 0x21 0xE0 LOG2 DUP14 JUMP 0x5C AND SWAP3 SHL 0x2A INVALID PUSH14 0x54E9534F64736F6C634300081200 CALLER ","sourceMap":"139:2924:13:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkOwner_68":{"entryPoint":1858,"id":68,"parameterSlots":0,"returnSlots":0},"@_msgSender_1147":{"entryPoint":2182,"id":1147,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_125":{"entryPoint":1984,"id":125,"parameterSlots":1,"returnSlots":0},"@owner_54":{"entryPoint":978,"id":54,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_82":{"entryPoint":625,"id":82,"parameterSlots":0,"returnSlots":0},"@setSupportedInstitutions_3773":{"entryPoint":349,"id":3773,"parameterSlots":2,"returnSlots":0},"@settingManagerBool_3719":{"entryPoint":1020,"id":3719,"parameterSlots":3,"returnSlots":0},"@transferOwnership_105":{"entryPoint":1544,"id":105,"parameterSlots":1,"returnSlots":0},"@updateProtocolAddresses_3832":{"entryPoint":645,"id":3832,"parameterSlots":2,"returnSlots":0},"@updateProtocolAggregator_3848":{"entryPoint":1457,"id":3848,"parameterSlots":2,"returnSlots":0},"@updateProtocolFees_3796":{"entryPoint":1675,"id":3796,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":2543,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2859,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":2648,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":3021,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":2243,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":3130,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_struct$_Institution_$3609_memory_ptr":{"entryPoint":2463,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint128":{"entryPoint":3389,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3293,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":2880,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_addresst_bool":{"entryPoint":3042,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":2694,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":3216,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint128t_uint128":{"entryPoint":3410,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":2944,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":3661,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":3646,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":4516,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":4676,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack":{"entryPoint":3579,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":4840,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint128_to_t_uint128_fromStack":{"entryPoint":4743,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":2959,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed":{"entryPoint":3676,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4561,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4711,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3614,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4875,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed":{"entryPoint":4758,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":2382,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":2190,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr":{"entryPoint":2409,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_bytes_storage":{"entryPoint":3838,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_calldata_ptr":{"entryPoint":3731,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":4484,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":3521,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_bytes_storage":{"entryPoint":4135,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":2818,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":2986,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":2210,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint128":{"entryPoint":3338,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2786,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":3970,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":4100,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_uint256_to_t_uint256":{"entryPoint":3990,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage":{"entryPoint":4276,"id":null,"parameterSlots":3,"returnSlots":0},"copy_calldata_to_memory_with_cleanup":{"entryPoint":4501,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":3859,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":3789,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":4248,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":2333,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":3980,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":4218,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x22":{"entryPoint":3742,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3474,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2286,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":4024,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":3125,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2264,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":2458,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2453,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":2205,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2200,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2269,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":3875,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":4205,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":4076,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":4597,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4":{"entryPoint":3538,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":4799,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":3888,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":4034,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2836,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":2998,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":2220,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint128":{"entryPoint":3366,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":4071,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:20242:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"379:32:15","statements":[{"nodeType":"YulAssignment","src":"389:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:15"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:15","type":""}],"src":"334:77:15"},{"body":{"nodeType":"YulBlock","src":"460:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:15"},"nodeType":"YulFunctionCall","src":"519:12:15"},"nodeType":"YulExpressionStatement","src":"519:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"490:17:15"},"nodeType":"YulFunctionCall","src":"490:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:15"},"nodeType":"YulFunctionCall","src":"480:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:15"},"nodeType":"YulFunctionCall","src":"473:43:15"},"nodeType":"YulIf","src":"470:63:15"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:15","type":""}],"src":"417:122:15"},{"body":{"nodeType":"YulBlock","src":"597:87:15","statements":[{"nodeType":"YulAssignment","src":"607:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:15"},"nodeType":"YulFunctionCall","src":"616:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:15"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"645:26:15"},"nodeType":"YulFunctionCall","src":"645:33:15"},"nodeType":"YulExpressionStatement","src":"645:33:15"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:15","type":""}],"src":"545:139:15"},{"body":{"nodeType":"YulBlock","src":"779:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"796:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"799:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"789:6:15"},"nodeType":"YulFunctionCall","src":"789:12:15"},"nodeType":"YulExpressionStatement","src":"789:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"690:117:15"},{"body":{"nodeType":"YulBlock","src":"861:54:15","statements":[{"nodeType":"YulAssignment","src":"871:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"889:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"896:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"885:3:15"},"nodeType":"YulFunctionCall","src":"885:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"905:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"901:3:15"},"nodeType":"YulFunctionCall","src":"901:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"881:3:15"},"nodeType":"YulFunctionCall","src":"881:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"871:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"844:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"854:6:15","type":""}],"src":"813:102:15"},{"body":{"nodeType":"YulBlock","src":"949:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"966:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"969:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"959:6:15"},"nodeType":"YulFunctionCall","src":"959:88:15"},"nodeType":"YulExpressionStatement","src":"959:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1063:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1066:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1056:6:15"},"nodeType":"YulFunctionCall","src":"1056:15:15"},"nodeType":"YulExpressionStatement","src":"1056:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1087:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1090:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1080:6:15"},"nodeType":"YulFunctionCall","src":"1080:15:15"},"nodeType":"YulExpressionStatement","src":"1080:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"921:180:15"},{"body":{"nodeType":"YulBlock","src":"1150:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1160:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1182:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1212:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1190:21:15"},"nodeType":"YulFunctionCall","src":"1190:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1178:3:15"},"nodeType":"YulFunctionCall","src":"1178:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1164:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1329:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1331:16:15"},"nodeType":"YulFunctionCall","src":"1331:18:15"},"nodeType":"YulExpressionStatement","src":"1331:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1272:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"1284:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1269:2:15"},"nodeType":"YulFunctionCall","src":"1269:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1308:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1320:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1305:2:15"},"nodeType":"YulFunctionCall","src":"1305:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1266:2:15"},"nodeType":"YulFunctionCall","src":"1266:62:15"},"nodeType":"YulIf","src":"1263:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1367:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1371:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1360:6:15"},"nodeType":"YulFunctionCall","src":"1360:22:15"},"nodeType":"YulExpressionStatement","src":"1360:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1136:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"1144:4:15","type":""}],"src":"1107:281:15"},{"body":{"nodeType":"YulBlock","src":"1435:88:15","statements":[{"nodeType":"YulAssignment","src":"1445:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1455:18:15"},"nodeType":"YulFunctionCall","src":"1455:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1445:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1504:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"1512:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1484:19:15"},"nodeType":"YulFunctionCall","src":"1484:33:15"},"nodeType":"YulExpressionStatement","src":"1484:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1419:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1428:6:15","type":""}],"src":"1394:129:15"},{"body":{"nodeType":"YulBlock","src":"1640:229:15","statements":[{"body":{"nodeType":"YulBlock","src":"1745:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1747:16:15"},"nodeType":"YulFunctionCall","src":"1747:18:15"},"nodeType":"YulExpressionStatement","src":"1747:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1717:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1725:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1714:2:15"},"nodeType":"YulFunctionCall","src":"1714:30:15"},"nodeType":"YulIf","src":"1711:56:15"},{"nodeType":"YulAssignment","src":"1777:25:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1789:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1797:4:15","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1785:3:15"},"nodeType":"YulFunctionCall","src":"1785:17:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1777:4:15"}]},{"nodeType":"YulAssignment","src":"1839:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1851:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"1857:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1847:3:15"},"nodeType":"YulFunctionCall","src":"1847:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1839:4:15"}]}]},"name":"array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1624:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1635:4:15","type":""}],"src":"1529:340:15"},{"body":{"nodeType":"YulBlock","src":"1964:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1981:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1984:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1974:6:15"},"nodeType":"YulFunctionCall","src":"1974:12:15"},"nodeType":"YulExpressionStatement","src":"1974:12:15"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"1875:117:15"},{"body":{"nodeType":"YulBlock","src":"2087:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2104:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2107:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2097:6:15"},"nodeType":"YulFunctionCall","src":"2097:12:15"},"nodeType":"YulExpressionStatement","src":"2097:12:15"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"1998:117:15"},{"body":{"nodeType":"YulBlock","src":"2210:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2227:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2230:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2220:6:15"},"nodeType":"YulFunctionCall","src":"2220:12:15"},"nodeType":"YulExpressionStatement","src":"2220:12:15"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"2121:117:15"},{"body":{"nodeType":"YulBlock","src":"2377:494:15","statements":[{"body":{"nodeType":"YulBlock","src":"2421:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"2423:77:15"},"nodeType":"YulFunctionCall","src":"2423:79:15"},"nodeType":"YulExpressionStatement","src":"2423:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"2398:3:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"2403:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2394:3:15"},"nodeType":"YulFunctionCall","src":"2394:19:15"},{"kind":"number","nodeType":"YulLiteral","src":"2415:4:15","type":"","value":"0x40"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2390:3:15"},"nodeType":"YulFunctionCall","src":"2390:30:15"},"nodeType":"YulIf","src":"2387:117:15"},{"nodeType":"YulAssignment","src":"2513:30:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2538:4:15","type":"","value":"0x40"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2522:15:15"},"nodeType":"YulFunctionCall","src":"2522:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2513:5:15"}]},{"nodeType":"YulBlock","src":"2553:150:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2588:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"2602:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2592:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2628:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2635:4:15","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2624:3:15"},"nodeType":"YulFunctionCall","src":"2624:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2667:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"2678:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2663:3:15"},"nodeType":"YulFunctionCall","src":"2663:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"2687:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2642:20:15"},"nodeType":"YulFunctionCall","src":"2642:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2617:6:15"},"nodeType":"YulFunctionCall","src":"2617:75:15"},"nodeType":"YulExpressionStatement","src":"2617:75:15"}]},{"nodeType":"YulBlock","src":"2713:151:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2748:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"2762:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2752:6:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2789:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2796:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2785:3:15"},"nodeType":"YulFunctionCall","src":"2785:16:15"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2828:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"2839:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2824:3:15"},"nodeType":"YulFunctionCall","src":"2824:22:15"},{"name":"end","nodeType":"YulIdentifier","src":"2848:3:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2803:20:15"},"nodeType":"YulFunctionCall","src":"2803:49:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2778:6:15"},"nodeType":"YulFunctionCall","src":"2778:75:15"},"nodeType":"YulExpressionStatement","src":"2778:75:15"}]}]},"name":"abi_decode_t_struct$_Institution_$3609_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2352:9:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"2363:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2371:5:15","type":""}],"src":"2293:578:15"},{"body":{"nodeType":"YulBlock","src":"3059:666:15","statements":[{"nodeType":"YulAssignment","src":"3069:119:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3180:6:15"}],"functionName":{"name":"array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3094:85:15"},"nodeType":"YulFunctionCall","src":"3094:93:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3078:15:15"},"nodeType":"YulFunctionCall","src":"3078:110:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3069:5:15"}]},{"nodeType":"YulVariableDeclaration","src":"3197:16:15","value":{"name":"array","nodeType":"YulIdentifier","src":"3208:5:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"3201:3:15","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3230:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"3237:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3223:6:15"},"nodeType":"YulFunctionCall","src":"3223:21:15"},"nodeType":"YulExpressionStatement","src":"3223:21:15"},{"nodeType":"YulAssignment","src":"3253:23:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3264:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"3271:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3260:3:15"},"nodeType":"YulFunctionCall","src":"3260:16:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3253:3:15"}]},{"nodeType":"YulVariableDeclaration","src":"3286:44:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3304:6:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3316:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3324:4:15","type":"","value":"0x40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3312:3:15"},"nodeType":"YulFunctionCall","src":"3312:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3300:3:15"},"nodeType":"YulFunctionCall","src":"3300:30:15"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"3290:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3358:103:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"3372:77:15"},"nodeType":"YulFunctionCall","src":"3372:79:15"},"nodeType":"YulExpressionStatement","src":"3372:79:15"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"3345:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"3353:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3342:2:15"},"nodeType":"YulFunctionCall","src":"3342:15:15"},"nodeType":"YulIf","src":"3339:122:15"},{"body":{"nodeType":"YulBlock","src":"3546:173:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3561:21:15","value":{"name":"src","nodeType":"YulIdentifier","src":"3579:3:15"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"3565:10:15","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3603:3:15"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"3658:10:15"},{"name":"end","nodeType":"YulIdentifier","src":"3670:3:15"}],"functionName":{"name":"abi_decode_t_struct$_Institution_$3609_memory_ptr","nodeType":"YulIdentifier","src":"3608:49:15"},"nodeType":"YulFunctionCall","src":"3608:66:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3596:6:15"},"nodeType":"YulFunctionCall","src":"3596:79:15"},"nodeType":"YulExpressionStatement","src":"3596:79:15"},{"nodeType":"YulAssignment","src":"3688:21:15","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3699:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3704:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3695:3:15"},"nodeType":"YulFunctionCall","src":"3695:14:15"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3688:3:15"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3499:3:15"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3504:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3496:2:15"},"nodeType":"YulFunctionCall","src":"3496:15:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3512:25:15","statements":[{"nodeType":"YulAssignment","src":"3514:21:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3525:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3530:4:15","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:15"},"nodeType":"YulFunctionCall","src":"3521:14:15"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3514:3:15"}]}]},"pre":{"nodeType":"YulBlock","src":"3474:21:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3476:17:15","value":{"name":"offset","nodeType":"YulIdentifier","src":"3487:6:15"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3480:3:15","type":""}]}]},"src":"3470:249:15"}]},"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3029:6:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"3037:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3045:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3053:5:15","type":""}],"src":"2928:797:15"},{"body":{"nodeType":"YulBlock","src":"3888:322:15","statements":[{"body":{"nodeType":"YulBlock","src":"3937:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"3939:77:15"},"nodeType":"YulFunctionCall","src":"3939:79:15"},"nodeType":"YulExpressionStatement","src":"3939:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3916:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3924:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3912:3:15"},"nodeType":"YulFunctionCall","src":"3912:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"3931:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3908:3:15"},"nodeType":"YulFunctionCall","src":"3908:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3901:6:15"},"nodeType":"YulFunctionCall","src":"3901:35:15"},"nodeType":"YulIf","src":"3898:122:15"},{"nodeType":"YulVariableDeclaration","src":"4029:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4056:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4043:12:15"},"nodeType":"YulFunctionCall","src":"4043:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4033:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4072:132:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4177:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4185:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:15"},"nodeType":"YulFunctionCall","src":"4173:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"4192:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"4200:3:15"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4081:91:15"},"nodeType":"YulFunctionCall","src":"4081:123:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"4072:5:15"}]}]},"name":"abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3866:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3874:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3882:5:15","type":""}],"src":"3782:428:15"},{"body":{"nodeType":"YulBlock","src":"4353:605:15","statements":[{"body":{"nodeType":"YulBlock","src":"4399:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4401:77:15"},"nodeType":"YulFunctionCall","src":"4401:79:15"},"nodeType":"YulExpressionStatement","src":"4401:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4374:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4383:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4370:3:15"},"nodeType":"YulFunctionCall","src":"4370:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"4395:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4366:3:15"},"nodeType":"YulFunctionCall","src":"4366:32:15"},"nodeType":"YulIf","src":"4363:119:15"},{"nodeType":"YulBlock","src":"4492:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4507:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4521:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4511:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4536:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4582:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4567:3:15"},"nodeType":"YulFunctionCall","src":"4567:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4591:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"4546:20:15"},"nodeType":"YulFunctionCall","src":"4546:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4536:6:15"}]}]},{"nodeType":"YulBlock","src":"4619:332:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4634:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4665:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4676:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4661:3:15"},"nodeType":"YulFunctionCall","src":"4661:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4648:12:15"},"nodeType":"YulFunctionCall","src":"4648:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4638:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"4727:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4729:77:15"},"nodeType":"YulFunctionCall","src":"4729:79:15"},"nodeType":"YulExpressionStatement","src":"4729:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4699:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4707:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4696:2:15"},"nodeType":"YulFunctionCall","src":"4696:30:15"},"nodeType":"YulIf","src":"4693:117:15"},{"nodeType":"YulAssignment","src":"4824:117:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4913:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4924:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4909:3:15"},"nodeType":"YulFunctionCall","src":"4909:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4933:7:15"}],"functionName":{"name":"abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4834:74:15"},"nodeType":"YulFunctionCall","src":"4834:107:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4824:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4315:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4326:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4338:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4346:6:15","type":""}],"src":"4216:742:15"},{"body":{"nodeType":"YulBlock","src":"5009:81:15","statements":[{"nodeType":"YulAssignment","src":"5019:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5034:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"5041:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5030:3:15"},"nodeType":"YulFunctionCall","src":"5030:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5019:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4991:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5001:7:15","type":""}],"src":"4964:126:15"},{"body":{"nodeType":"YulBlock","src":"5141:51:15","statements":[{"nodeType":"YulAssignment","src":"5151:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5180:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5162:17:15"},"nodeType":"YulFunctionCall","src":"5162:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5151:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5123:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5133:7:15","type":""}],"src":"5096:96:15"},{"body":{"nodeType":"YulBlock","src":"5241:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"5298:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5307:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5310:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5300:6:15"},"nodeType":"YulFunctionCall","src":"5300:12:15"},"nodeType":"YulExpressionStatement","src":"5300:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5264:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5289:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5271:17:15"},"nodeType":"YulFunctionCall","src":"5271:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5261:2:15"},"nodeType":"YulFunctionCall","src":"5261:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5254:6:15"},"nodeType":"YulFunctionCall","src":"5254:43:15"},"nodeType":"YulIf","src":"5251:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5234:5:15","type":""}],"src":"5198:122:15"},{"body":{"nodeType":"YulBlock","src":"5378:87:15","statements":[{"nodeType":"YulAssignment","src":"5388:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5410:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5397:12:15"},"nodeType":"YulFunctionCall","src":"5397:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5388:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5453:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"5426:26:15"},"nodeType":"YulFunctionCall","src":"5426:33:15"},"nodeType":"YulExpressionStatement","src":"5426:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5356:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"5364:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5372:5:15","type":""}],"src":"5326:139:15"},{"body":{"nodeType":"YulBlock","src":"5554:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"5600:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5602:77:15"},"nodeType":"YulFunctionCall","src":"5602:79:15"},"nodeType":"YulExpressionStatement","src":"5602:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5575:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"5584:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5571:3:15"},"nodeType":"YulFunctionCall","src":"5571:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"5596:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5567:3:15"},"nodeType":"YulFunctionCall","src":"5567:32:15"},"nodeType":"YulIf","src":"5564:119:15"},{"nodeType":"YulBlock","src":"5693:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5708:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5722:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5712:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5737:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5772:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5783:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5768:3:15"},"nodeType":"YulFunctionCall","src":"5768:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5792:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"5747:20:15"},"nodeType":"YulFunctionCall","src":"5747:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5737:6:15"}]}]},{"nodeType":"YulBlock","src":"5820:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5835:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5849:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5839:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5865:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5900:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5911:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5896:3:15"},"nodeType":"YulFunctionCall","src":"5896:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5920:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5875:20:15"},"nodeType":"YulFunctionCall","src":"5875:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5865:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5516:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5527:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5539:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5547:6:15","type":""}],"src":"5471:474:15"},{"body":{"nodeType":"YulBlock","src":"6016:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6033:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6056:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6038:17:15"},"nodeType":"YulFunctionCall","src":"6038:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6026:6:15"},"nodeType":"YulFunctionCall","src":"6026:37:15"},"nodeType":"YulExpressionStatement","src":"6026:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6004:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6011:3:15","type":""}],"src":"5951:118:15"},{"body":{"nodeType":"YulBlock","src":"6173:124:15","statements":[{"nodeType":"YulAssignment","src":"6183:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6195:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6206:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6191:3:15"},"nodeType":"YulFunctionCall","src":"6191:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6183:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6263:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6276:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6287:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6272:3:15"},"nodeType":"YulFunctionCall","src":"6272:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"6219:43:15"},"nodeType":"YulFunctionCall","src":"6219:71:15"},"nodeType":"YulExpressionStatement","src":"6219:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6145:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6157:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6168:4:15","type":""}],"src":"6075:222:15"},{"body":{"nodeType":"YulBlock","src":"6345:48:15","statements":[{"nodeType":"YulAssignment","src":"6355:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6380:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6373:6:15"},"nodeType":"YulFunctionCall","src":"6373:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6366:6:15"},"nodeType":"YulFunctionCall","src":"6366:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6355:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6327:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6337:7:15","type":""}],"src":"6303:90:15"},{"body":{"nodeType":"YulBlock","src":"6439:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"6493:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6502:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6505:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6495:6:15"},"nodeType":"YulFunctionCall","src":"6495:12:15"},"nodeType":"YulExpressionStatement","src":"6495:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6462:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6484:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6469:14:15"},"nodeType":"YulFunctionCall","src":"6469:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6459:2:15"},"nodeType":"YulFunctionCall","src":"6459:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6452:6:15"},"nodeType":"YulFunctionCall","src":"6452:40:15"},"nodeType":"YulIf","src":"6449:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6432:5:15","type":""}],"src":"6399:116:15"},{"body":{"nodeType":"YulBlock","src":"6570:84:15","statements":[{"nodeType":"YulAssignment","src":"6580:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6602:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6589:12:15"},"nodeType":"YulFunctionCall","src":"6589:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6580:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6642:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6618:23:15"},"nodeType":"YulFunctionCall","src":"6618:30:15"},"nodeType":"YulExpressionStatement","src":"6618:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6548:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6556:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6564:5:15","type":""}],"src":"6521:133:15"},{"body":{"nodeType":"YulBlock","src":"6757:516:15","statements":[{"body":{"nodeType":"YulBlock","src":"6803:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6805:77:15"},"nodeType":"YulFunctionCall","src":"6805:79:15"},"nodeType":"YulExpressionStatement","src":"6805:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6778:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6787:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6774:3:15"},"nodeType":"YulFunctionCall","src":"6774:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6799:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6770:3:15"},"nodeType":"YulFunctionCall","src":"6770:32:15"},"nodeType":"YulIf","src":"6767:119:15"},{"nodeType":"YulBlock","src":"6896:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6911:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6925:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6915:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6940:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6975:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6986:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6971:3:15"},"nodeType":"YulFunctionCall","src":"6971:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6995:7:15"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"6950:20:15"},"nodeType":"YulFunctionCall","src":"6950:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6940:6:15"}]}]},{"nodeType":"YulBlock","src":"7023:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7038:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7052:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7042:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7068:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7103:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7114:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7099:3:15"},"nodeType":"YulFunctionCall","src":"7099:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7123:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7078:20:15"},"nodeType":"YulFunctionCall","src":"7078:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7068:6:15"}]}]},{"nodeType":"YulBlock","src":"7151:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7166:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"7180:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7170:6:15","type":""}]},{"nodeType":"YulAssignment","src":"7196:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7228:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"7239:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7224:3:15"},"nodeType":"YulFunctionCall","src":"7224:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7248:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"7206:17:15"},"nodeType":"YulFunctionCall","src":"7206:50:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7196:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6711:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6722:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6734:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6742:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6750:6:15","type":""}],"src":"6660:613:15"},{"body":{"nodeType":"YulBlock","src":"7368:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7385:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7388:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7378:6:15"},"nodeType":"YulFunctionCall","src":"7378:12:15"},"nodeType":"YulExpressionStatement","src":"7378:12:15"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"7279:117:15"},{"body":{"nodeType":"YulBlock","src":"7489:478:15","statements":[{"body":{"nodeType":"YulBlock","src":"7538:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"7540:77:15"},"nodeType":"YulFunctionCall","src":"7540:79:15"},"nodeType":"YulExpressionStatement","src":"7540:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7517:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7525:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7513:3:15"},"nodeType":"YulFunctionCall","src":"7513:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"7532:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7509:3:15"},"nodeType":"YulFunctionCall","src":"7509:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7502:6:15"},"nodeType":"YulFunctionCall","src":"7502:35:15"},"nodeType":"YulIf","src":"7499:122:15"},{"nodeType":"YulAssignment","src":"7630:30:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7653:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7640:12:15"},"nodeType":"YulFunctionCall","src":"7640:20:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"7630:6:15"}]},{"body":{"nodeType":"YulBlock","src":"7703:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"7705:77:15"},"nodeType":"YulFunctionCall","src":"7705:79:15"},"nodeType":"YulExpressionStatement","src":"7705:79:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7675:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7683:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7672:2:15"},"nodeType":"YulFunctionCall","src":"7672:30:15"},"nodeType":"YulIf","src":"7669:117:15"},{"nodeType":"YulAssignment","src":"7795:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7811:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7819:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7807:3:15"},"nodeType":"YulFunctionCall","src":"7807:17:15"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"7795:8:15"}]},{"body":{"nodeType":"YulBlock","src":"7878:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"7880:77:15"},"nodeType":"YulFunctionCall","src":"7880:79:15"},"nodeType":"YulExpressionStatement","src":"7880:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"7843:8:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7857:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7865:4:15","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7853:3:15"},"nodeType":"YulFunctionCall","src":"7853:17:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7839:3:15"},"nodeType":"YulFunctionCall","src":"7839:32:15"},{"name":"end","nodeType":"YulIdentifier","src":"7873:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7836:2:15"},"nodeType":"YulFunctionCall","src":"7836:41:15"},"nodeType":"YulIf","src":"7833:128:15"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7456:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"7464:3:15","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"7472:8:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"7482:6:15","type":""}],"src":"7415:552:15"},{"body":{"nodeType":"YulBlock","src":"8058:442:15","statements":[{"body":{"nodeType":"YulBlock","src":"8104:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8106:77:15"},"nodeType":"YulFunctionCall","src":"8106:79:15"},"nodeType":"YulExpressionStatement","src":"8106:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8079:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"8088:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8075:3:15"},"nodeType":"YulFunctionCall","src":"8075:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"8100:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8071:3:15"},"nodeType":"YulFunctionCall","src":"8071:32:15"},"nodeType":"YulIf","src":"8068:119:15"},{"nodeType":"YulBlock","src":"8197:296:15","statements":[{"nodeType":"YulVariableDeclaration","src":"8212:45:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8243:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"8254:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8239:3:15"},"nodeType":"YulFunctionCall","src":"8239:17:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8226:12:15"},"nodeType":"YulFunctionCall","src":"8226:31:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8216:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"8304:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"8306:77:15"},"nodeType":"YulFunctionCall","src":"8306:79:15"},"nodeType":"YulExpressionStatement","src":"8306:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8276:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8284:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8273:2:15"},"nodeType":"YulFunctionCall","src":"8273:30:15"},"nodeType":"YulIf","src":"8270:117:15"},{"nodeType":"YulAssignment","src":"8401:82:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8455:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"8466:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8451:3:15"},"nodeType":"YulFunctionCall","src":"8451:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8475:7:15"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"8419:31:15"},"nodeType":"YulFunctionCall","src":"8419:64:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8401:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"8409:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8020:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8031:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8043:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8051:6:15","type":""}],"src":"7973:527:15"},{"body":{"nodeType":"YulBlock","src":"8572:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"8618:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8620:77:15"},"nodeType":"YulFunctionCall","src":"8620:79:15"},"nodeType":"YulExpressionStatement","src":"8620:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8593:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"8602:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8589:3:15"},"nodeType":"YulFunctionCall","src":"8589:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"8614:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8585:3:15"},"nodeType":"YulFunctionCall","src":"8585:32:15"},"nodeType":"YulIf","src":"8582:119:15"},{"nodeType":"YulBlock","src":"8711:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"8726:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"8740:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8730:6:15","type":""}]},{"nodeType":"YulAssignment","src":"8755:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8790:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"8801:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8786:3:15"},"nodeType":"YulFunctionCall","src":"8786:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8810:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"8765:20:15"},"nodeType":"YulFunctionCall","src":"8765:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8755:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8542:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8553:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8565:6:15","type":""}],"src":"8506:329:15"},{"body":{"nodeType":"YulBlock","src":"8886:73:15","statements":[{"nodeType":"YulAssignment","src":"8896:57:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8911:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"8918:34:15","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8907:3:15"},"nodeType":"YulFunctionCall","src":"8907:46:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8896:7:15"}]}]},"name":"cleanup_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8868:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8878:7:15","type":""}],"src":"8841:118:15"},{"body":{"nodeType":"YulBlock","src":"9008:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"9065:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9074:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9077:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9067:6:15"},"nodeType":"YulFunctionCall","src":"9067:12:15"},"nodeType":"YulExpressionStatement","src":"9067:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9031:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9056:5:15"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"9038:17:15"},"nodeType":"YulFunctionCall","src":"9038:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9028:2:15"},"nodeType":"YulFunctionCall","src":"9028:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9021:6:15"},"nodeType":"YulFunctionCall","src":"9021:43:15"},"nodeType":"YulIf","src":"9018:63:15"}]},"name":"validator_revert_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9001:5:15","type":""}],"src":"8965:122:15"},{"body":{"nodeType":"YulBlock","src":"9145:87:15","statements":[{"nodeType":"YulAssignment","src":"9155:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9177:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9164:12:15"},"nodeType":"YulFunctionCall","src":"9164:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"9155:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9220:5:15"}],"functionName":{"name":"validator_revert_t_uint128","nodeType":"YulIdentifier","src":"9193:26:15"},"nodeType":"YulFunctionCall","src":"9193:33:15"},"nodeType":"YulExpressionStatement","src":"9193:33:15"}]},"name":"abi_decode_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9123:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"9131:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"9139:5:15","type":""}],"src":"9093:139:15"},{"body":{"nodeType":"YulBlock","src":"9321:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"9367:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9369:77:15"},"nodeType":"YulFunctionCall","src":"9369:79:15"},"nodeType":"YulExpressionStatement","src":"9369:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9342:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"9351:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9338:3:15"},"nodeType":"YulFunctionCall","src":"9338:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"9363:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9334:3:15"},"nodeType":"YulFunctionCall","src":"9334:32:15"},"nodeType":"YulIf","src":"9331:119:15"},{"nodeType":"YulBlock","src":"9460:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9475:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9489:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9479:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9504:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9539:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9550:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9535:3:15"},"nodeType":"YulFunctionCall","src":"9535:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9559:7:15"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"9514:20:15"},"nodeType":"YulFunctionCall","src":"9514:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9504:6:15"}]}]},{"nodeType":"YulBlock","src":"9587:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9602:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9616:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9606:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9632:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9667:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9678:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9663:3:15"},"nodeType":"YulFunctionCall","src":"9663:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9687:7:15"}],"functionName":{"name":"abi_decode_t_uint128","nodeType":"YulIdentifier","src":"9642:20:15"},"nodeType":"YulFunctionCall","src":"9642:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9632:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint128t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9283:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9294:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9306:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9314:6:15","type":""}],"src":"9238:474:15"},{"body":{"nodeType":"YulBlock","src":"9746:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9763:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9766:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9756:6:15"},"nodeType":"YulFunctionCall","src":"9756:88:15"},"nodeType":"YulExpressionStatement","src":"9756:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9860:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9863:4:15","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9853:6:15"},"nodeType":"YulFunctionCall","src":"9853:15:15"},"nodeType":"YulExpressionStatement","src":"9853:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9884:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9887:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9877:6:15"},"nodeType":"YulFunctionCall","src":"9877:15:15"},"nodeType":"YulExpressionStatement","src":"9877:15:15"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9718:180:15"},{"body":{"nodeType":"YulBlock","src":"10000:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10017:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"10022:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10010:6:15"},"nodeType":"YulFunctionCall","src":"10010:19:15"},"nodeType":"YulExpressionStatement","src":"10010:19:15"},{"nodeType":"YulAssignment","src":"10038:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10057:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10062:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10053:3:15"},"nodeType":"YulFunctionCall","src":"10053:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"10038:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9972:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"9977:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"9988:11:15","type":""}],"src":"9904:169:15"},{"body":{"nodeType":"YulBlock","src":"10185:66:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10207:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"10215:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10203:3:15"},"nodeType":"YulFunctionCall","src":"10203:14:15"},{"hexValue":"50617963726573743a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"10219:24:15","type":"","value":"Paycrest: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10196:6:15"},"nodeType":"YulFunctionCall","src":"10196:48:15"},"nodeType":"YulExpressionStatement","src":"10196:48:15"}]},"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"10177:6:15","type":""}],"src":"10079:172:15"},{"body":{"nodeType":"YulBlock","src":"10403:220:15","statements":[{"nodeType":"YulAssignment","src":"10413:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10479:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10484:2:15","type":"","value":"22"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10420:58:15"},"nodeType":"YulFunctionCall","src":"10420:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10413:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10585:3:15"}],"functionName":{"name":"store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4","nodeType":"YulIdentifier","src":"10496:88:15"},"nodeType":"YulFunctionCall","src":"10496:93:15"},"nodeType":"YulExpressionStatement","src":"10496:93:15"},{"nodeType":"YulAssignment","src":"10598:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10609:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"10614:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10605:3:15"},"nodeType":"YulFunctionCall","src":"10605:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10598:3:15"}]}]},"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10391:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10399:3:15","type":""}],"src":"10257:366:15"},{"body":{"nodeType":"YulBlock","src":"10800:248:15","statements":[{"nodeType":"YulAssignment","src":"10810:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10822:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"10833:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10818:3:15"},"nodeType":"YulFunctionCall","src":"10818:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10810:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10857:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"10868:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10853:3:15"},"nodeType":"YulFunctionCall","src":"10853:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10876:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"10882:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10872:3:15"},"nodeType":"YulFunctionCall","src":"10872:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10846:6:15"},"nodeType":"YulFunctionCall","src":"10846:47:15"},"nodeType":"YulExpressionStatement","src":"10846:47:15"},{"nodeType":"YulAssignment","src":"10902:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11036:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10910:124:15"},"nodeType":"YulFunctionCall","src":"10910:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10902:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10780:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10795:4:15","type":""}],"src":"10629:419:15"},{"body":{"nodeType":"YulBlock","src":"11119:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11136:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11159:5:15"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"11141:17:15"},"nodeType":"YulFunctionCall","src":"11141:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11129:6:15"},"nodeType":"YulFunctionCall","src":"11129:37:15"},"nodeType":"YulExpressionStatement","src":"11129:37:15"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11107:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11114:3:15","type":""}],"src":"11054:118:15"},{"body":{"nodeType":"YulBlock","src":"11237:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11254:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11274:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"11259:14:15"},"nodeType":"YulFunctionCall","src":"11259:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11247:6:15"},"nodeType":"YulFunctionCall","src":"11247:34:15"},"nodeType":"YulExpressionStatement","src":"11247:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11225:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11232:3:15","type":""}],"src":"11178:109:15"},{"body":{"nodeType":"YulBlock","src":"11441:282:15","statements":[{"nodeType":"YulAssignment","src":"11451:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11463:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11474:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11459:3:15"},"nodeType":"YulFunctionCall","src":"11459:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11451:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11531:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11544:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11555:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11540:3:15"},"nodeType":"YulFunctionCall","src":"11540:17:15"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"11487:43:15"},"nodeType":"YulFunctionCall","src":"11487:71:15"},"nodeType":"YulExpressionStatement","src":"11487:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11612:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11625:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11636:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11621:3:15"},"nodeType":"YulFunctionCall","src":"11621:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"11568:43:15"},"nodeType":"YulFunctionCall","src":"11568:72:15"},"nodeType":"YulExpressionStatement","src":"11568:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11688:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11701:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11712:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11697:3:15"},"nodeType":"YulFunctionCall","src":"11697:18:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"11650:37:15"},"nodeType":"YulFunctionCall","src":"11650:66:15"},"nodeType":"YulExpressionStatement","src":"11650:66:15"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11397:9:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11409:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11417:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11425:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11436:4:15","type":""}],"src":"11293:430:15"},{"body":{"nodeType":"YulBlock","src":"11794:31:15","statements":[{"nodeType":"YulAssignment","src":"11805:13:15","value":{"name":"len","nodeType":"YulIdentifier","src":"11815:3:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"11805:6:15"}]}]},"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11772:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"11779:3:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"11787:6:15","type":""}],"src":"11729:96:15"},{"body":{"nodeType":"YulBlock","src":"11859:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11876:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11879:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11869:6:15"},"nodeType":"YulFunctionCall","src":"11869:88:15"},"nodeType":"YulExpressionStatement","src":"11869:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11973:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11976:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11966:6:15"},"nodeType":"YulFunctionCall","src":"11966:15:15"},"nodeType":"YulExpressionStatement","src":"11966:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11997:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12000:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11990:6:15"},"nodeType":"YulFunctionCall","src":"11990:15:15"},"nodeType":"YulExpressionStatement","src":"11990:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"11831:180:15"},{"body":{"nodeType":"YulBlock","src":"12068:269:15","statements":[{"nodeType":"YulAssignment","src":"12078:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"12092:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12098:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12088:3:15"},"nodeType":"YulFunctionCall","src":"12088:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12078:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"12109:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"12139:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"12145:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12135:3:15"},"nodeType":"YulFunctionCall","src":"12135:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"12113:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"12186:51:15","statements":[{"nodeType":"YulAssignment","src":"12200:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12214:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12222:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12210:3:15"},"nodeType":"YulFunctionCall","src":"12210:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12200:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"12166:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12159:6:15"},"nodeType":"YulFunctionCall","src":"12159:26:15"},"nodeType":"YulIf","src":"12156:81:15"},{"body":{"nodeType":"YulBlock","src":"12289:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"12303:16:15"},"nodeType":"YulFunctionCall","src":"12303:18:15"},"nodeType":"YulExpressionStatement","src":"12303:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"12253:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12276:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12284:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12273:2:15"},"nodeType":"YulFunctionCall","src":"12273:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12250:2:15"},"nodeType":"YulFunctionCall","src":"12250:38:15"},"nodeType":"YulIf","src":"12247:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"12052:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"12061:6:15","type":""}],"src":"12017:320:15"},{"body":{"nodeType":"YulBlock","src":"12396:87:15","statements":[{"nodeType":"YulAssignment","src":"12406:11:15","value":{"name":"ptr","nodeType":"YulIdentifier","src":"12414:3:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12406:4:15"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12434:1:15","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"12437:3:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12427:6:15"},"nodeType":"YulFunctionCall","src":"12427:14:15"},"nodeType":"YulExpressionStatement","src":"12427:14:15"},{"nodeType":"YulAssignment","src":"12450:26:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12468:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12471:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"12458:9:15"},"nodeType":"YulFunctionCall","src":"12458:18:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12450:4:15"}]}]},"name":"array_dataslot_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"12383:3:15","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"12391:4:15","type":""}],"src":"12343:140:15"},{"body":{"nodeType":"YulBlock","src":"12533:49:15","statements":[{"nodeType":"YulAssignment","src":"12543:33:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12561:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"12568:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12557:3:15"},"nodeType":"YulFunctionCall","src":"12557:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"12573:2:15","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12553:3:15"},"nodeType":"YulFunctionCall","src":"12553:23:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"12543:6:15"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12516:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"12526:6:15","type":""}],"src":"12489:93:15"},{"body":{"nodeType":"YulBlock","src":"12641:54:15","statements":[{"nodeType":"YulAssignment","src":"12651:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"12676:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"12682:5:15"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12672:3:15"},"nodeType":"YulFunctionCall","src":"12672:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"12651:8:15"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"12616:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"12622:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"12632:8:15","type":""}],"src":"12588:107:15"},{"body":{"nodeType":"YulBlock","src":"12777:317:15","statements":[{"nodeType":"YulVariableDeclaration","src":"12787:35:15","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"12808:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"12820:1:15","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12804:3:15"},"nodeType":"YulFunctionCall","src":"12804:18:15"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"12791:9:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12831:109:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"12862:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"12873:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"12843:18:15"},"nodeType":"YulFunctionCall","src":"12843:97:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"12835:4:15","type":""}]},{"nodeType":"YulAssignment","src":"12949:51:15","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"12980:9:15"},{"name":"toInsert","nodeType":"YulIdentifier","src":"12991:8:15"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"12961:18:15"},"nodeType":"YulFunctionCall","src":"12961:39:15"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"12949:8:15"}]},{"nodeType":"YulAssignment","src":"13009:30:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13022:5:15"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"13033:4:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"13029:3:15"},"nodeType":"YulFunctionCall","src":"13029:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13018:3:15"},"nodeType":"YulFunctionCall","src":"13018:21:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"13009:5:15"}]},{"nodeType":"YulAssignment","src":"13048:40:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13061:5:15"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"13072:8:15"},{"name":"mask","nodeType":"YulIdentifier","src":"13082:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13068:3:15"},"nodeType":"YulFunctionCall","src":"13068:19:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"13058:2:15"},"nodeType":"YulFunctionCall","src":"13058:30:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"13048:6:15"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12738:5:15","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"12745:10:15","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"12757:8:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"12770:6:15","type":""}],"src":"12701:393:15"},{"body":{"nodeType":"YulBlock","src":"13145:32:15","statements":[{"nodeType":"YulAssignment","src":"13155:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13166:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"13155:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13127:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"13137:7:15","type":""}],"src":"13100:77:15"},{"body":{"nodeType":"YulBlock","src":"13215:28:15","statements":[{"nodeType":"YulAssignment","src":"13225:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13232:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13225:3:15"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13201:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13211:3:15","type":""}],"src":"13183:60:15"},{"body":{"nodeType":"YulBlock","src":"13309:82:15","statements":[{"nodeType":"YulAssignment","src":"13319:66:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13377:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13359:17:15"},"nodeType":"YulFunctionCall","src":"13359:24:15"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"13350:8:15"},"nodeType":"YulFunctionCall","src":"13350:34:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13332:17:15"},"nodeType":"YulFunctionCall","src":"13332:53:15"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"13319:9:15"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13289:5:15","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"13299:9:15","type":""}],"src":"13249:142:15"},{"body":{"nodeType":"YulBlock","src":"13444:28:15","statements":[{"nodeType":"YulAssignment","src":"13454:12:15","value":{"name":"value","nodeType":"YulIdentifier","src":"13461:5:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13454:3:15"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13430:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13440:3:15","type":""}],"src":"13397:75:15"},{"body":{"nodeType":"YulBlock","src":"13554:193:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13564:63:15","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"13619:7:15"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"13588:30:15"},"nodeType":"YulFunctionCall","src":"13588:39:15"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"13568:16:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13643:4:15"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13683:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"13677:5:15"},"nodeType":"YulFunctionCall","src":"13677:11:15"},{"name":"offset","nodeType":"YulIdentifier","src":"13690:6:15"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"13722:16:15"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"13698:23:15"},"nodeType":"YulFunctionCall","src":"13698:41:15"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"13649:27:15"},"nodeType":"YulFunctionCall","src":"13649:91:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"13636:6:15"},"nodeType":"YulFunctionCall","src":"13636:105:15"},"nodeType":"YulExpressionStatement","src":"13636:105:15"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"13531:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"13537:6:15","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"13545:7:15","type":""}],"src":"13478:269:15"},{"body":{"nodeType":"YulBlock","src":"13802:24:15","statements":[{"nodeType":"YulAssignment","src":"13812:8:15","value":{"kind":"number","nodeType":"YulLiteral","src":"13819:1:15","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13812:3:15"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13798:3:15","type":""}],"src":"13753:73:15"},{"body":{"nodeType":"YulBlock","src":"13885:136:15","statements":[{"nodeType":"YulVariableDeclaration","src":"13895:46:15","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"13909:30:15"},"nodeType":"YulFunctionCall","src":"13909:32:15"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"13899:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"13994:4:15"},{"name":"offset","nodeType":"YulIdentifier","src":"14000:6:15"},{"name":"zero_0","nodeType":"YulIdentifier","src":"14008:6:15"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"13950:43:15"},"nodeType":"YulFunctionCall","src":"13950:65:15"},"nodeType":"YulExpressionStatement","src":"13950:65:15"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"13871:4:15","type":""},{"name":"offset","nodeType":"YulTypedName","src":"13877:6:15","type":""}],"src":"13832:189:15"},{"body":{"nodeType":"YulBlock","src":"14077:136:15","statements":[{"body":{"nodeType":"YulBlock","src":"14144:63:15","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14188:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14195:1:15","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"14158:29:15"},"nodeType":"YulFunctionCall","src":"14158:39:15"},"nodeType":"YulExpressionStatement","src":"14158:39:15"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14097:5:15"},{"name":"end","nodeType":"YulIdentifier","src":"14104:3:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14094:2:15"},"nodeType":"YulFunctionCall","src":"14094:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"14109:26:15","statements":[{"nodeType":"YulAssignment","src":"14111:22:15","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"14124:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"14131:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14120:3:15"},"nodeType":"YulFunctionCall","src":"14120:13:15"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"14111:5:15"}]}]},"pre":{"nodeType":"YulBlock","src":"14091:2:15","statements":[]},"src":"14087:120:15"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"14065:5:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"14072:3:15","type":""}],"src":"14027:186:15"},{"body":{"nodeType":"YulBlock","src":"14297:463:15","statements":[{"body":{"nodeType":"YulBlock","src":"14323:430:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14337:53:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14384:5:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"14353:30:15"},"nodeType":"YulFunctionCall","src":"14353:37:15"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"14341:8:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14403:63:15","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"14426:8:15"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14454:10:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"14436:17:15"},"nodeType":"YulFunctionCall","src":"14436:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14422:3:15"},"nodeType":"YulFunctionCall","src":"14422:44:15"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"14407:11:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"14623:27:15","statements":[{"nodeType":"YulAssignment","src":"14625:23:15","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"14640:8:15"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"14625:11:15"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14607:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"14619:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14604:2:15"},"nodeType":"YulFunctionCall","src":"14604:18:15"},"nodeType":"YulIf","src":"14601:49:15"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"14692:11:15"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"14709:8:15"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14737:3:15"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"14719:17:15"},"nodeType":"YulFunctionCall","src":"14719:22:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14705:3:15"},"nodeType":"YulFunctionCall","src":"14705:37:15"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"14663:28:15"},"nodeType":"YulFunctionCall","src":"14663:80:15"},"nodeType":"YulExpressionStatement","src":"14663:80:15"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14314:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14319:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14311:2:15"},"nodeType":"YulFunctionCall","src":"14311:11:15"},"nodeType":"YulIf","src":"14308:445:15"}]},"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"14273:5:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"14280:3:15","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"14285:10:15","type":""}],"src":"14219:541:15"},{"body":{"nodeType":"YulBlock","src":"14829:54:15","statements":[{"nodeType":"YulAssignment","src":"14839:37:15","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"14864:4:15"},{"name":"value","nodeType":"YulIdentifier","src":"14870:5:15"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"14860:3:15"},"nodeType":"YulFunctionCall","src":"14860:16:15"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"14839:8:15"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"14804:4:15","type":""},{"name":"value","nodeType":"YulTypedName","src":"14810:5:15","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"14820:8:15","type":""}],"src":"14766:117:15"},{"body":{"nodeType":"YulBlock","src":"14940:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"14950:68:15","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14999:1:15","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"15002:5:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"14995:3:15"},"nodeType":"YulFunctionCall","src":"14995:13:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15014:1:15","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15010:3:15"},"nodeType":"YulFunctionCall","src":"15010:6:15"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"14966:28:15"},"nodeType":"YulFunctionCall","src":"14966:51:15"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"14962:3:15"},"nodeType":"YulFunctionCall","src":"14962:56:15"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"14954:4:15","type":""}]},{"nodeType":"YulAssignment","src":"15027:25:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15041:4:15"},{"name":"mask","nodeType":"YulIdentifier","src":"15047:4:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15037:3:15"},"nodeType":"YulFunctionCall","src":"15037:15:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"15027:6:15"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"14917:4:15","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"14923:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"14933:6:15","type":""}],"src":"14889:169:15"},{"body":{"nodeType":"YulBlock","src":"15144:214:15","statements":[{"nodeType":"YulAssignment","src":"15277:37:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15304:4:15"},{"name":"len","nodeType":"YulIdentifier","src":"15310:3:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"15285:18:15"},"nodeType":"YulFunctionCall","src":"15285:29:15"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15277:4:15"}]},{"nodeType":"YulAssignment","src":"15323:29:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15334:4:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15344:1:15","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"15347:3:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15340:3:15"},"nodeType":"YulFunctionCall","src":"15340:11:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"15331:2:15"},"nodeType":"YulFunctionCall","src":"15331:21:15"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"15323:4:15"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"15125:4:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"15131:3:15","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"15139:4:15","type":""}],"src":"15063:295:15"},{"body":{"nodeType":"YulBlock","src":"15460:1301:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15471:57:15","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"15519:3:15"},{"name":"len","nodeType":"YulIdentifier","src":"15524:3:15"}],"functionName":{"name":"array_length_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"15485:33:15"},"nodeType":"YulFunctionCall","src":"15485:43:15"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"15475:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"15613:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"15615:16:15"},"nodeType":"YulFunctionCall","src":"15615:18:15"},"nodeType":"YulExpressionStatement","src":"15615:18:15"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"15585:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15593:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15582:2:15"},"nodeType":"YulFunctionCall","src":"15582:30:15"},"nodeType":"YulIf","src":"15579:56:15"},{"nodeType":"YulVariableDeclaration","src":"15645:52:15","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15691:4:15"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"15685:5:15"},"nodeType":"YulFunctionCall","src":"15685:11:15"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"15659:25:15"},"nodeType":"YulFunctionCall","src":"15659:38:15"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"15649:6:15","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15789:4:15"},{"name":"oldLen","nodeType":"YulIdentifier","src":"15795:6:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"15803:6:15"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_bytes_storage","nodeType":"YulIdentifier","src":"15744:44:15"},"nodeType":"YulFunctionCall","src":"15744:66:15"},"nodeType":"YulExpressionStatement","src":"15744:66:15"},{"nodeType":"YulVariableDeclaration","src":"15820:18:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15837:1:15","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"15824:9:15","type":""}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"15885:624:15","statements":[{"nodeType":"YulVariableDeclaration","src":"15899:37:15","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"15918:6:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15930:4:15","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15926:3:15"},"nodeType":"YulFunctionCall","src":"15926:9:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15914:3:15"},"nodeType":"YulFunctionCall","src":"15914:22:15"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"15903:7:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15950:50:15","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"15995:4:15"}],"functionName":{"name":"array_dataslot_t_bytes_storage","nodeType":"YulIdentifier","src":"15964:30:15"},"nodeType":"YulFunctionCall","src":"15964:36:15"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"15954:6:15","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16013:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16022:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16017:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16081:170:15","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16106:6:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16131:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16136:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16127:3:15"},"nodeType":"YulFunctionCall","src":"16127:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16114:12:15"},"nodeType":"YulFunctionCall","src":"16114:33:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16099:6:15"},"nodeType":"YulFunctionCall","src":"16099:49:15"},"nodeType":"YulExpressionStatement","src":"16099:49:15"},{"nodeType":"YulAssignment","src":"16165:24:15","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16179:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16187:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16175:3:15"},"nodeType":"YulFunctionCall","src":"16175:14:15"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16165:6:15"}]},{"nodeType":"YulAssignment","src":"16206:31:15","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16223:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16234:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16219:3:15"},"nodeType":"YulFunctionCall","src":"16219:18:15"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16206:9:15"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16047:1:15"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"16050:7:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16044:2:15"},"nodeType":"YulFunctionCall","src":"16044:14:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16059:21:15","statements":[{"nodeType":"YulAssignment","src":"16061:17:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16070:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"16073:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16066:3:15"},"nodeType":"YulFunctionCall","src":"16066:12:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16061:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"16040:3:15","statements":[]},"src":"16036:215:15"},{"body":{"nodeType":"YulBlock","src":"16287:163:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16305:50:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16339:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16344:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16335:3:15"},"nodeType":"YulFunctionCall","src":"16335:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16322:12:15"},"nodeType":"YulFunctionCall","src":"16322:33:15"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"16309:9:15","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16379:6:15"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"16406:9:15"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16421:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16429:4:15","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16417:3:15"},"nodeType":"YulFunctionCall","src":"16417:17:15"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"16387:18:15"},"nodeType":"YulFunctionCall","src":"16387:48:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16372:6:15"},"nodeType":"YulFunctionCall","src":"16372:64:15"},"nodeType":"YulExpressionStatement","src":"16372:64:15"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"16270:7:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"16279:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16267:2:15"},"nodeType":"YulFunctionCall","src":"16267:19:15"},"nodeType":"YulIf","src":"16264:186:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16470:4:15"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16484:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16492:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"16480:3:15"},"nodeType":"YulFunctionCall","src":"16480:14:15"},{"kind":"number","nodeType":"YulLiteral","src":"16496:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16476:3:15"},"nodeType":"YulFunctionCall","src":"16476:22:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16463:6:15"},"nodeType":"YulFunctionCall","src":"16463:36:15"},"nodeType":"YulExpressionStatement","src":"16463:36:15"}]},"nodeType":"YulCase","src":"15878:631:15","value":{"kind":"number","nodeType":"YulLiteral","src":"15883:1:15","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"16526:229:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16540:14:15","value":{"kind":"number","nodeType":"YulLiteral","src":"16553:1:15","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"16544:5:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"16577:74:15","statements":[{"nodeType":"YulAssignment","src":"16595:42:15","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16621:3:15"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16626:9:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16617:3:15"},"nodeType":"YulFunctionCall","src":"16617:19:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"16604:12:15"},"nodeType":"YulFunctionCall","src":"16604:33:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"16595:5:15"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"16570:6:15"},"nodeType":"YulIf","src":"16567:84:15"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16671:4:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16730:5:15"},{"name":"newLen","nodeType":"YulIdentifier","src":"16737:6:15"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"16677:52:15"},"nodeType":"YulFunctionCall","src":"16677:67:15"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16664:6:15"},"nodeType":"YulFunctionCall","src":"16664:81:15"},"nodeType":"YulExpressionStatement","src":"16664:81:15"}]},"nodeType":"YulCase","src":"16518:237:15","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"15858:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15866:2:15","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15855:2:15"},"nodeType":"YulFunctionCall","src":"15855:14:15"},"nodeType":"YulSwitch","src":"15848:907:15"}]},"name":"copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"15444:4:15","type":""},{"name":"src","nodeType":"YulTypedName","src":"15450:3:15","type":""},{"name":"len","nodeType":"YulTypedName","src":"15455:3:15","type":""}],"src":"15363:1398:15"},{"body":{"nodeType":"YulBlock","src":"16862:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16879:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16884:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16872:6:15"},"nodeType":"YulFunctionCall","src":"16872:19:15"},"nodeType":"YulExpressionStatement","src":"16872:19:15"},{"nodeType":"YulAssignment","src":"16900:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16919:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"16924:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16915:3:15"},"nodeType":"YulFunctionCall","src":"16915:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16900:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16834:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"16839:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16850:11:15","type":""}],"src":"16767:168:15"},{"body":{"nodeType":"YulBlock","src":"17005:82:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17028:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"17033:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17038:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"17015:12:15"},"nodeType":"YulFunctionCall","src":"17015:30:15"},"nodeType":"YulExpressionStatement","src":"17015:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"17065:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17070:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17061:3:15"},"nodeType":"YulFunctionCall","src":"17061:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"17079:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17054:6:15"},"nodeType":"YulFunctionCall","src":"17054:27:15"},"nodeType":"YulExpressionStatement","src":"17054:27:15"}]},"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"16987:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"16992:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"16997:6:15","type":""}],"src":"16941:146:15"},{"body":{"nodeType":"YulBlock","src":"17215:214:15","statements":[{"nodeType":"YulAssignment","src":"17225:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17290:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17295:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17232:57:15"},"nodeType":"YulFunctionCall","src":"17232:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17225:3:15"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"17349:5:15"},{"name":"pos","nodeType":"YulIdentifier","src":"17356:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"17361:6:15"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"17312:36:15"},"nodeType":"YulFunctionCall","src":"17312:56:15"},"nodeType":"YulExpressionStatement","src":"17312:56:15"},{"nodeType":"YulAssignment","src":"17377:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17388:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"17415:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"17393:21:15"},"nodeType":"YulFunctionCall","src":"17393:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17384:3:15"},"nodeType":"YulFunctionCall","src":"17384:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17377:3:15"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"17188:5:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"17195:6:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17203:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17211:3:15","type":""}],"src":"17115:314:15"},{"body":{"nodeType":"YulBlock","src":"17561:203:15","statements":[{"nodeType":"YulAssignment","src":"17571:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17583:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17594:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17579:3:15"},"nodeType":"YulFunctionCall","src":"17579:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17571:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17618:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17629:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17614:3:15"},"nodeType":"YulFunctionCall","src":"17614:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17637:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"17643:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17633:3:15"},"nodeType":"YulFunctionCall","src":"17633:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17607:6:15"},"nodeType":"YulFunctionCall","src":"17607:47:15"},"nodeType":"YulExpressionStatement","src":"17607:47:15"},{"nodeType":"YulAssignment","src":"17663:94:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17735:6:15"},{"name":"value1","nodeType":"YulIdentifier","src":"17743:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"17752:4:15"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17671:63:15"},"nodeType":"YulFunctionCall","src":"17671:86:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17663:4:15"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17525:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17537:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17545:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17556:4:15","type":""}],"src":"17435:329:15"},{"body":{"nodeType":"YulBlock","src":"17876:119:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17898:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"17906:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17894:3:15"},"nodeType":"YulFunctionCall","src":"17894:14:15"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"17910:34:15","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17887:6:15"},"nodeType":"YulFunctionCall","src":"17887:58:15"},"nodeType":"YulExpressionStatement","src":"17887:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17966:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"17974:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17962:3:15"},"nodeType":"YulFunctionCall","src":"17962:15:15"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"17979:8:15","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17955:6:15"},"nodeType":"YulFunctionCall","src":"17955:33:15"},"nodeType":"YulExpressionStatement","src":"17955:33:15"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17868:6:15","type":""}],"src":"17770:225:15"},{"body":{"nodeType":"YulBlock","src":"18147:220:15","statements":[{"nodeType":"YulAssignment","src":"18157:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18223:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18228:2:15","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18164:58:15"},"nodeType":"YulFunctionCall","src":"18164:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18157:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18329:3:15"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"18240:88:15"},"nodeType":"YulFunctionCall","src":"18240:93:15"},"nodeType":"YulExpressionStatement","src":"18240:93:15"},{"nodeType":"YulAssignment","src":"18342:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18353:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18358:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18349:3:15"},"nodeType":"YulFunctionCall","src":"18349:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18342:3:15"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18135:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18143:3:15","type":""}],"src":"18001:366:15"},{"body":{"nodeType":"YulBlock","src":"18544:248:15","statements":[{"nodeType":"YulAssignment","src":"18554:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18566:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18577:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18562:3:15"},"nodeType":"YulFunctionCall","src":"18562:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18554:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18601:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18612:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18597:3:15"},"nodeType":"YulFunctionCall","src":"18597:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18620:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"18626:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18616:3:15"},"nodeType":"YulFunctionCall","src":"18616:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18590:6:15"},"nodeType":"YulFunctionCall","src":"18590:47:15"},"nodeType":"YulExpressionStatement","src":"18590:47:15"},{"nodeType":"YulAssignment","src":"18646:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18780:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18654:124:15"},"nodeType":"YulFunctionCall","src":"18654:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18646:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18524:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18539:4:15","type":""}],"src":"18373:419:15"},{"body":{"nodeType":"YulBlock","src":"18863:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18880:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18903:5:15"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"18885:17:15"},"nodeType":"YulFunctionCall","src":"18885:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18873:6:15"},"nodeType":"YulFunctionCall","src":"18873:37:15"},"nodeType":"YulExpressionStatement","src":"18873:37:15"}]},"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18851:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18858:3:15","type":""}],"src":"18798:118:15"},{"body":{"nodeType":"YulBlock","src":"19048:206:15","statements":[{"nodeType":"YulAssignment","src":"19058:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19070:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19081:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19066:3:15"},"nodeType":"YulFunctionCall","src":"19066:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19058:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19138:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19151:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19162:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19147:3:15"},"nodeType":"YulFunctionCall","src":"19147:17:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"19094:43:15"},"nodeType":"YulFunctionCall","src":"19094:71:15"},"nodeType":"YulExpressionStatement","src":"19094:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"19219:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19232:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19243:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19228:3:15"},"nodeType":"YulFunctionCall","src":"19228:18:15"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"19175:43:15"},"nodeType":"YulFunctionCall","src":"19175:72:15"},"nodeType":"YulExpressionStatement","src":"19175:72:15"}]},"name":"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19012:9:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19024:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19032:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19043:4:15","type":""}],"src":"18922:332:15"},{"body":{"nodeType":"YulBlock","src":"19366:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19388:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"19396:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19384:3:15"},"nodeType":"YulFunctionCall","src":"19384:14:15"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"19400:34:15","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19377:6:15"},"nodeType":"YulFunctionCall","src":"19377:58:15"},"nodeType":"YulExpressionStatement","src":"19377:58:15"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19358:6:15","type":""}],"src":"19260:182:15"},{"body":{"nodeType":"YulBlock","src":"19594:220:15","statements":[{"nodeType":"YulAssignment","src":"19604:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19670:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19675:2:15","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19611:58:15"},"nodeType":"YulFunctionCall","src":"19611:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19604:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19776:3:15"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"19687:88:15"},"nodeType":"YulFunctionCall","src":"19687:93:15"},"nodeType":"YulExpressionStatement","src":"19687:93:15"},{"nodeType":"YulAssignment","src":"19789:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19800:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19805:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19796:3:15"},"nodeType":"YulFunctionCall","src":"19796:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19789:3:15"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"19582:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"19590:3:15","type":""}],"src":"19448:366:15"},{"body":{"nodeType":"YulBlock","src":"19991:248:15","statements":[{"nodeType":"YulAssignment","src":"20001:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20013:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20024:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20009:3:15"},"nodeType":"YulFunctionCall","src":"20009:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20001:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20048:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20059:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20044:3:15"},"nodeType":"YulFunctionCall","src":"20044:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20067:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"20073:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20063:3:15"},"nodeType":"YulFunctionCall","src":"20063:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20037:6:15"},"nodeType":"YulFunctionCall","src":"20037:47:15"},"nodeType":"YulExpressionStatement","src":"20037:47:15"},{"nodeType":"YulAssignment","src":"20093:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20227:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20101:124:15"},"nodeType":"YulFunctionCall","src":"20101:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20093:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19971:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19986:4:15","type":""}],"src":"19820:419:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n // struct PaycrestSettingManager.Institution\n function abi_decode_t_struct$_Institution_$3609_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x40) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x40)\n\n {\n // code\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n {\n // name\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_bytes32(add(headStart, offset), end))\n\n }\n\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x40))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x40) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_struct$_Institution_$3609_memory_ptr(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // struct PaycrestSettingManager.Institution[]\n function abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_struct$_Institution_$3609_memory_ptr_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bytes32t_addresst_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint128(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint128(value) {\n if iszero(eq(value, cleanup_t_uint128(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint128(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint128(value)\n }\n\n function abi_decode_tuple_t_uint128t_uint128(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(memPtr) {\n\n mstore(add(memPtr, 0), \"Paycrest: zero address\")\n\n }\n\n function abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_68acc8709af02b321316138701ad2c6648c264d7c602486f0d41b486400eedd4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_address_t_bool__to_t_bytes32_t_address_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function array_length_t_bytes_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len) {\n\n let newLen := array_length_t_bytes_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value0, value1, tail)\n\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_uint128_to_t_uint128_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint128(value))\n }\n\n function abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c806399e3c0b41161005b57806399e3c0b4146100ed578063cb79455b14610109578063f2fde38b14610125578063f5326b191461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b35780638da5cb5b146100cf575b600080fd5b6100a760048036038101906100a29190610a86565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610b40565b610285565b005b6100d76103d2565b6040516100e49190610b8f565b60405180910390f35b61010760048036038101906101029190610be2565b6103fc565b005b610123600480360381019061011e9190610c90565b6105b1565b005b61013f600480360381019061013a9190610cdd565b610608565b005b61015b60048036038101906101569190610d52565b61068b565b005b610165610742565b60008151905060005b8181101561026b57609e600085815260200190815260200160002083828151811061019c5761019b610d92565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d92565b5b602002602001015160200151815260200185815250609f600085848151811061022d5761022c610d92565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b610279610742565b61028360006107c0565b565b61028d610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610e1e565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610404610742565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a90610e1e565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036104f25780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105715780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516105a493929190610e5c565b60405180910390a1505050565b6105b9610742565b8181606991826105ca9291906110b4565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516105fc9291906111d1565b60405180910390a15050565b610610610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361067f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067690611267565b60405180910390fd5b610688816107c0565b50565b610693610742565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051610736929190611296565b60405180910390a15050565b61074a610886565b73ffffffffffffffffffffffffffffffffffffffff166107686103d2565b73ffffffffffffffffffffffffffffffffffffffff16146107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b59061130b565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6108b5816108a2565b81146108c057600080fd5b50565b6000813590506108d2816108ac565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610926826108dd565b810181811067ffffffffffffffff82111715610945576109446108ee565b5b80604052505050565b600061095861088e565b9050610964828261091d565b919050565b600067ffffffffffffffff821115610984576109836108ee565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109b5576109b461099a565b5b6109bf604061094e565b905060006109cf848285016108c3565b60008301525060206109e3848285016108c3565b60208301525092915050565b6000610a026109fd84610969565b61094e565b90508083825260208201905060408402830185811115610a2557610a24610995565b5b835b81811015610a4e5780610a3a888261099f565b845260208401935050604081019050610a27565b5050509392505050565b600082601f830112610a6d57610a6c6108d8565b5b8135610a7d8482602086016109ef565b91505092915050565b60008060408385031215610a9d57610a9c610898565b5b6000610aab858286016108c3565b925050602083013567ffffffffffffffff811115610acc57610acb61089d565b5b610ad885828601610a58565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b0d82610ae2565b9050919050565b610b1d81610b02565b8114610b2857600080fd5b50565b600081359050610b3a81610b14565b92915050565b60008060408385031215610b5757610b56610898565b5b6000610b65858286016108c3565b9250506020610b7685828601610b2b565b9150509250929050565b610b8981610b02565b82525050565b6000602082019050610ba46000830184610b80565b92915050565b60008115159050919050565b610bbf81610baa565b8114610bca57600080fd5b50565b600081359050610bdc81610bb6565b92915050565b600080600060608486031215610bfb57610bfa610898565b5b6000610c09868287016108c3565b9350506020610c1a86828701610b2b565b9250506040610c2b86828701610bcd565b9150509250925092565b600080fd5b60008083601f840112610c5057610c4f6108d8565b5b8235905067ffffffffffffffff811115610c6d57610c6c610c35565b5b602083019150836001820283011115610c8957610c88610995565b5b9250929050565b60008060208385031215610ca757610ca6610898565b5b600083013567ffffffffffffffff811115610cc557610cc461089d565b5b610cd185828601610c3a565b92509250509250929050565b600060208284031215610cf357610cf2610898565b5b6000610d0184828501610b2b565b91505092915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b610d2f81610d0a565b8114610d3a57600080fd5b50565b600081359050610d4c81610d26565b92915050565b60008060408385031215610d6957610d68610898565b5b6000610d7785828601610d3d565b9250506020610d8885828601610d3d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610e08601683610dc1565b9150610e1382610dd2565b602082019050919050565b60006020820190508181036000830152610e3781610dfb565b9050919050565b610e47816108a2565b82525050565b610e5681610baa565b82525050565b6000606082019050610e716000830186610e3e565b610e7e6020830185610b80565b610e8b6040830184610e4d565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ee557607f821691505b602082108103610ef857610ef7610e9e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610f23565b610f6a8683610f23565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610fb1610fac610fa784610f82565b610f8c565b610f82565b9050919050565b6000819050919050565b610fcb83610f96565b610fdf610fd782610fb8565b848454610f30565b825550505050565b600090565b610ff4610fe7565b610fff818484610fc2565b505050565b5b8181101561102357611018600082610fec565b600181019050611005565b5050565b601f8211156110685761103981610efe565b61104284610f13565b81016020851015611051578190505b61106561105d85610f13565b830182611004565b50505b505050565b600082821c905092915050565b600061108b6000198460080261106d565b1980831691505092915050565b60006110a4838361107a565b9150826002028217905092915050565b6110be8383610e93565b67ffffffffffffffff8111156110d7576110d66108ee565b5b6110e18254610ecd565b6110ec828285611027565b6000601f83116001811461111b5760008415611109578287013590505b6111138582611098565b86555061117b565b601f19841661112986610efe565b60005b828110156111515784890135825560018201915060208501945060208101905061112c565b8683101561116e578489013561116a601f89168261107a565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111b08385611184565b93506111bd838584611195565b6111c6836108dd565b840190509392505050565b600060208201905081810360008301526111ec8184866111a4565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611251602683610dc1565b915061125c826111f5565b604082019050919050565b6000602082019050818103600083015261128081611244565b9050919050565b61129081610d0a565b82525050565b60006040820190506112ab6000830185611287565b6112b86020830184611287565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112f5602083610dc1565b9150611300826112bf565b602082019050919050565b60006020820190508181036000830152611324816112e8565b905091905056fea2646970667358221220cbcf63be5aea212b07add232a2fd1fea21e0a28d565c16921b2afe6d54e9534f64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x99E3C0B4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x99E3C0B4 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0xCB79455B EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xF5326B19 EQ PUSH2 0x141 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x32200882 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x79A0EFFB EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xA86 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xB40 JUMP JUMPDEST PUSH2 0x285 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD7 PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x102 SWAP2 SWAP1 PUSH2 0xBE2 JUMP JUMPDEST PUSH2 0x3FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x11E SWAP2 SWAP1 PUSH2 0xC90 JUMP JUMPDEST PUSH2 0x5B1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13A SWAP2 SWAP1 PUSH2 0xCDD JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0xD52 JUMP JUMPDEST PUSH2 0x68B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x165 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x9E PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x19C JUMPI PUSH2 0x19B PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x201 JUMPI PUSH2 0x200 PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP PUSH1 0x9F PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x22D JUMPI PUSH2 0x22C PUSH2 0xD92 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE SWAP1 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x16E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x279 PUSH2 0x742 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x0 PUSH2 0x7C0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x28D PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F3 SWAP1 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x6665650000000000000000000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x365 JUMPI DUP1 PUSH1 0x67 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x61676772656761746F7200000000000000000000000000000000000000000000 DUP3 SUB PUSH2 0x3CE JUMPI DUP1 PUSH1 0x68 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x404 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x473 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46A SWAP1 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x746F6B656E000000000000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x4F2 JUMPI DUP1 PUSH1 0x9C PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x77686974656C6973740000000000000000000000000000000000000000000000 DUP4 SUB PUSH2 0x571 JUMPI DUP1 PUSH1 0x9D PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE22CADCC5DDBC0A185E8920EAA6825BCC06DCD6B432988E7E9912CAA59ACE930 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x5A4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x5B9 PUSH2 0x742 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x69 SWAP2 DUP3 PUSH2 0x5CA SWAP3 SWAP2 SWAP1 PUSH2 0x10B4 JUMP JUMPDEST POP PUSH32 0x6A6600B7242975868D8321B5E64D0C9F2FCC92EB1AF72254A6357BE77EE7DCEF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x5FC SWAP3 SWAP2 SWAP1 PUSH2 0x11D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x610 PUSH2 0x742 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x67F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x676 SWAP1 PUSH2 0x1267 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x688 DUP2 PUSH2 0x7C0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x693 PUSH2 0x742 JUMP JUMPDEST DUP2 PUSH1 0x66 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x66 PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xE38926C5806B98A6FD00C5D791A36FBD196537FE48D11C45C9F1D0ACD1EA74DF DUP3 DUP3 PUSH1 0x40 MLOAD PUSH2 0x736 SWAP3 SWAP2 SWAP1 PUSH2 0x1296 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x74A PUSH2 0x886 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x768 PUSH2 0x3D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7B5 SWAP1 PUSH2 0x130B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x33 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x33 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8B5 DUP2 PUSH2 0x8A2 JUMP JUMPDEST DUP2 EQ PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8D2 DUP2 PUSH2 0x8AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x926 DUP3 PUSH2 0x8DD JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x945 JUMPI PUSH2 0x944 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x958 PUSH2 0x88E JUMP JUMPDEST SWAP1 POP PUSH2 0x964 DUP3 DUP3 PUSH2 0x91D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x984 JUMPI PUSH2 0x983 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9B5 JUMPI PUSH2 0x9B4 PUSH2 0x99A JUMP JUMPDEST JUMPDEST PUSH2 0x9BF PUSH1 0x40 PUSH2 0x94E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9CF DUP5 DUP3 DUP6 ADD PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x9E3 DUP5 DUP3 DUP6 ADD PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA02 PUSH2 0x9FD DUP5 PUSH2 0x969 JUMP JUMPDEST PUSH2 0x94E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x40 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA25 JUMPI PUSH2 0xA24 PUSH2 0x995 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA4E JUMPI DUP1 PUSH2 0xA3A DUP9 DUP3 PUSH2 0x99F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x40 DUP2 ADD SWAP1 POP PUSH2 0xA27 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA6D JUMPI PUSH2 0xA6C PUSH2 0x8D8 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA7D DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9EF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA9D JUMPI PUSH2 0xA9C PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAAB DUP6 DUP3 DUP7 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xACC JUMPI PUSH2 0xACB PUSH2 0x89D JUMP JUMPDEST JUMPDEST PUSH2 0xAD8 DUP6 DUP3 DUP7 ADD PUSH2 0xA58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB0D DUP3 PUSH2 0xAE2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB1D DUP2 PUSH2 0xB02 JUMP JUMPDEST DUP2 EQ PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB3A DUP2 PUSH2 0xB14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB57 JUMPI PUSH2 0xB56 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB65 DUP6 DUP3 DUP7 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB76 DUP6 DUP3 DUP7 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xB89 DUP2 PUSH2 0xB02 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xBA4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB80 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBBF DUP2 PUSH2 0xBAA JUMP JUMPDEST DUP2 EQ PUSH2 0xBCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBDC DUP2 PUSH2 0xBB6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBFB JUMPI PUSH2 0xBFA PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC09 DUP7 DUP3 DUP8 ADD PUSH2 0x8C3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC1A DUP7 DUP3 DUP8 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xC2B DUP7 DUP3 DUP8 ADD PUSH2 0xBCD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC50 JUMPI PUSH2 0xC4F PUSH2 0x8D8 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC6D JUMPI PUSH2 0xC6C PUSH2 0xC35 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xC89 JUMPI PUSH2 0xC88 PUSH2 0x995 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCA7 JUMPI PUSH2 0xCA6 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCC5 JUMPI PUSH2 0xCC4 PUSH2 0x89D JUMP JUMPDEST JUMPDEST PUSH2 0xCD1 DUP6 DUP3 DUP7 ADD PUSH2 0xC3A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCF3 JUMPI PUSH2 0xCF2 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD01 DUP5 DUP3 DUP6 ADD PUSH2 0xB2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD2F DUP2 PUSH2 0xD0A JUMP JUMPDEST DUP2 EQ PUSH2 0xD3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD4C DUP2 PUSH2 0xD26 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD69 JUMPI PUSH2 0xD68 PUSH2 0x898 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD77 DUP6 DUP3 DUP7 ADD PUSH2 0xD3D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xD88 DUP6 DUP3 DUP7 ADD PUSH2 0xD3D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x50617963726573743A207A65726F206164647265737300000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE08 PUSH1 0x16 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0xE13 DUP3 PUSH2 0xDD2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE37 DUP2 PUSH2 0xDFB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE47 DUP2 PUSH2 0x8A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xE56 DUP2 PUSH2 0xBAA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xE71 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xE3E JUMP JUMPDEST PUSH2 0xE7E PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0xE8B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE4D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xEE5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xEF8 JUMPI PUSH2 0xEF7 PUSH2 0xE9E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0xF60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0xF6A DUP7 DUP4 PUSH2 0xF23 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFB1 PUSH2 0xFAC PUSH2 0xFA7 DUP5 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0xF8C JUMP JUMPDEST PUSH2 0xF82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFCB DUP4 PUSH2 0xF96 JUMP JUMPDEST PUSH2 0xFDF PUSH2 0xFD7 DUP3 PUSH2 0xFB8 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0xF30 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xFF4 PUSH2 0xFE7 JUMP JUMPDEST PUSH2 0xFFF DUP2 DUP5 DUP5 PUSH2 0xFC2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1023 JUMPI PUSH2 0x1018 PUSH1 0x0 DUP3 PUSH2 0xFEC JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1005 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1068 JUMPI PUSH2 0x1039 DUP2 PUSH2 0xEFE JUMP JUMPDEST PUSH2 0x1042 DUP5 PUSH2 0xF13 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1051 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x1065 PUSH2 0x105D DUP6 PUSH2 0xF13 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x1004 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x108B PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x106D JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10A4 DUP4 DUP4 PUSH2 0x107A JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10BE DUP4 DUP4 PUSH2 0xE93 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10D7 JUMPI PUSH2 0x10D6 PUSH2 0x8EE JUMP JUMPDEST JUMPDEST PUSH2 0x10E1 DUP3 SLOAD PUSH2 0xECD JUMP JUMPDEST PUSH2 0x10EC DUP3 DUP3 DUP6 PUSH2 0x1027 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x111B JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x1109 JUMPI DUP3 DUP8 ADD CALLDATALOAD SWAP1 POP JUMPDEST PUSH2 0x1113 DUP6 DUP3 PUSH2 0x1098 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x117B JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x1129 DUP7 PUSH2 0xEFE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1151 JUMPI DUP5 DUP10 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x112C JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x116E JUMPI DUP5 DUP10 ADD CALLDATALOAD PUSH2 0x116A PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x107A JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B0 DUP4 DUP6 PUSH2 0x1184 JUMP JUMPDEST SWAP4 POP PUSH2 0x11BD DUP4 DUP6 DUP5 PUSH2 0x1195 JUMP JUMPDEST PUSH2 0x11C6 DUP4 PUSH2 0x8DD JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11EC DUP2 DUP5 DUP7 PUSH2 0x11A4 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1251 PUSH1 0x26 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0x125C DUP3 PUSH2 0x11F5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1280 DUP2 PUSH2 0x1244 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1290 DUP2 PUSH2 0xD0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x12AB PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1287 JUMP JUMPDEST PUSH2 0x12B8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1287 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12F5 PUSH1 0x20 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0x1300 DUP3 PUSH2 0x12BF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1324 DUP2 PUSH2 0x12E8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xCF PUSH4 0xBE5AEA21 0x2B SMOD 0xAD 0xD2 ORIGIN LOG2 REVERT 0x1F 0xEA 0x21 0xE0 LOG2 DUP14 JUMP 0x5C AND SWAP3 SHL 0x2A INVALID PUSH14 0x54E9534F64736F6C634300081200 CALLER ","sourceMap":"139:2924:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1833:500;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2064:101:0;;;:::i;:::-;;2630:263:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1441:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1483:344:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2899:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2314:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2339:285:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1833:500;1334:13:0;:11;:13::i;:::-;1950:14:13::1;1967:12;:19;1950:36;;2001:6;1996:331;2017:6;2013:1;:10;1996:331;;;2041:21;:31;2063:8;2041:31;;;;;;;;;;;2078:12;2091:1;2078:15;;;;;;;;:::i;:::-;;;;;;;;2041:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2160:97;;;;;;;;2202:12;2215:1;2202:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2160:97;;;;2234:8;2160:97;;::::0;2108:27:::1;:49;2136:12;2149:1;2136:15;;;;;;;;:::i;:::-;;;;;;;;:20;;;2108:49;;;;;;;;;;;:149;;;;;;;;;;;;;;;;;;;2299:3;;;;;;;1996:331;;;;1939:394;1833:500:::0;;:::o;2064:101:0:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;2630:263:13:-;1334:13:0;:11;:13::i;:::-;2746:1:13::1;2729:19;;:5;:19;;::::0;2721:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2789:13;:4;:13:::0;2785:39:::1;;2819:5;2804:12;;:20;;;;;;;;;;;;;;;;;;2785:39;2838:20;:4;:20:::0;2834:52:::1;;2881:5;2860:18;;:26;;;;;;;;;;;;;;;;;;2834:52;2630:263:::0;;:::o;1441:85:0:-;1487:7;1513:6;;;;;;;;;;;1506:13;;1441:85;:::o;1483:344:13:-;1334:13:0;:11;:13::i;:::-;1607:1:13::1;1590:19;;:5;:19;;::::0;1582:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1650:15;:4;:15:::0;1646:54:::1;;1694:6;1667:17;:24;1685:5;1667:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1646:54;1714:19;:4;:19:::0;1710:55:::1;;1759:6;1735:14;:21;1750:5;1735:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1710:55;1781:39;1800:4;1806:5;1813:6;1781:39;;;;;;;;:::i;:::-;;;;;;;;1483:344:::0;;;:::o;2899:161::-;1334:13:0;:11;:13::i;:::-;3003:10:13::1;;2989:11;:24;;;;;;;:::i;:::-;;3028:25;3042:10;;3028:25;;;;;;;:::i;:::-;;;;;;;;2899:161:::0;;:::o;2314:198:0:-;1334:13;:11;:13::i;:::-;2422:1:::1;2402:22;;:8;:22;;::::0;2394:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:28;2496:8;2477:18;:28::i;:::-;2314:198:::0;:::o;2339:285:13:-;1334:13:0;:11;:13::i;:::-;2476:19:13::1;2455:18;;:40;;;;;;;;;;;;;;;;;;2527:20;2505:19;;:42;;;;;;;;;;;;;;;;;;2562:55;2575:19;2596:20;2562:55;;;;;;;:::i;:::-;;;;;;;;2339:285:::0;;:::o;1599:130:0:-;1673:12;:10;:12::i;:::-;1662:23;;:7;:5;:7::i;:::-;:23;;;1654:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1599:130::o;2666:187::-;2739:16;2758:6;;;;;;;;;;;2739:25;;2783:8;2774:6;;:17;;;;;;;;;;;;;;;;;;2837:8;2806:40;;2827:8;2806:40;;;;;;;;;;;;2729:124;2666:187;:::o;850:96:6:-;903:7;929:10;922:17;;850:96;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;813:102;854:6;905:2;901:7;896:2;889:5;885:14;881:28;871:38;;813:102;;;:::o;921:180::-;969:77;966:1;959:88;1066:4;1063:1;1056:15;1090:4;1087:1;1080:15;1107:281;1190:27;1212:4;1190:27;:::i;:::-;1182:6;1178:40;1320:6;1308:10;1305:22;1284:18;1272:10;1269:34;1266:62;1263:88;;;1331:18;;:::i;:::-;1263:88;1371:10;1367:2;1360:22;1150:238;1107:281;;:::o;1394:129::-;1428:6;1455:20;;:::i;:::-;1445:30;;1484:33;1512:4;1504:6;1484:33;:::i;:::-;1394:129;;;:::o;1529:340::-;1635:4;1725:18;1717:6;1714:30;1711:56;;;1747:18;;:::i;:::-;1711:56;1797:4;1789:6;1785:17;1777:25;;1857:4;1851;1847:15;1839:23;;1529:340;;;:::o;1875:117::-;1984:1;1981;1974:12;1998:117;2107:1;2104;2097:12;2293:578;2371:5;2415:4;2403:9;2398:3;2394:19;2390:30;2387:117;;;2423:79;;:::i;:::-;2387:117;2522:21;2538:4;2522:21;:::i;:::-;2513:30;;2602:1;2642:49;2687:3;2678:6;2667:9;2663:22;2642:49;:::i;:::-;2635:4;2628:5;2624:16;2617:75;2553:150;2762:2;2803:49;2848:3;2839:6;2828:9;2824:22;2803:49;:::i;:::-;2796:4;2789:5;2785:16;2778:75;2713:151;2293:578;;;;:::o;2928:797::-;3053:5;3078:110;3094:93;3180:6;3094:93;:::i;:::-;3078:110;:::i;:::-;3069:119;;3208:5;3237:6;3230:5;3223:21;3271:4;3264:5;3260:16;3253:23;;3324:4;3316:6;3312:17;3304:6;3300:30;3353:3;3345:6;3342:15;3339:122;;;3372:79;;:::i;:::-;3339:122;3487:6;3470:249;3504:6;3499:3;3496:15;3470:249;;;3579:3;3608:66;3670:3;3658:10;3608:66;:::i;:::-;3603:3;3596:79;3704:4;3699:3;3695:14;3688:21;;3546:173;3530:4;3525:3;3521:14;3514:21;;3470:249;;;3474:21;3059:666;;2928:797;;;;;:::o;3782:428::-;3882:5;3931:3;3924:4;3916:6;3912:17;3908:27;3898:122;;3939:79;;:::i;:::-;3898:122;4056:6;4043:20;4081:123;4200:3;4192:6;4185:4;4177:6;4173:17;4081:123;:::i;:::-;4072:132;;3888:322;3782:428;;;;:::o;4216:742::-;4338:6;4346;4395:2;4383:9;4374:7;4370:23;4366:32;4363:119;;;4401:79;;:::i;:::-;4363:119;4521:1;4546:53;4591:7;4582:6;4571:9;4567:22;4546:53;:::i;:::-;4536:63;;4492:117;4676:2;4665:9;4661:18;4648:32;4707:18;4699:6;4696:30;4693:117;;;4729:79;;:::i;:::-;4693:117;4834:107;4933:7;4924:6;4913:9;4909:22;4834:107;:::i;:::-;4824:117;;4619:332;4216:742;;;;;:::o;4964:126::-;5001:7;5041:42;5034:5;5030:54;5019:65;;4964:126;;;:::o;5096:96::-;5133:7;5162:24;5180:5;5162:24;:::i;:::-;5151:35;;5096:96;;;:::o;5198:122::-;5271:24;5289:5;5271:24;:::i;:::-;5264:5;5261:35;5251:63;;5310:1;5307;5300:12;5251:63;5198:122;:::o;5326:139::-;5372:5;5410:6;5397:20;5388:29;;5426:33;5453:5;5426:33;:::i;:::-;5326:139;;;;:::o;5471:474::-;5539:6;5547;5596:2;5584:9;5575:7;5571:23;5567:32;5564:119;;;5602:79;;:::i;:::-;5564:119;5722:1;5747:53;5792:7;5783:6;5772:9;5768:22;5747:53;:::i;:::-;5737:63;;5693:117;5849:2;5875:53;5920:7;5911:6;5900:9;5896:22;5875:53;:::i;:::-;5865:63;;5820:118;5471:474;;;;;:::o;5951:118::-;6038:24;6056:5;6038:24;:::i;:::-;6033:3;6026:37;5951:118;;:::o;6075:222::-;6168:4;6206:2;6195:9;6191:18;6183:26;;6219:71;6287:1;6276:9;6272:17;6263:6;6219:71;:::i;:::-;6075:222;;;;:::o;6303:90::-;6337:7;6380:5;6373:13;6366:21;6355:32;;6303:90;;;:::o;6399:116::-;6469:21;6484:5;6469:21;:::i;:::-;6462:5;6459:32;6449:60;;6505:1;6502;6495:12;6449:60;6399:116;:::o;6521:133::-;6564:5;6602:6;6589:20;6580:29;;6618:30;6642:5;6618:30;:::i;:::-;6521:133;;;;:::o;6660:613::-;6734:6;6742;6750;6799:2;6787:9;6778:7;6774:23;6770:32;6767:119;;;6805:79;;:::i;:::-;6767:119;6925:1;6950:53;6995:7;6986:6;6975:9;6971:22;6950:53;:::i;:::-;6940:63;;6896:117;7052:2;7078:53;7123:7;7114:6;7103:9;7099:22;7078:53;:::i;:::-;7068:63;;7023:118;7180:2;7206:50;7248:7;7239:6;7228:9;7224:22;7206:50;:::i;:::-;7196:60;;7151:115;6660:613;;;;;:::o;7279:117::-;7388:1;7385;7378:12;7415:552;7472:8;7482:6;7532:3;7525:4;7517:6;7513:17;7509:27;7499:122;;7540:79;;:::i;:::-;7499:122;7653:6;7640:20;7630:30;;7683:18;7675:6;7672:30;7669:117;;;7705:79;;:::i;:::-;7669:117;7819:4;7811:6;7807:17;7795:29;;7873:3;7865:4;7857:6;7853:17;7843:8;7839:32;7836:41;7833:128;;;7880:79;;:::i;:::-;7833:128;7415:552;;;;;:::o;7973:527::-;8043:6;8051;8100:2;8088:9;8079:7;8075:23;8071:32;8068:119;;;8106:79;;:::i;:::-;8068:119;8254:1;8243:9;8239:17;8226:31;8284:18;8276:6;8273:30;8270:117;;;8306:79;;:::i;:::-;8270:117;8419:64;8475:7;8466:6;8455:9;8451:22;8419:64;:::i;:::-;8401:82;;;;8197:296;7973:527;;;;;:::o;8506:329::-;8565:6;8614:2;8602:9;8593:7;8589:23;8585:32;8582:119;;;8620:79;;:::i;:::-;8582:119;8740:1;8765:53;8810:7;8801:6;8790:9;8786:22;8765:53;:::i;:::-;8755:63;;8711:117;8506:329;;;;:::o;8841:118::-;8878:7;8918:34;8911:5;8907:46;8896:57;;8841:118;;;:::o;8965:122::-;9038:24;9056:5;9038:24;:::i;:::-;9031:5;9028:35;9018:63;;9077:1;9074;9067:12;9018:63;8965:122;:::o;9093:139::-;9139:5;9177:6;9164:20;9155:29;;9193:33;9220:5;9193:33;:::i;:::-;9093:139;;;;:::o;9238:474::-;9306:6;9314;9363:2;9351:9;9342:7;9338:23;9334:32;9331:119;;;9369:79;;:::i;:::-;9331:119;9489:1;9514:53;9559:7;9550:6;9539:9;9535:22;9514:53;:::i;:::-;9504:63;;9460:117;9616:2;9642:53;9687:7;9678:6;9667:9;9663:22;9642:53;:::i;:::-;9632:63;;9587:118;9238:474;;;;;:::o;9718:180::-;9766:77;9763:1;9756:88;9863:4;9860:1;9853:15;9887:4;9884:1;9877:15;9904:169;9988:11;10022:6;10017:3;10010:19;10062:4;10057:3;10053:14;10038:29;;9904:169;;;;:::o;10079:172::-;10219:24;10215:1;10207:6;10203:14;10196:48;10079:172;:::o;10257:366::-;10399:3;10420:67;10484:2;10479:3;10420:67;:::i;:::-;10413:74;;10496:93;10585:3;10496:93;:::i;:::-;10614:2;10609:3;10605:12;10598:19;;10257:366;;;:::o;10629:419::-;10795:4;10833:2;10822:9;10818:18;10810:26;;10882:9;10876:4;10872:20;10868:1;10857:9;10853:17;10846:47;10910:131;11036:4;10910:131;:::i;:::-;10902:139;;10629:419;;;:::o;11054:118::-;11141:24;11159:5;11141:24;:::i;:::-;11136:3;11129:37;11054:118;;:::o;11178:109::-;11259:21;11274:5;11259:21;:::i;:::-;11254:3;11247:34;11178:109;;:::o;11293:430::-;11436:4;11474:2;11463:9;11459:18;11451:26;;11487:71;11555:1;11544:9;11540:17;11531:6;11487:71;:::i;:::-;11568:72;11636:2;11625:9;11621:18;11612:6;11568:72;:::i;:::-;11650:66;11712:2;11701:9;11697:18;11688:6;11650:66;:::i;:::-;11293:430;;;;;;:::o;11729:96::-;11787:6;11815:3;11805:13;;11729:96;;;;:::o;11831:180::-;11879:77;11876:1;11869:88;11976:4;11973:1;11966:15;12000:4;11997:1;11990:15;12017:320;12061:6;12098:1;12092:4;12088:12;12078:22;;12145:1;12139:4;12135:12;12166:18;12156:81;;12222:4;12214:6;12210:17;12200:27;;12156:81;12284:2;12276:6;12273:14;12253:18;12250:38;12247:84;;12303:18;;:::i;:::-;12247:84;12068:269;12017:320;;;:::o;12343:140::-;12391:4;12414:3;12406:11;;12437:3;12434:1;12427:14;12471:4;12468:1;12458:18;12450:26;;12343:140;;;:::o;12489:93::-;12526:6;12573:2;12568;12561:5;12557:14;12553:23;12543:33;;12489:93;;;:::o;12588:107::-;12632:8;12682:5;12676:4;12672:16;12651:37;;12588:107;;;;:::o;12701:393::-;12770:6;12820:1;12808:10;12804:18;12843:97;12873:66;12862:9;12843:97;:::i;:::-;12961:39;12991:8;12980:9;12961:39;:::i;:::-;12949:51;;13033:4;13029:9;13022:5;13018:21;13009:30;;13082:4;13072:8;13068:19;13061:5;13058:30;13048:40;;12777:317;;12701:393;;;;;:::o;13100:77::-;13137:7;13166:5;13155:16;;13100:77;;;:::o;13183:60::-;13211:3;13232:5;13225:12;;13183:60;;;:::o;13249:142::-;13299:9;13332:53;13350:34;13359:24;13377:5;13359:24;:::i;:::-;13350:34;:::i;:::-;13332:53;:::i;:::-;13319:66;;13249:142;;;:::o;13397:75::-;13440:3;13461:5;13454:12;;13397:75;;;:::o;13478:269::-;13588:39;13619:7;13588:39;:::i;:::-;13649:91;13698:41;13722:16;13698:41;:::i;:::-;13690:6;13683:4;13677:11;13649:91;:::i;:::-;13643:4;13636:105;13554:193;13478:269;;;:::o;13753:73::-;13798:3;13753:73;:::o;13832:189::-;13909:32;;:::i;:::-;13950:65;14008:6;14000;13994:4;13950:65;:::i;:::-;13885:136;13832:189;;:::o;14027:186::-;14087:120;14104:3;14097:5;14094:14;14087:120;;;14158:39;14195:1;14188:5;14158:39;:::i;:::-;14131:1;14124:5;14120:13;14111:22;;14087:120;;;14027:186;;:::o;14219:541::-;14319:2;14314:3;14311:11;14308:445;;;14353:37;14384:5;14353:37;:::i;:::-;14436:29;14454:10;14436:29;:::i;:::-;14426:8;14422:44;14619:2;14607:10;14604:18;14601:49;;;14640:8;14625:23;;14601:49;14663:80;14719:22;14737:3;14719:22;:::i;:::-;14709:8;14705:37;14692:11;14663:80;:::i;:::-;14323:430;;14308:445;14219:541;;;:::o;14766:117::-;14820:8;14870:5;14864:4;14860:16;14839:37;;14766:117;;;;:::o;14889:169::-;14933:6;14966:51;15014:1;15010:6;15002:5;14999:1;14995:13;14966:51;:::i;:::-;14962:56;15047:4;15041;15037:15;15027:25;;14940:118;14889:169;;;;:::o;15063:295::-;15139:4;15285:29;15310:3;15304:4;15285:29;:::i;:::-;15277:37;;15347:3;15344:1;15340:11;15334:4;15331:21;15323:29;;15063:295;;;;:::o;15363:1398::-;15485:43;15524:3;15519;15485:43;:::i;:::-;15593:18;15585:6;15582:30;15579:56;;;15615:18;;:::i;:::-;15579:56;15659:38;15691:4;15685:11;15659:38;:::i;:::-;15744:66;15803:6;15795;15789:4;15744:66;:::i;:::-;15837:1;15866:2;15858:6;15855:14;15883:1;15878:631;;;;16553:1;16570:6;16567:84;;;16626:9;16621:3;16617:19;16604:33;16595:42;;16567:84;16677:67;16737:6;16730:5;16677:67;:::i;:::-;16671:4;16664:81;16526:229;15848:907;;15878:631;15930:4;15926:9;15918:6;15914:22;15964:36;15995:4;15964:36;:::i;:::-;16022:1;16036:215;16050:7;16047:1;16044:14;16036:215;;;16136:9;16131:3;16127:19;16114:33;16106:6;16099:49;16187:1;16179:6;16175:14;16165:24;;16234:2;16223:9;16219:18;16206:31;;16073:4;16070:1;16066:12;16061:17;;16036:215;;;16279:6;16270:7;16267:19;16264:186;;;16344:9;16339:3;16335:19;16322:33;16387:48;16429:4;16421:6;16417:17;16406:9;16387:48;:::i;:::-;16379:6;16372:64;16287:163;16264:186;16496:1;16492;16484:6;16480:14;16476:22;16470:4;16463:36;15885:624;;;15848:907;;15460:1301;;;15363:1398;;;:::o;16767:168::-;16850:11;16884:6;16879:3;16872:19;16924:4;16919:3;16915:14;16900:29;;16767:168;;;;:::o;16941:146::-;17038:6;17033:3;17028;17015:30;17079:1;17070:6;17065:3;17061:16;17054:27;16941:146;;;:::o;17115:314::-;17211:3;17232:70;17295:6;17290:3;17232:70;:::i;:::-;17225:77;;17312:56;17361:6;17356:3;17349:5;17312:56;:::i;:::-;17393:29;17415:6;17393:29;:::i;:::-;17388:3;17384:39;17377:46;;17115:314;;;;;:::o;17435:329::-;17556:4;17594:2;17583:9;17579:18;17571:26;;17643:9;17637:4;17633:20;17629:1;17618:9;17614:17;17607:47;17671:86;17752:4;17743:6;17735;17671:86;:::i;:::-;17663:94;;17435:329;;;;;:::o;17770:225::-;17910:34;17906:1;17898:6;17894:14;17887:58;17979:8;17974:2;17966:6;17962:15;17955:33;17770:225;:::o;18001:366::-;18143:3;18164:67;18228:2;18223:3;18164:67;:::i;:::-;18157:74;;18240:93;18329:3;18240:93;:::i;:::-;18358:2;18353:3;18349:12;18342:19;;18001:366;;;:::o;18373:419::-;18539:4;18577:2;18566:9;18562:18;18554:26;;18626:9;18620:4;18616:20;18612:1;18601:9;18597:17;18590:47;18654:131;18780:4;18654:131;:::i;:::-;18646:139;;18373:419;;;:::o;18798:118::-;18885:24;18903:5;18885:24;:::i;:::-;18880:3;18873:37;18798:118;;:::o;18922:332::-;19043:4;19081:2;19070:9;19066:18;19058:26;;19094:71;19162:1;19151:9;19147:17;19138:6;19094:71;:::i;:::-;19175:72;19243:2;19232:9;19228:18;19219:6;19175:72;:::i;:::-;18922:332;;;;;:::o;19260:182::-;19400:34;19396:1;19388:6;19384:14;19377:58;19260:182;:::o;19448:366::-;19590:3;19611:67;19675:2;19670:3;19611:67;:::i;:::-;19604:74;;19687:93;19776:3;19687:93;:::i;:::-;19805:2;19800:3;19796:12;19789:19;;19448:366;;;:::o;19820:419::-;19986:4;20024:2;20013:9;20009:18;20001:26;;20073:9;20067:4;20063:20;20059:1;20048:9;20044:17;20037:47;20101:131;20227:4;20101:131;:::i;:::-;20093:139;;19820:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"992200","executionCost":"1034","totalCost":"993234"},"external":{"owner()":"2589","renounceOwnership()":"30421","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"infinite","settingManagerBool(bytes32,address,bool)":"infinite","transferOwnership(address)":"30788","updateProtocolAddresses(bytes32,address)":"51552","updateProtocolAggregator(bytes)":"infinite","updateProtocolFees(uint128,uint128)":"infinite"}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","setSupportedInstitutions(bytes32,(bytes32,bytes32)[])":"32200882","settingManagerBool(bytes32,address,bool)":"99e3c0b4","transferOwnership(address)":"f2fde38b","updateProtocolAddresses(bytes32,address)":"79a0effb","updateProtocolAggregator(bytes)":"cb79455b","updateProtocolFees(uint128,uint128)":"f5326b19"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"protocolFee\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"validatorFeePercent\",\"type\":\"uint128\"}],\"name\":\"PaycrestFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"SetAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"SetFeeRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"SettingManagerBool\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"currency\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"code\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct PaycrestSettingManager.Institution[]\",\"name\":\"institutions\",\"type\":\"tuple[]\"}],\"name\":\"setSupportedInstitutions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"settingManagerBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"what\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"updateProtocolAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"aggregator\",\"type\":\"bytes\"}],\"name\":\"updateProtocolAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_protocolFeePercent\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_validatorFeePercent\",\"type\":\"uint128\"}],\"name\":\"updateProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PaycrestSettingManager.sol\":\"PaycrestSettingManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"contracts/PaycrestSettingManager.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\nimport \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\n\\ncontract PaycrestSettingManager is OwnableUpgradeable { \\n struct Institution {\\n bytes32 code; // usually not more than 8 letters\\n bytes32 name; // \\n }\\n struct InstitutionByCode {\\n bytes32 name;\\n bytes32 currency;\\n }\\n uint256 internal MAX_BPS;\\n uint128 internal protocolFeePercent; // 5%\\n uint128 internal validatorFeePercent; // 0.5%\\n address internal feeRecipient;\\n address internal _aggregatorAddress;\\n bytes internal _aggregator;\\n \\n // this should decrease if more slots are needed on this contract to avoid collisions with base contract\\n uint256[50] private __gap;\\n\\n mapping(address => bool) internal _isTokenSupported;\\n mapping(address => bool) internal _isWhitelisted;\\n\\n mapping(bytes32 => Institution[]) internal supportedInstitutions;\\n mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode;\\n\\n event SettingManagerBool(bytes32 what, address value, bool status);\\n event PaycrestFees(uint128 protocolFee, uint128 validatorFeePercent);\\n event SetAggregator(bytes aggregator);\\n event SetFeeRecipient(address feeRecipient);\\n\\n \\n /* ##################################################################\\n OWNER FUNCTIONS\\n ################################################################## */\\n function settingManagerBool(bytes32 what, address value, bool status) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"token\\\") _isTokenSupported[value] = status;\\n if (what == \\\"whitelist\\\") _isWhitelisted[value] = status;\\n\\n emit SettingManagerBool(what, value, status);\\n }\\n\\n function setSupportedInstitutions(bytes32 currency, Institution[] memory institutions) external onlyOwner { \\n uint256 length = institutions.length;\\n for (uint i = 0; i < length; ) {\\n supportedInstitutions[currency].push(institutions[i]);\\n supportedInstitutionsByCode[institutions[i].code] = InstitutionByCode({\\n name: institutions[i].name, currency: currency\\n });\\n unchecked {\\n i++;\\n }\\n }\\n }\\n\\n function updateProtocolFees(uint128 _protocolFeePercent, uint128 _validatorFeePercent) external onlyOwner {\\n protocolFeePercent = _protocolFeePercent;\\n validatorFeePercent = _validatorFeePercent;\\n emit PaycrestFees(_protocolFeePercent, _validatorFeePercent);\\n }\\n\\n function updateProtocolAddresses(bytes32 what, address value) external onlyOwner {\\n require(value != address(0), \\\"Paycrest: zero address\\\");\\n if (what == \\\"fee\\\") feeRecipient = value;\\n if (what == \\\"aggregator\\\") _aggregatorAddress = value;\\n }\\n\\n function updateProtocolAggregator(bytes calldata aggregator) external onlyOwner {\\n _aggregator = aggregator;\\n emit SetAggregator(aggregator);\\n }\\n\\n}\\n\",\"keccak256\":\"0x6524d2af2d5e14c160ce5f57f202d38f3112e87d427bbc9ddf06dd5ada4c7497\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":138,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":141,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1161,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":10,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":130,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":3616,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"MAX_BPS","offset":0,"slot":"101","type":"t_uint256"},{"astId":3618,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"protocolFeePercent","offset":0,"slot":"102","type":"t_uint128"},{"astId":3620,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"validatorFeePercent","offset":16,"slot":"102","type":"t_uint128"},{"astId":3622,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"feeRecipient","offset":0,"slot":"103","type":"t_address"},{"astId":3624,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_aggregatorAddress","offset":0,"slot":"104","type":"t_address"},{"astId":3626,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_aggregator","offset":0,"slot":"105","type":"t_bytes_storage"},{"astId":3630,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"__gap","offset":0,"slot":"106","type":"t_array(t_uint256)50_storage"},{"astId":3634,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_isTokenSupported","offset":0,"slot":"156","type":"t_mapping(t_address,t_bool)"},{"astId":3638,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"_isWhitelisted","offset":0,"slot":"157","type":"t_mapping(t_address,t_bool)"},{"astId":3644,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"supportedInstitutions","offset":0,"slot":"158","type":"t_mapping(t_bytes32,t_array(t_struct(Institution)3609_storage)dyn_storage)"},{"astId":3649,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"supportedInstitutionsByCode","offset":0,"slot":"159","type":"t_mapping(t_bytes32,t_struct(InstitutionByCode)3614_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Institution)3609_storage)dyn_storage":{"base":"t_struct(Institution)3609_storage","encoding":"dynamic_array","label":"struct PaycrestSettingManager.Institution[]","numberOfBytes":"32"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_array(t_struct(Institution)3609_storage)dyn_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.Institution[])","numberOfBytes":"32","value":"t_array(t_struct(Institution)3609_storage)dyn_storage"},"t_mapping(t_bytes32,t_struct(InstitutionByCode)3614_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct PaycrestSettingManager.InstitutionByCode)","numberOfBytes":"32","value":"t_struct(InstitutionByCode)3614_storage"},"t_struct(Institution)3609_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.Institution","members":[{"astId":3606,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"code","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3608,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"name","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_struct(InstitutionByCode)3614_storage":{"encoding":"inplace","label":"struct PaycrestSettingManager.InstitutionByCode","members":[{"astId":3611,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"name","offset":0,"slot":"0","type":"t_bytes32"},{"astId":3613,"contract":"contracts/PaycrestSettingManager.sol:PaycrestSettingManager","label":"currency","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interface/IPaycrest.sol":{"IPaycrest":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"institutionCode","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"string","name":"messageHash","type":"string"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"validator","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardValidator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"uint96","name":"settlePercent","type":"uint96"}],"name":"Settled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSenderFee","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_institutionCode","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"uint96","name":"_rate","type":"uint96"},{"internalType":"address","name":"_senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"_senderFee","type":"uint256"},{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"string","name":"messageHash","type":"string"}],"name":"createOrder","outputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAggregator","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint128","name":"protocolReward","type":"uint128"},{"internalType":"uint128","name":"validatorFeePercent","type":"uint128"},{"internalType":"uint256","name":"max_bps","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"}],"name":"getOrderInfo","outputs":[{"components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"senderFeeRecipient","type":"address"},{"internalType":"uint256","name":"senderFee","type":"uint256"},{"internalType":"uint96","name":"rate","type":"uint96"},{"internalType":"bool","name":"isFulfilled","type":"bool"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint96","name":"currentBPS","type":"uint96"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPaycrest.Order","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"}],"name":"refund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_splitOrderId","type":"bytes32"},{"internalType":"bytes32","name":"_orderId","type":"bytes32"},{"internalType":"bytes32","name":"_label","type":"bytes32"},{"internalType":"address[]","name":"_validators","type":"address[]"},{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint64","name":"_settlePercent","type":"uint64"},{"internalType":"bool","name":"_isPartner","type":"bool"}],"name":"settle","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Chef Photons, Paycrest Team serving high quality drinks; drink responsibly. Factory and global config params","events":{"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)":{"details":"Emitted when deposit is made."},"Refunded(bytes32,bytes32)":{"details":"Emitted when aggregator refund transaction."},"RewardValidator(address,uint256)":{"details":"Emitted when primary validator get therir rewards."},"Settled(bytes32,bytes32,bytes32,address,uint96)":{"details":"Emitted when aggregator settle transaction."},"TransferSenderFee(address,uint256)":{"details":"Emitted when sender get therir rewards."}},"kind":"dev","methods":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"details":"See {isTokenSupported}. `amount` must be greater than minimum `_refundable` refundable address must not be zero address","params":{"_amount":"amount in the decimal of `_token` above.","_institutionCode":"institution code of the sender.","_label":"reference of the sender.","_rate":"rate at which sender intended to sell `_amount` of `_token`.","_refundAddress":"address that is going to recieve `_amount` in `_token` when there is a need to refund.","_senderFee":"amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.","_senderFeeRecipient":"address that is going to recieve `_senderFee` in `_token` when there is a need to refund.","_token":"address of the token.","messageHash":"hash must be the result of a hash operation for the verification to be secure. message"},"returns":{"_orderId":"the bytes20 which is the orderId"}},"getAggregator()":{"returns":{"_0":"aggregator public key."}},"getAggregatorAddress()":{"returns":{"_0":"address of `Aggregator`."}},"getFeeDetails()":{"returns":{"max_bps":"maximum amount in bps \"100% == 100_000\".","protocolReward":"amount that will be taken in percentage on all trade.","validatorFeePercent":"amount that will be given to primary validator in percentage from `protocolReward`"}},"getOrderInfo(bytes32)":{"params":{"_orderId":"transaction Id."}},"getWhitelistedStatus(address)":{"params":{"sender":"address of the sender."},"returns":{"_0":"address of `status`."}},"isTokenSupported(address)":{"params":{"_token":"address of the token to check."},"returns":{"_0":"return the status of `_token` {bool}"}},"refund(bytes32,bytes32)":{"params":{"_label":"reference of the sender.","_orderId":"transaction Id."},"returns":{"_0":"return the status of transaction {bool}"}},"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":{"params":{"_isPartner":"is the liquidity provider a partner.","_label":"reference of the sender.","_liquidityProvider":"address of the liquidity provider.","_orderId":"transaction Id.","_settlePercent":"rate at which the transaction is settled.","_validators":"arrays of secondary validators."},"returns":{"_0":"return the status of transaction {bool}"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":"2654ec7e","getAggregator()":"3ad59dbc","getAggregatorAddress()":"e8d6e0de","getFeeDetails()":"b810c636","getOrderInfo(bytes32)":"768c6ec0","getWhitelistedStatus(address)":"d8e8de34","isTokenSupported(address)":"75151b63","refund(bytes32,bytes32)":"e4683a79","settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":"137764fb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"institutionCode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"Refunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardValidator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"settlePercent\",\"type\":\"uint96\"}],\"name\":\"Settled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSenderFee\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_institutionCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"_rate\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"_senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_senderFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"messageHash\",\"type\":\"string\"}],\"name\":\"createOrder\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"protocolReward\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"validatorFeePercent\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"max_bps\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"}],\"name\":\"getOrderInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"senderFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"rate\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"isFulfilled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"currentBPS\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaycrest.Order\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getWhitelistedStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"}],\"name\":\"refund\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_splitOrderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_orderId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_label\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_liquidityProvider\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_settlePercent\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isPartner\",\"type\":\"bool\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Chef Photons, Paycrest Team serving high quality drinks; drink responsibly. Factory and global config params\",\"events\":{\"Deposit(address,uint256,bytes32,uint256,bytes32,bytes32,string)\":{\"details\":\"Emitted when deposit is made.\"},\"Refunded(bytes32,bytes32)\":{\"details\":\"Emitted when aggregator refund transaction.\"},\"RewardValidator(address,uint256)\":{\"details\":\"Emitted when primary validator get therir rewards.\"},\"Settled(bytes32,bytes32,bytes32,address,uint96)\":{\"details\":\"Emitted when aggregator settle transaction.\"},\"TransferSenderFee(address,uint256)\":{\"details\":\"Emitted when sender get therir rewards.\"}},\"kind\":\"dev\",\"methods\":{\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"details\":\"See {isTokenSupported}. `amount` must be greater than minimum `_refundable` refundable address must not be zero address\",\"params\":{\"_amount\":\"amount in the decimal of `_token` above.\",\"_institutionCode\":\"institution code of the sender.\",\"_label\":\"reference of the sender.\",\"_rate\":\"rate at which sender intended to sell `_amount` of `_token`.\",\"_refundAddress\":\"address that is going to recieve `_amount` in `_token` when there is a need to refund.\",\"_senderFee\":\"amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\",\"_senderFeeRecipient\":\"address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\",\"_token\":\"address of the token.\",\"messageHash\":\"hash must be the result of a hash operation for the verification to be secure. message\"},\"returns\":{\"_orderId\":\"the bytes20 which is the orderId\"}},\"getAggregator()\":{\"returns\":{\"_0\":\"aggregator public key.\"}},\"getAggregatorAddress()\":{\"returns\":{\"_0\":\"address of `Aggregator`.\"}},\"getFeeDetails()\":{\"returns\":{\"max_bps\":\"maximum amount in bps \\\"100% == 100_000\\\".\",\"protocolReward\":\"amount that will be taken in percentage on all trade.\",\"validatorFeePercent\":\"amount that will be given to primary validator in percentage from `protocolReward`\"}},\"getOrderInfo(bytes32)\":{\"params\":{\"_orderId\":\"transaction Id.\"}},\"getWhitelistedStatus(address)\":{\"params\":{\"sender\":\"address of the sender.\"},\"returns\":{\"_0\":\"address of `status`.\"}},\"isTokenSupported(address)\":{\"params\":{\"_token\":\"address of the token to check.\"},\"returns\":{\"_0\":\"return the status of `_token` {bool}\"}},\"refund(bytes32,bytes32)\":{\"params\":{\"_label\":\"reference of the sender.\",\"_orderId\":\"transaction Id.\"},\"returns\":{\"_0\":\"return the status of transaction {bool}\"}},\"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)\":{\"params\":{\"_isPartner\":\"is the liquidity provider a partner.\",\"_label\":\"reference of the sender.\",\"_liquidityProvider\":\"address of the liquidity provider.\",\"_orderId\":\"transaction Id.\",\"_settlePercent\":\"rate at which the transaction is settled.\",\"_validators\":\"arrays of secondary validators.\"},\"returns\":{\"_0\":\"return the status of transaction {bool}\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)\":{\"notice\":\"lock sender `_amount` of `token` into Paycrest. Requirements: `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\"},\"getAggregator()\":{\"notice\":\"get aggregator public key.\"},\"getAggregatorAddress()\":{\"notice\":\"get address of liquidity aggregator.\"},\"getFeeDetails()\":{\"notice\":\"get every rewards and address on Paycrest.\"},\"getOrderInfo(bytes32)\":{\"notice\":\"get order details.\"},\"getWhitelistedStatus(address)\":{\"notice\":\"get address of sender whitelisting status.\"},\"isTokenSupported(address)\":{\"notice\":\"get supported token from Paycrest.\"},\"refund(bytes32,bytes32)\":{\"notice\":\"refund to the specified refundable address. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `isFulfilled` must be false.\"},\"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)\":{\"notice\":\"settle transaction and distribute rewards accordingly. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `_primaryValidator` must have stake on the Paycrest staking platform. `_secondaryValidators` must have stake on the Paycrest staking platform. `amount` must be greater than minimum `_refundable` refundable address must not be zero address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interface/IPaycrest.sol\":\"IPaycrest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"contracts/interface/IPaycrest.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n/**\\n * @author Chef Photons, Paycrest Team serving high quality drinks; drink responsibly.\\n * Factory and global config params\\n */\\ninterface IPaycrest {\\n \\n /* ##################################################################\\n EVENTS\\n ################################################################## */\\n /// @dev Emitted when deposit is made.\\n event Deposit(address indexed token, uint256 indexed amount, bytes32 indexed orderId, uint256 rate, bytes32 institutionCode, bytes32 label, string messageHash);\\n /// @dev Emitted when aggregator settle transaction.\\n event Settled(bytes32 _splitOrderId, bytes32 indexed orderId, bytes32 label, address indexed liquidityProvider, uint96 settlePercent);\\n /// @dev Emitted when aggregator refund transaction.\\n event Refunded(bytes32 indexed orderId, bytes32 label);\\n /// @dev Emitted when sender get therir rewards.\\n event TransferSenderFee(address indexed sender, uint256 indexed amount);\\n /// @dev Emitted when primary validator get therir rewards.\\n event RewardValidator(address indexed validator, uint256 indexed amount);\\n\\n /* ##################################################################\\n STRUCTS\\n ################################################################## */\\n struct TransactionMetadata {\\n bytes8 identifier; // slot 0\\n bytes8 institution; // slot 0\\n bytes8 name; // slot 0\\n bytes8 currency; // slot 0\\n uint256 liquidityProviderID; // slot 1\\n }\\n\\n struct Order {\\n address seller; // slot 0\\n address token; // slot 1\\n address senderFeeRecipient;\\n uint256 senderFee;\\n uint96 rate; // slot 1\\n bool isFulfilled; // slot 2 {11 bytes available}\\n address refundAddress; // slot 2 {12 bytes available}\\n uint96 currentBPS; // slot 2 {}\\n uint256 amount; // slot 3\\n }\\n\\n\\n /* ##################################################################\\n EXTERNAL CALLS\\n ################################################################## */\\n /// @notice lock sender `_amount` of `token` into Paycrest.\\n /// Requirements:\\n /// `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call.\\n /// `_token` must be an acceptable token. @dev See {isTokenSupported}.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _token address of the token.\\n /// @param _amount amount in the decimal of `_token` above.\\n /// @param _institutionCode institution code of the sender.\\n /// @param _label reference of the sender.\\n /// @param _rate rate at which sender intended to sell `_amount` of `_token`.\\n /// @param _senderFeeRecipient address that is going to recieve `_senderFee` in `_token` when there is a need to refund.\\n /// @param _senderFee amount in the decimal of `_token` that is going to be paid to `_senderFeeRecipient` when there is a need to refund.\\n /// @param _refundAddress address that is going to recieve `_amount` in `_token` when there is a need to refund.\\n /// @param messageHash hash must be the result of a hash operation for the verification to be secure. message\\n /// @return _orderId the bytes20 which is the orderId\\n function createOrder(\\n address _token, \\n uint256 _amount, \\n bytes32 _institutionCode,\\n bytes32 _label,\\n uint96 _rate, \\n address _senderFeeRecipient,\\n uint256 _senderFee,\\n address _refundAddress, \\n string calldata messageHash) external returns(bytes32 _orderId);\\n\\n /// @notice settle transaction and distribute rewards accordingly.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `_primaryValidator` must have stake on the Paycrest staking platform.\\n /// `_secondaryValidators` must have stake on the Paycrest staking platform.\\n /// `amount` must be greater than minimum\\n /// `_refundable` refundable address must not be zero address\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @param _validators arrays of secondary validators.\\n /// @param _liquidityProvider address of the liquidity provider.\\n /// @param _settlePercent rate at which the transaction is settled.\\n /// @param _isPartner is the liquidity provider a partner.\\n /// @return return the status of transaction {bool}\\n function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address);\\n\\n /// @notice refund to the specified refundable address.\\n /// Requirements:\\n /// {only aggregators call}.\\n /// `_orderId` it must be less than total ids.\\n /// `_orderId` it must be an open Id.\\n /// `isFulfilled` must be false.\\n /// @param _orderId transaction Id.\\n /// @param _label reference of the sender.\\n /// @return return the status of transaction {bool}\\n function refund(bytes32 _orderId, bytes32 _label) external returns(bool);\\n\\n /// @notice get supported token from Paycrest.\\n /// @param _token address of the token to check.\\n /// @return return the status of `_token` {bool}\\n function isTokenSupported(address _token) external view returns(bool);\\n\\n /// @notice get order details.\\n /// @param _orderId transaction Id.\\n function getOrderInfo(bytes32 _orderId) external view returns(Order memory);\\n\\n /// @notice get every rewards and address on Paycrest.\\n /// @return protocolReward amount that will be taken in percentage on all trade.\\n /// @return validatorFeePercent amount that will be given to primary validator in percentage from `protocolReward`\\n /// @return max_bps maximum amount in bps \\\"100% == 100_000\\\".\\n function getFeeDetails() external view returns(\\n uint128 protocolReward, \\n uint128 validatorFeePercent, \\n uint256 max_bps\\n );\\n\\n /// @notice get address of liquidity aggregator.\\n /// @return address of `Aggregator`.\\n function getAggregatorAddress() external view returns(address);\\n\\n /// @notice get aggregator public key.\\n /// @return aggregator public key.\\n function getAggregator() external view returns(bytes memory);\\n \\n /// @notice get address of sender whitelisting status.\\n /// @param sender address of the sender.\\n /// @return address of `status`.\\n function getWhitelistedStatus(address sender) external view returns(bool);\\n\\n}\\n\",\"keccak256\":\"0x7c0459f29e4b1c266f59dcf90bb14443345d43da8579b4cc189bdfdd7237dd58\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"createOrder(address,uint256,bytes32,bytes32,uint96,address,uint256,address,string)":{"notice":"lock sender `_amount` of `token` into Paycrest. Requirements: `msg.sender` must approve Paycrest contract on `_token` of at least `amount` before function call."},"getAggregator()":{"notice":"get aggregator public key."},"getAggregatorAddress()":{"notice":"get address of liquidity aggregator."},"getFeeDetails()":{"notice":"get every rewards and address on Paycrest."},"getOrderInfo(bytes32)":{"notice":"get order details."},"getWhitelistedStatus(address)":{"notice":"get address of sender whitelisting status."},"isTokenSupported(address)":{"notice":"get supported token from Paycrest."},"refund(bytes32,bytes32)":{"notice":"refund to the specified refundable address. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `isFulfilled` must be false."},"settle(bytes32,bytes32,bytes32,address[],address,uint64,bool)":{"notice":"settle transaction and distribute rewards accordingly. Requirements: {only aggregators call}. `_orderId` it must be less than total ids. `_orderId` it must be an open Id. `_primaryValidator` must have stake on the Paycrest staking platform. `_secondaryValidators` must have stake on the Paycrest staking platform. `amount` must be greater than minimum `_refundable` refundable address must not be zero address"}},"version":1}}}}}} \ No newline at end of file diff --git a/artifacts/build-info/db0d458556d1546ee8cdf3464fede1b0.json b/artifacts/build-info/db0d458556d1546ee8cdf3464fede1b0.json new file mode 100644 index 0000000..471a792 --- /dev/null +++ b/artifacts/build-info/db0d458556d1546ee8cdf3464fede1b0.json @@ -0,0 +1 @@ +{"id":"db0d458556d1546ee8cdf3464fede1b0","_format":"hh-sol-build-info-1","solcVersion":"0.8.18","solcLongVersion":"0.8.18+commit.87f61d96","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * The default value of {decimals} is 18. To select a different value for\n * {decimals} you should overload it.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless this function is\n * overridden;\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n // decrementing then incrementing.\n _balances[to] += amount;\n }\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n unchecked {\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n _balances[account] += amount;\n }\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n // Overflow not possible: amount <= accountBalance <= totalSupply.\n _totalSupply -= amount;\n }\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"contracts/mocks/MockUSDC.sol":{"content":"//SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.18;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n/// @dev Mock mintable USDC\ncontract MockUSDC is ERC20 {\n constructor() ERC20(\"MockUDSC\", \"MUSDC\") {\n _mint(msg.sender, 1_000_000E18);\n }\n\n function mint(uint256 _amount) external {\n _mint(msg.sender, _amount);\n }\n\n function burn(uint256 _amount) external {\n _burn(msg.sender, _amount);\n }\n\n function burnAll() external {\n uint256 _balanceOf = balanceOf(msg.sender);\n require(_balanceOf > 0, \"MockUSDC: Nothing to burn\");\n _burn(msg.sender, _balanceOf);\n }\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[711],"ERC20":[586],"IERC20":[664],"IERC20Metadata":[689]},"id":587,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:0"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":587,"sourceUnit":665,"src":"130:22:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":587,"sourceUnit":690,"src":"153:41:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":4,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":587,"sourceUnit":712,"src":"195:33:0","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6,"name":"Context","nameLocations":["1419:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":711,"src":"1419:7:0"},"id":7,"nodeType":"InheritanceSpecifier","src":"1419:7:0"},{"baseName":{"id":8,"name":"IERC20","nameLocations":["1428:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":664,"src":"1428:6:0"},"id":9,"nodeType":"InheritanceSpecifier","src":"1428:6:0"},{"baseName":{"id":10,"name":"IERC20Metadata","nameLocations":["1436:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":689,"src":"1436:14:0"},"id":11,"nodeType":"InheritanceSpecifier","src":"1436:14:0"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":5,"nodeType":"StructuredDocumentation","src":"230:1170:0","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":586,"linearizedBaseContracts":[586,689,664,711],"name":"ERC20","nameLocation":"1410:5:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":15,"mutability":"mutable","name":"_balances","nameLocation":"1493:9:0","nodeType":"VariableDeclaration","scope":586,"src":"1457:45:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":14,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12,"name":"address","nodeType":"ElementaryTypeName","src":"1465:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1457:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13,"name":"uint256","nodeType":"ElementaryTypeName","src":"1476:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":21,"mutability":"mutable","name":"_allowances","nameLocation":"1565:11:0","nodeType":"VariableDeclaration","scope":586,"src":"1509:67:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":20,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":16,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1509:47:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":19,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":17,"name":"address","nodeType":"ElementaryTypeName","src":"1536:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1528:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":18,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":23,"mutability":"mutable","name":"_totalSupply","nameLocation":"1599:12:0","nodeType":"VariableDeclaration","scope":586,"src":"1583:28:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"1583:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":25,"mutability":"mutable","name":"_name","nameLocation":"1633:5:0","nodeType":"VariableDeclaration","scope":586,"src":"1618:20:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":24,"name":"string","nodeType":"ElementaryTypeName","src":"1618:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":27,"mutability":"mutable","name":"_symbol","nameLocation":"1659:7:0","nodeType":"VariableDeclaration","scope":586,"src":"1644:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":26,"name":"string","nodeType":"ElementaryTypeName","src":"1644:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":43,"nodeType":"Block","src":"2032:57:0","statements":[{"expression":{"id":37,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"2042:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":36,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"2050:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2042:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":38,"nodeType":"ExpressionStatement","src":"2042:13:0"},{"expression":{"id":41,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":39,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"2065:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":40,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"2075:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2065:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":42,"nodeType":"ExpressionStatement","src":"2065:17:0"}]},"documentation":{"id":28,"nodeType":"StructuredDocumentation","src":"1673:298:0","text":" @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."},"id":44,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30,"mutability":"mutable","name":"name_","nameLocation":"2002:5:0","nodeType":"VariableDeclaration","scope":44,"src":"1988:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":29,"name":"string","nodeType":"ElementaryTypeName","src":"1988:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":32,"mutability":"mutable","name":"symbol_","nameLocation":"2023:7:0","nodeType":"VariableDeclaration","scope":44,"src":"2009:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1987:44:0"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"2032:0:0"},"scope":586,"src":"1976:113:0","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[676],"body":{"id":53,"nodeType":"Block","src":"2223:29:0","statements":[{"expression":{"id":51,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"2240:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":50,"id":52,"nodeType":"Return","src":"2233:12:0"}]},"documentation":{"id":45,"nodeType":"StructuredDocumentation","src":"2095:54:0","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":54,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2163:4:0","nodeType":"FunctionDefinition","overrides":{"id":47,"nodeType":"OverrideSpecifier","overrides":[],"src":"2190:8:0"},"parameters":{"id":46,"nodeType":"ParameterList","parameters":[],"src":"2167:2:0"},"returnParameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54,"src":"2208:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":48,"name":"string","nodeType":"ElementaryTypeName","src":"2208:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2207:15:0"},"scope":586,"src":"2154:98:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[682],"body":{"id":63,"nodeType":"Block","src":"2436:31:0","statements":[{"expression":{"id":61,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"2453:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":60,"id":62,"nodeType":"Return","src":"2446:14:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"2258:102:0","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":64,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2374:6:0","nodeType":"FunctionDefinition","overrides":{"id":57,"nodeType":"OverrideSpecifier","overrides":[],"src":"2403:8:0"},"parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"2380:2:0"},"returnParameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":64,"src":"2421:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":58,"name":"string","nodeType":"ElementaryTypeName","src":"2421:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2420:15:0"},"scope":586,"src":"2365:102:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[688],"body":{"id":73,"nodeType":"Block","src":"3156:26:0","statements":[{"expression":{"hexValue":"3138","id":71,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3173:2:0","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":70,"id":72,"nodeType":"Return","src":"3166:9:0"}]},"documentation":{"id":65,"nodeType":"StructuredDocumentation","src":"2473:613:0","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":74,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3100:8:0","nodeType":"FunctionDefinition","overrides":{"id":67,"nodeType":"OverrideSpecifier","overrides":[],"src":"3131:8:0"},"parameters":{"id":66,"nodeType":"ParameterList","parameters":[],"src":"3108:2:0"},"returnParameters":{"id":70,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74,"src":"3149:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":68,"name":"uint8","nodeType":"ElementaryTypeName","src":"3149:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3148:7:0"},"scope":586,"src":"3091:91:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[613],"body":{"id":83,"nodeType":"Block","src":"3312:36:0","statements":[{"expression":{"id":81,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23,"src":"3329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80,"id":82,"nodeType":"Return","src":"3322:19:0"}]},"documentation":{"id":75,"nodeType":"StructuredDocumentation","src":"3188:49:0","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":84,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3251:11:0","nodeType":"FunctionDefinition","overrides":{"id":77,"nodeType":"OverrideSpecifier","overrides":[],"src":"3285:8:0"},"parameters":{"id":76,"nodeType":"ParameterList","parameters":[],"src":"3262:2:0"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84,"src":"3303:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78,"name":"uint256","nodeType":"ElementaryTypeName","src":"3303:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3302:9:0"},"scope":586,"src":"3242:106:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[621],"body":{"id":97,"nodeType":"Block","src":"3489:42:0","statements":[{"expression":{"baseExpression":{"id":93,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3506:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":95,"indexExpression":{"id":94,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87,"src":"3516:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3506:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":92,"id":96,"nodeType":"Return","src":"3499:25:0"}]},"documentation":{"id":85,"nodeType":"StructuredDocumentation","src":"3354:47:0","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":98,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3415:9:0","nodeType":"FunctionDefinition","overrides":{"id":89,"nodeType":"OverrideSpecifier","overrides":[],"src":"3462:8:0"},"parameters":{"id":88,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87,"mutability":"mutable","name":"account","nameLocation":"3433:7:0","nodeType":"VariableDeclaration","scope":98,"src":"3425:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86,"name":"address","nodeType":"ElementaryTypeName","src":"3425:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3424:17:0"},"returnParameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":98,"src":"3480:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3479:9:0"},"scope":586,"src":"3406:125:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[631],"body":{"id":122,"nodeType":"Block","src":"3812:104:0","statements":[{"assignments":[110],"declarations":[{"constant":false,"id":110,"mutability":"mutable","name":"owner","nameLocation":"3830:5:0","nodeType":"VariableDeclaration","scope":122,"src":"3822:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109,"name":"address","nodeType":"ElementaryTypeName","src":"3822:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":113,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":111,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"3838:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3822:28:0"},{"expression":{"arguments":[{"id":115,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"3870:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":116,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"3877:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":117,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"3881:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":114,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"3860:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3860:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119,"nodeType":"ExpressionStatement","src":"3860:28:0"},{"expression":{"hexValue":"74727565","id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3905:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":108,"id":121,"nodeType":"Return","src":"3898:11:0"}]},"documentation":{"id":99,"nodeType":"StructuredDocumentation","src":"3537:185:0","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":123,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3736:8:0","nodeType":"FunctionDefinition","overrides":{"id":105,"nodeType":"OverrideSpecifier","overrides":[],"src":"3788:8:0"},"parameters":{"id":104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":101,"mutability":"mutable","name":"to","nameLocation":"3753:2:0","nodeType":"VariableDeclaration","scope":123,"src":"3745:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"3745:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":103,"mutability":"mutable","name":"amount","nameLocation":"3765:6:0","nodeType":"VariableDeclaration","scope":123,"src":"3757:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":102,"name":"uint256","nodeType":"ElementaryTypeName","src":"3757:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3744:28:0"},"returnParameters":{"id":108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":107,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":123,"src":"3806:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":106,"name":"bool","nodeType":"ElementaryTypeName","src":"3806:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3805:6:0"},"scope":586,"src":"3727:189:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[641],"body":{"id":140,"nodeType":"Block","src":"4072:51:0","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":134,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"4089:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":136,"indexExpression":{"id":135,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126,"src":"4101:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4089:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":138,"indexExpression":{"id":137,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":128,"src":"4108:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4089:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":133,"id":139,"nodeType":"Return","src":"4082:34:0"}]},"documentation":{"id":124,"nodeType":"StructuredDocumentation","src":"3922:47:0","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":141,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3983:9:0","nodeType":"FunctionDefinition","overrides":{"id":130,"nodeType":"OverrideSpecifier","overrides":[],"src":"4045:8:0"},"parameters":{"id":129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":126,"mutability":"mutable","name":"owner","nameLocation":"4001:5:0","nodeType":"VariableDeclaration","scope":141,"src":"3993:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":125,"name":"address","nodeType":"ElementaryTypeName","src":"3993:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":128,"mutability":"mutable","name":"spender","nameLocation":"4016:7:0","nodeType":"VariableDeclaration","scope":141,"src":"4008:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":127,"name":"address","nodeType":"ElementaryTypeName","src":"4008:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3992:32:0"},"returnParameters":{"id":133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":141,"src":"4063:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":131,"name":"uint256","nodeType":"ElementaryTypeName","src":"4063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4062:9:0"},"scope":586,"src":"3974:149:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[651],"body":{"id":165,"nodeType":"Block","src":"4520:108:0","statements":[{"assignments":[153],"declarations":[{"constant":false,"id":153,"mutability":"mutable","name":"owner","nameLocation":"4538:5:0","nodeType":"VariableDeclaration","scope":165,"src":"4530:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":152,"name":"address","nodeType":"ElementaryTypeName","src":"4530:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":156,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":154,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"4546:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4546:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4530:28:0"},{"expression":{"arguments":[{"id":158,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":153,"src":"4577:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":159,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":144,"src":"4584:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":160,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":146,"src":"4593:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":157,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"4568:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4568:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":162,"nodeType":"ExpressionStatement","src":"4568:32:0"},{"expression":{"hexValue":"74727565","id":163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4617:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":151,"id":164,"nodeType":"Return","src":"4610:11:0"}]},"documentation":{"id":142,"nodeType":"StructuredDocumentation","src":"4129:297:0","text":" @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":166,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4440:7:0","nodeType":"FunctionDefinition","overrides":{"id":148,"nodeType":"OverrideSpecifier","overrides":[],"src":"4496:8:0"},"parameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":144,"mutability":"mutable","name":"spender","nameLocation":"4456:7:0","nodeType":"VariableDeclaration","scope":166,"src":"4448:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":143,"name":"address","nodeType":"ElementaryTypeName","src":"4448:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":146,"mutability":"mutable","name":"amount","nameLocation":"4473:6:0","nodeType":"VariableDeclaration","scope":166,"src":"4465:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":145,"name":"uint256","nodeType":"ElementaryTypeName","src":"4465:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4447:33:0"},"returnParameters":{"id":151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":166,"src":"4514:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":149,"name":"bool","nodeType":"ElementaryTypeName","src":"4514:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4513:6:0"},"scope":586,"src":"4431:197:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[663],"body":{"id":198,"nodeType":"Block","src":"5323:153:0","statements":[{"assignments":[180],"declarations":[{"constant":false,"id":180,"mutability":"mutable","name":"spender","nameLocation":"5341:7:0","nodeType":"VariableDeclaration","scope":198,"src":"5333:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":179,"name":"address","nodeType":"ElementaryTypeName","src":"5333:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":183,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":181,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"5351:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5351:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5333:30:0"},{"expression":{"arguments":[{"id":185,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"5389:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":186,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"5395:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":187,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"5404:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":184,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"5373:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":189,"nodeType":"ExpressionStatement","src":"5373:38:0"},{"expression":{"arguments":[{"id":191,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"5431:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":192,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5437:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":193,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"5441:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":190,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"5421:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":195,"nodeType":"ExpressionStatement","src":"5421:27:0"},{"expression":{"hexValue":"74727565","id":196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5465:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":178,"id":197,"nodeType":"Return","src":"5458:11:0"}]},"documentation":{"id":167,"nodeType":"StructuredDocumentation","src":"4634:551:0","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":199,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5199:12:0","nodeType":"FunctionDefinition","overrides":{"id":175,"nodeType":"OverrideSpecifier","overrides":[],"src":"5299:8:0"},"parameters":{"id":174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":169,"mutability":"mutable","name":"from","nameLocation":"5229:4:0","nodeType":"VariableDeclaration","scope":199,"src":"5221:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":168,"name":"address","nodeType":"ElementaryTypeName","src":"5221:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":171,"mutability":"mutable","name":"to","nameLocation":"5251:2:0","nodeType":"VariableDeclaration","scope":199,"src":"5243:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"5243:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":173,"mutability":"mutable","name":"amount","nameLocation":"5271:6:0","nodeType":"VariableDeclaration","scope":199,"src":"5263:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":172,"name":"uint256","nodeType":"ElementaryTypeName","src":"5263:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5211:72:0"},"returnParameters":{"id":178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":199,"src":"5317:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":176,"name":"bool","nodeType":"ElementaryTypeName","src":"5317:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5316:6:0"},"scope":586,"src":"5190:286:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":227,"nodeType":"Block","src":"5965:140:0","statements":[{"assignments":[210],"declarations":[{"constant":false,"id":210,"mutability":"mutable","name":"owner","nameLocation":"5983:5:0","nodeType":"VariableDeclaration","scope":227,"src":"5975:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":209,"name":"address","nodeType":"ElementaryTypeName","src":"5975:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":213,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":211,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"5991:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5991:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5975:28:0"},{"expression":{"arguments":[{"id":215,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"6022:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":216,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"6029:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":218,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"6048:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":219,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"6055:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":217,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6038:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6038:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":221,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":204,"src":"6066:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6038:38:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":214,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"6013:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6013:64:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":224,"nodeType":"ExpressionStatement","src":"6013:64:0"},{"expression":{"hexValue":"74727565","id":225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6094:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":208,"id":226,"nodeType":"Return","src":"6087:11:0"}]},"documentation":{"id":200,"nodeType":"StructuredDocumentation","src":"5482:384:0","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":228,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nameLocation":"5880:17:0","nodeType":"FunctionDefinition","parameters":{"id":205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":202,"mutability":"mutable","name":"spender","nameLocation":"5906:7:0","nodeType":"VariableDeclaration","scope":228,"src":"5898:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":201,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":204,"mutability":"mutable","name":"addedValue","nameLocation":"5923:10:0","nodeType":"VariableDeclaration","scope":228,"src":"5915:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":203,"name":"uint256","nodeType":"ElementaryTypeName","src":"5915:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5897:37:0"},"returnParameters":{"id":208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":207,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":228,"src":"5959:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":206,"name":"bool","nodeType":"ElementaryTypeName","src":"5959:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5958:6:0"},"scope":586,"src":"5871:234:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":268,"nodeType":"Block","src":"6691:328:0","statements":[{"assignments":[239],"declarations":[{"constant":false,"id":239,"mutability":"mutable","name":"owner","nameLocation":"6709:5:0","nodeType":"VariableDeclaration","scope":268,"src":"6701:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":238,"name":"address","nodeType":"ElementaryTypeName","src":"6701:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":242,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":240,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"6717:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6717:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6701:28:0"},{"assignments":[244],"declarations":[{"constant":false,"id":244,"mutability":"mutable","name":"currentAllowance","nameLocation":"6747:16:0","nodeType":"VariableDeclaration","scope":268,"src":"6739:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":243,"name":"uint256","nodeType":"ElementaryTypeName","src":"6739:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":249,"initialValue":{"arguments":[{"id":246,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"6776:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":247,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"6783:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":245,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"6766:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6766:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6739:52:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":251,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"6809:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":252,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":233,"src":"6829:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6809:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6846:39:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""},"value":"ERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""}],"id":250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6801:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6801:85:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":256,"nodeType":"ExpressionStatement","src":"6801:85:0"},{"id":265,"nodeType":"UncheckedBlock","src":"6896:95:0","statements":[{"expression":{"arguments":[{"id":258,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"6929:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":259,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"6936:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":260,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"6945:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":261,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":233,"src":"6964:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6945:34:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":257,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"6920:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6920:60:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":264,"nodeType":"ExpressionStatement","src":"6920:60:0"}]},{"expression":{"hexValue":"74727565","id":266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7008:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":237,"id":267,"nodeType":"Return","src":"7001:11:0"}]},"documentation":{"id":229,"nodeType":"StructuredDocumentation","src":"6111:476:0","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":269,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nameLocation":"6601:17:0","nodeType":"FunctionDefinition","parameters":{"id":234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":231,"mutability":"mutable","name":"spender","nameLocation":"6627:7:0","nodeType":"VariableDeclaration","scope":269,"src":"6619:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":230,"name":"address","nodeType":"ElementaryTypeName","src":"6619:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":233,"mutability":"mutable","name":"subtractedValue","nameLocation":"6644:15:0","nodeType":"VariableDeclaration","scope":269,"src":"6636:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":232,"name":"uint256","nodeType":"ElementaryTypeName","src":"6636:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6618:42:0"},"returnParameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":269,"src":"6685:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":235,"name":"bool","nodeType":"ElementaryTypeName","src":"6685:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6684:6:0"},"scope":586,"src":"6592:427:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":345,"nodeType":"Block","src":"7581:710:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":280,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":272,"src":"7599:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7615:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7607:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":281,"name":"address","nodeType":"ElementaryTypeName","src":"7607:7:0","typeDescriptions":{}}},"id":284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7607:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7599:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7619:39:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""},"value":"ERC20: transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""}],"id":279,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7591:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7591:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":288,"nodeType":"ExpressionStatement","src":"7591:68:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":290,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"7677:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7691:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7683:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":291,"name":"address","nodeType":"ElementaryTypeName","src":"7683:7:0","typeDescriptions":{}}},"id":294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7683:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7677:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","id":296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7695:37:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""},"value":"ERC20: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""}],"id":289,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7669:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7669:64:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":298,"nodeType":"ExpressionStatement","src":"7669:64:0"},{"expression":{"arguments":[{"id":300,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":272,"src":"7765:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":301,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"7771:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":302,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":276,"src":"7775:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":299,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"7744:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7744:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":304,"nodeType":"ExpressionStatement","src":"7744:38:0"},{"assignments":[306],"declarations":[{"constant":false,"id":306,"mutability":"mutable","name":"fromBalance","nameLocation":"7801:11:0","nodeType":"VariableDeclaration","scope":345,"src":"7793:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":305,"name":"uint256","nodeType":"ElementaryTypeName","src":"7793:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":310,"initialValue":{"baseExpression":{"id":307,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"7815:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":309,"indexExpression":{"id":308,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":272,"src":"7825:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7815:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7793:37:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":312,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"7848:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":313,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":276,"src":"7863:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7848:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7871:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"id":311,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7840:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7840:72:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":317,"nodeType":"ExpressionStatement","src":"7840:72:0"},{"id":332,"nodeType":"UncheckedBlock","src":"7922:273:0","statements":[{"expression":{"id":324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":318,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"7946:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":320,"indexExpression":{"id":319,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":272,"src":"7956:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7946:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":321,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"7964:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":322,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":276,"src":"7978:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7964:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7946:38:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":325,"nodeType":"ExpressionStatement","src":"7946:38:0"},{"expression":{"id":330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":326,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"8161:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":328,"indexExpression":{"id":327,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"8171:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8161:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":329,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":276,"src":"8178:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8161:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":331,"nodeType":"ExpressionStatement","src":"8161:23:0"}]},{"eventCall":{"arguments":[{"id":334,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":272,"src":"8219:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":335,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"8225:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":336,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":276,"src":"8229:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":333,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"8210:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8210:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":338,"nodeType":"EmitStatement","src":"8205:31:0"},{"expression":{"arguments":[{"id":340,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":272,"src":"8267:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":341,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"8273:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":342,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":276,"src":"8277:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":339,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":585,"src":"8247:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8247:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":344,"nodeType":"ExpressionStatement","src":"8247:37:0"}]},"documentation":{"id":270,"nodeType":"StructuredDocumentation","src":"7025:443:0","text":" @dev Moves `amount` of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."},"id":346,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"7482:9:0","nodeType":"FunctionDefinition","parameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":272,"mutability":"mutable","name":"from","nameLocation":"7509:4:0","nodeType":"VariableDeclaration","scope":346,"src":"7501:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":271,"name":"address","nodeType":"ElementaryTypeName","src":"7501:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":274,"mutability":"mutable","name":"to","nameLocation":"7531:2:0","nodeType":"VariableDeclaration","scope":346,"src":"7523:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":273,"name":"address","nodeType":"ElementaryTypeName","src":"7523:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":276,"mutability":"mutable","name":"amount","nameLocation":"7551:6:0","nodeType":"VariableDeclaration","scope":346,"src":"7543:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":275,"name":"uint256","nodeType":"ElementaryTypeName","src":"7543:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7491:72:0"},"returnParameters":{"id":278,"nodeType":"ParameterList","parameters":[],"src":"7581:0:0"},"scope":586,"src":"7473:818:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":402,"nodeType":"Block","src":"8632:470:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":355,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"8650:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8669:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8661:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":356,"name":"address","nodeType":"ElementaryTypeName","src":"8661:7:0","typeDescriptions":{}}},"id":359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8661:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8650:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","id":361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8673:33:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""},"value":"ERC20: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""}],"id":354,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8642:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8642:65:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":363,"nodeType":"ExpressionStatement","src":"8642:65:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8747:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8739:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":365,"name":"address","nodeType":"ElementaryTypeName","src":"8739:7:0","typeDescriptions":{}}},"id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8739:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":369,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"8751:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":370,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"8760:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":364,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"8718:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8718:49:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":372,"nodeType":"ExpressionStatement","src":"8718:49:0"},{"expression":{"id":375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":373,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23,"src":"8778:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":374,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"8794:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8778:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":376,"nodeType":"ExpressionStatement","src":"8778:22:0"},{"id":383,"nodeType":"UncheckedBlock","src":"8810:175:0","statements":[{"expression":{"id":381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":377,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"8946:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":379,"indexExpression":{"id":378,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"8956:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8946:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":380,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"8968:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8946:28:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":382,"nodeType":"ExpressionStatement","src":"8946:28:0"}]},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9016:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9008:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"9008:7:0","typeDescriptions":{}}},"id":388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9008:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":389,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"9020:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":390,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"9029:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":384,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"8999:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8999:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":392,"nodeType":"EmitStatement","src":"8994:42:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9075:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9067:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"9067:7:0","typeDescriptions":{}}},"id":397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9067:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":398,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"9079:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":399,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"9088:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":393,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":585,"src":"9047:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9047:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":401,"nodeType":"ExpressionStatement","src":"9047:48:0"}]},"documentation":{"id":347,"nodeType":"StructuredDocumentation","src":"8297:265:0","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."},"id":403,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8576:5:0","nodeType":"FunctionDefinition","parameters":{"id":352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"mutability":"mutable","name":"account","nameLocation":"8590:7:0","nodeType":"VariableDeclaration","scope":403,"src":"8582:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":348,"name":"address","nodeType":"ElementaryTypeName","src":"8582:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":351,"mutability":"mutable","name":"amount","nameLocation":"8607:6:0","nodeType":"VariableDeclaration","scope":403,"src":"8599:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":350,"name":"uint256","nodeType":"ElementaryTypeName","src":"8599:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8581:33:0"},"returnParameters":{"id":353,"nodeType":"ParameterList","parameters":[],"src":"8632:0:0"},"scope":586,"src":"8567:535:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":474,"nodeType":"Block","src":"9487:594:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":412,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"9505:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9524:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9516:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":413,"name":"address","nodeType":"ElementaryTypeName","src":"9516:7:0","typeDescriptions":{}}},"id":416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9516:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9505:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9528:35:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""},"value":"ERC20: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""}],"id":411,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9497:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9497:67:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":420,"nodeType":"ExpressionStatement","src":"9497:67:0"},{"expression":{"arguments":[{"id":422,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"9596:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9613:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9605:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":423,"name":"address","nodeType":"ElementaryTypeName","src":"9605:7:0","typeDescriptions":{}}},"id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9605:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":427,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"9617:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":421,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"9575:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9575:49:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":429,"nodeType":"ExpressionStatement","src":"9575:49:0"},{"assignments":[431],"declarations":[{"constant":false,"id":431,"mutability":"mutable","name":"accountBalance","nameLocation":"9643:14:0","nodeType":"VariableDeclaration","scope":474,"src":"9635:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"9635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":435,"initialValue":{"baseExpression":{"id":432,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"9660:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":434,"indexExpression":{"id":433,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"9670:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9660:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9635:43:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":437,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"9696:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":438,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"9714:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9696:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","id":440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9722:36:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""},"value":"ERC20: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""}],"id":436,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9688:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9688:71:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":442,"nodeType":"ExpressionStatement","src":"9688:71:0"},{"id":455,"nodeType":"UncheckedBlock","src":"9769:194:0","statements":[{"expression":{"id":449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":443,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"9793:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":445,"indexExpression":{"id":444,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"9803:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9793:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":446,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"9814:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":447,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"9831:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9814:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9793:44:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":450,"nodeType":"ExpressionStatement","src":"9793:44:0"},{"expression":{"id":453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":451,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23,"src":"9930:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":452,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"9946:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9930:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":454,"nodeType":"ExpressionStatement","src":"9930:22:0"}]},{"eventCall":{"arguments":[{"id":457,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"9987:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10004:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9996:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":458,"name":"address","nodeType":"ElementaryTypeName","src":"9996:7:0","typeDescriptions":{}}},"id":461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9996:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":462,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"10008:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":456,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"9978:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9978:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":464,"nodeType":"EmitStatement","src":"9973:42:0"},{"expression":{"arguments":[{"id":466,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"10046:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10063:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10055:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":467,"name":"address","nodeType":"ElementaryTypeName","src":"10055:7:0","typeDescriptions":{}}},"id":470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10055:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":471,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"10067:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":465,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":585,"src":"10026:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10026:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":473,"nodeType":"ExpressionStatement","src":"10026:48:0"}]},"documentation":{"id":404,"nodeType":"StructuredDocumentation","src":"9108:309:0","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":475,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9431:5:0","nodeType":"FunctionDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":406,"mutability":"mutable","name":"account","nameLocation":"9445:7:0","nodeType":"VariableDeclaration","scope":475,"src":"9437:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":405,"name":"address","nodeType":"ElementaryTypeName","src":"9437:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":408,"mutability":"mutable","name":"amount","nameLocation":"9462:6:0","nodeType":"VariableDeclaration","scope":475,"src":"9454:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":407,"name":"uint256","nodeType":"ElementaryTypeName","src":"9454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9436:33:0"},"returnParameters":{"id":410,"nodeType":"ParameterList","parameters":[],"src":"9487:0:0"},"scope":586,"src":"9422:659:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":519,"nodeType":"Block","src":"10617:257:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10635:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10652:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10644:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":487,"name":"address","nodeType":"ElementaryTypeName","src":"10644:7:0","typeDescriptions":{}}},"id":490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10644:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10635:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","id":492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10656:38:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""},"value":"ERC20: approve from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""}],"id":485,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10627:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10627:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":494,"nodeType":"ExpressionStatement","src":"10627:68:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":496,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"10713:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10732:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10724:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":497,"name":"address","nodeType":"ElementaryTypeName","src":"10724:7:0","typeDescriptions":{}}},"id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10724:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10713:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10736:36:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""},"value":"ERC20: approve to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""}],"id":495,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10705:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10705:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":504,"nodeType":"ExpressionStatement","src":"10705:68:0"},{"expression":{"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":505,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"10784:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":508,"indexExpression":{"id":506,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10796:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10784:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":509,"indexExpression":{"id":507,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"10803:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10784:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":510,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"10814:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10784:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":512,"nodeType":"ExpressionStatement","src":"10784:36:0"},{"eventCall":{"arguments":[{"id":514,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"10844:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":515,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"10851:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":516,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"10860:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":513,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10835:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10835:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":518,"nodeType":"EmitStatement","src":"10830:37:0"}]},"documentation":{"id":476,"nodeType":"StructuredDocumentation","src":"10087:412:0","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":520,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10513:8:0","nodeType":"FunctionDefinition","parameters":{"id":483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"owner","nameLocation":"10539:5:0","nodeType":"VariableDeclaration","scope":520,"src":"10531:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":477,"name":"address","nodeType":"ElementaryTypeName","src":"10531:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"spender","nameLocation":"10562:7:0","nodeType":"VariableDeclaration","scope":520,"src":"10554:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":479,"name":"address","nodeType":"ElementaryTypeName","src":"10554:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"amount","nameLocation":"10587:6:0","nodeType":"VariableDeclaration","scope":520,"src":"10579:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"10579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10521:78:0"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"10617:0:0"},"scope":586,"src":"10504:370:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":562,"nodeType":"Block","src":"11275:321:0","statements":[{"assignments":[531],"declarations":[{"constant":false,"id":531,"mutability":"mutable","name":"currentAllowance","nameLocation":"11293:16:0","nodeType":"VariableDeclaration","scope":562,"src":"11285:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":530,"name":"uint256","nodeType":"ElementaryTypeName","src":"11285:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":536,"initialValue":{"arguments":[{"id":533,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"11322:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":534,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"11329:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":532,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"11312:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11312:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11285:52:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":537,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"11351:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11376:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":539,"name":"uint256","nodeType":"ElementaryTypeName","src":"11376:7:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":538,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11371:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11371:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11385:3:0","memberName":"max","nodeType":"MemberAccess","src":"11371:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11351:37:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":561,"nodeType":"IfStatement","src":"11347:243:0","trueBody":{"id":560,"nodeType":"Block","src":"11390:200:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":545,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"11412:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":546,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":527,"src":"11432:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11412:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","id":548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11440:31:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""},"value":"ERC20: insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""}],"id":544,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11404:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11404:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":550,"nodeType":"ExpressionStatement","src":"11404:68:0"},{"id":559,"nodeType":"UncheckedBlock","src":"11486:94:0","statements":[{"expression":{"arguments":[{"id":552,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"11523:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":553,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"11530:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":554,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"11539:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":555,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":527,"src":"11558:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11539:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":551,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"11514:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11514:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":558,"nodeType":"ExpressionStatement","src":"11514:51:0"}]}]}}]},"documentation":{"id":521,"nodeType":"StructuredDocumentation","src":"10880:270:0","text":" @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."},"id":563,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"11164:15:0","nodeType":"FunctionDefinition","parameters":{"id":528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":523,"mutability":"mutable","name":"owner","nameLocation":"11197:5:0","nodeType":"VariableDeclaration","scope":563,"src":"11189:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":522,"name":"address","nodeType":"ElementaryTypeName","src":"11189:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":525,"mutability":"mutable","name":"spender","nameLocation":"11220:7:0","nodeType":"VariableDeclaration","scope":563,"src":"11212:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":524,"name":"address","nodeType":"ElementaryTypeName","src":"11212:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":527,"mutability":"mutable","name":"amount","nameLocation":"11245:6:0","nodeType":"VariableDeclaration","scope":563,"src":"11237:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":526,"name":"uint256","nodeType":"ElementaryTypeName","src":"11237:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11179:78:0"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[],"src":"11275:0:0"},"scope":586,"src":"11155:441:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":573,"nodeType":"Block","src":"12299:2:0","statements":[]},"documentation":{"id":564,"nodeType":"StructuredDocumentation","src":"11602:573:0","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":574,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"12189:20:0","nodeType":"FunctionDefinition","parameters":{"id":571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":566,"mutability":"mutable","name":"from","nameLocation":"12227:4:0","nodeType":"VariableDeclaration","scope":574,"src":"12219:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":565,"name":"address","nodeType":"ElementaryTypeName","src":"12219:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":568,"mutability":"mutable","name":"to","nameLocation":"12249:2:0","nodeType":"VariableDeclaration","scope":574,"src":"12241:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":567,"name":"address","nodeType":"ElementaryTypeName","src":"12241:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":570,"mutability":"mutable","name":"amount","nameLocation":"12269:6:0","nodeType":"VariableDeclaration","scope":574,"src":"12261:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":569,"name":"uint256","nodeType":"ElementaryTypeName","src":"12261:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12209:72:0"},"returnParameters":{"id":572,"nodeType":"ParameterList","parameters":[],"src":"12299:0:0"},"scope":586,"src":"12180:121:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":584,"nodeType":"Block","src":"13007:2:0","statements":[]},"documentation":{"id":575,"nodeType":"StructuredDocumentation","src":"12307:577:0","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":585,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"12898:19:0","nodeType":"FunctionDefinition","parameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"from","nameLocation":"12935:4:0","nodeType":"VariableDeclaration","scope":585,"src":"12927:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"12927:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":579,"mutability":"mutable","name":"to","nameLocation":"12957:2:0","nodeType":"VariableDeclaration","scope":585,"src":"12949:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":578,"name":"address","nodeType":"ElementaryTypeName","src":"12949:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":581,"mutability":"mutable","name":"amount","nameLocation":"12977:6:0","nodeType":"VariableDeclaration","scope":585,"src":"12969:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":580,"name":"uint256","nodeType":"ElementaryTypeName","src":"12969:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12917:72:0"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[],"src":"13007:0:0"},"scope":586,"src":"12889:120:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":587,"src":"1401:11610:0","usedErrors":[]}],"src":"105:12907:0"},"id":0},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[664]},"id":665,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":588,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":589,"nodeType":"StructuredDocumentation","src":"131:70:1","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":664,"linearizedBaseContracts":[664],"name":"IERC20","nameLocation":"212:6:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":590,"nodeType":"StructuredDocumentation","src":"225:158:1","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":598,"name":"Transfer","nameLocation":"394:8:1","nodeType":"EventDefinition","parameters":{"id":597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":592,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:1","nodeType":"VariableDeclaration","scope":598,"src":"403:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":591,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":594,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:1","nodeType":"VariableDeclaration","scope":598,"src":"425:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":593,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":596,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:1","nodeType":"VariableDeclaration","scope":598,"src":"445:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":595,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:1"},"src":"388:72:1"},{"anonymous":false,"documentation":{"id":599,"nodeType":"StructuredDocumentation","src":"466:148:1","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":607,"name":"Approval","nameLocation":"625:8:1","nodeType":"EventDefinition","parameters":{"id":606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":601,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:1","nodeType":"VariableDeclaration","scope":607,"src":"634:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":600,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":603,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:1","nodeType":"VariableDeclaration","scope":607,"src":"657:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":602,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":605,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:1","nodeType":"VariableDeclaration","scope":607,"src":"682:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":604,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:1"},"src":"619:78:1"},{"documentation":{"id":608,"nodeType":"StructuredDocumentation","src":"703:66:1","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":613,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:1","nodeType":"FunctionDefinition","parameters":{"id":609,"nodeType":"ParameterList","parameters":[],"src":"794:2:1"},"returnParameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":613,"src":"820:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":610,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:1"},"scope":664,"src":"774:55:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":614,"nodeType":"StructuredDocumentation","src":"835:72:1","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":621,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:1","nodeType":"FunctionDefinition","parameters":{"id":617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":616,"mutability":"mutable","name":"account","nameLocation":"939:7:1","nodeType":"VariableDeclaration","scope":621,"src":"931:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":615,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:1"},"returnParameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":619,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":621,"src":"971:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":618,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:1"},"scope":664,"src":"912:68:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":622,"nodeType":"StructuredDocumentation","src":"986:202:1","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":631,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:1","nodeType":"FunctionDefinition","parameters":{"id":627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":624,"mutability":"mutable","name":"to","nameLocation":"1219:2:1","nodeType":"VariableDeclaration","scope":631,"src":"1211:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":623,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":626,"mutability":"mutable","name":"amount","nameLocation":"1231:6:1","nodeType":"VariableDeclaration","scope":631,"src":"1223:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":625,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:1"},"returnParameters":{"id":630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":631,"src":"1257:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":628,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:1"},"scope":664,"src":"1193:70:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":632,"nodeType":"StructuredDocumentation","src":"1269:264:1","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":641,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:1","nodeType":"FunctionDefinition","parameters":{"id":637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":634,"mutability":"mutable","name":"owner","nameLocation":"1565:5:1","nodeType":"VariableDeclaration","scope":641,"src":"1557:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":633,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":636,"mutability":"mutable","name":"spender","nameLocation":"1580:7:1","nodeType":"VariableDeclaration","scope":641,"src":"1572:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":635,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:1"},"returnParameters":{"id":640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":639,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":641,"src":"1612:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":638,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:1"},"scope":664,"src":"1538:83:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":642,"nodeType":"StructuredDocumentation","src":"1627:642:1","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":651,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:1","nodeType":"FunctionDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":644,"mutability":"mutable","name":"spender","nameLocation":"2299:7:1","nodeType":"VariableDeclaration","scope":651,"src":"2291:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":643,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":646,"mutability":"mutable","name":"amount","nameLocation":"2316:6:1","nodeType":"VariableDeclaration","scope":651,"src":"2308:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":645,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:1"},"returnParameters":{"id":650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":651,"src":"2342:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":648,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:1"},"scope":664,"src":"2274:74:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":652,"nodeType":"StructuredDocumentation","src":"2354:287:1","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":663,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:1","nodeType":"FunctionDefinition","parameters":{"id":659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":654,"mutability":"mutable","name":"from","nameLocation":"2685:4:1","nodeType":"VariableDeclaration","scope":663,"src":"2677:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":653,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":656,"mutability":"mutable","name":"to","nameLocation":"2707:2:1","nodeType":"VariableDeclaration","scope":663,"src":"2699:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":655,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":658,"mutability":"mutable","name":"amount","nameLocation":"2727:6:1","nodeType":"VariableDeclaration","scope":663,"src":"2719:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":657,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:1"},"returnParameters":{"id":662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":663,"src":"2758:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":660,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:1"},"scope":664,"src":"2646:118:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":665,"src":"202:2564:1","usedErrors":[]}],"src":"106:2661:1"},"id":1},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[664],"IERC20Metadata":[689]},"id":690,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":666,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:2"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":667,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":690,"sourceUnit":665,"src":"135:23:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":669,"name":"IERC20","nameLocations":["305:6:2"],"nodeType":"IdentifierPath","referencedDeclaration":664,"src":"305:6:2"},"id":670,"nodeType":"InheritanceSpecifier","src":"305:6:2"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":668,"nodeType":"StructuredDocumentation","src":"160:116:2","text":" @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"},"fullyImplemented":false,"id":689,"linearizedBaseContracts":[689,664],"name":"IERC20Metadata","nameLocation":"287:14:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"318:54:2","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":676,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:2","nodeType":"FunctionDefinition","parameters":{"id":672,"nodeType":"ParameterList","parameters":[],"src":"390:2:2"},"returnParameters":{"id":675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":676,"src":"416:13:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":673,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:2"},"scope":689,"src":"377:54:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":677,"nodeType":"StructuredDocumentation","src":"437:56:2","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":682,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:2","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[],"src":"513:2:2"},"returnParameters":{"id":681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":682,"src":"539:13:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":679,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:2"},"scope":689,"src":"498:56:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":683,"nodeType":"StructuredDocumentation","src":"560:65:2","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":688,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:2","nodeType":"FunctionDefinition","parameters":{"id":684,"nodeType":"ParameterList","parameters":[],"src":"647:2:2"},"returnParameters":{"id":687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":688,"src":"673:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":685,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:2"},"scope":689,"src":"630:50:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":690,"src":"277:405:2","usedErrors":[]}],"src":"110:573:2"},"id":2},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[711]},"id":712,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":691,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:3"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":692,"nodeType":"StructuredDocumentation","src":"111:496:3","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":711,"linearizedBaseContracts":[711],"name":"Context","nameLocation":"626:7:3","nodeType":"ContractDefinition","nodes":[{"body":{"id":700,"nodeType":"Block","src":"702:34:3","statements":[{"expression":{"expression":{"id":697,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"723:6:3","memberName":"sender","nodeType":"MemberAccess","src":"719:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":696,"id":699,"nodeType":"Return","src":"712:17:3"}]},"id":701,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:3","nodeType":"FunctionDefinition","parameters":{"id":693,"nodeType":"ParameterList","parameters":[],"src":"659:2:3"},"returnParameters":{"id":696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":695,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":701,"src":"693:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":694,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:3"},"scope":711,"src":"640:96:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":709,"nodeType":"Block","src":"809:32:3","statements":[{"expression":{"expression":{"id":706,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"830:4:3","memberName":"data","nodeType":"MemberAccess","src":"826:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":705,"id":708,"nodeType":"Return","src":"819:15:3"}]},"id":710,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:3","nodeType":"FunctionDefinition","parameters":{"id":702,"nodeType":"ParameterList","parameters":[],"src":"759:2:3"},"returnParameters":{"id":705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":710,"src":"793:14:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":703,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:3"},"scope":711,"src":"742:99:3","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":712,"src":"608:235:3","usedErrors":[]}],"src":"86:758:3"},"id":3},"contracts/mocks/MockUSDC.sol":{"ast":{"absolutePath":"contracts/mocks/MockUSDC.sol","exportedSymbols":{"ERC20":[586],"MockUSDC":[781]},"id":782,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":713,"literals":["solidity","0.8",".18"],"nodeType":"PragmaDirective","src":"38:23:4"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":715,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":782,"sourceUnit":587,"src":"63:68:4","symbolAliases":[{"foreign":{"id":714,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":586,"src":"71:5:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":717,"name":"ERC20","nameLocations":["182:5:4"],"nodeType":"IdentifierPath","referencedDeclaration":586,"src":"182:5:4"},"id":718,"nodeType":"InheritanceSpecifier","src":"182:5:4"}],"canonicalName":"MockUSDC","contractDependencies":[],"contractKind":"contract","documentation":{"id":716,"nodeType":"StructuredDocumentation","src":"133:28:4","text":"@dev Mock mintable USDC"},"fullyImplemented":true,"id":781,"linearizedBaseContracts":[781,586,689,664,711],"name":"MockUSDC","nameLocation":"170:8:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":731,"nodeType":"Block","src":"235:48:4","statements":[{"expression":{"arguments":[{"expression":{"id":726,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"251:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"255:6:4","memberName":"sender","nodeType":"MemberAccess","src":"251:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"315f3030305f303030453138","id":728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"263:12:4","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000"},"value":"1_000_000E18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_1000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000"}],"id":725,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"245:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"245:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":730,"nodeType":"ExpressionStatement","src":"245:31:4"}]},"id":732,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d6f636b55445343","id":721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"214:10:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_94e1f9c6f37f68c7fbe9a402bd5dbcd03f36019e7e48bd72249c8c505bfa86d6","typeString":"literal_string \"MockUDSC\""},"value":"MockUDSC"},{"hexValue":"4d55534443","id":722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"226:7:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b881b1a06d818eb813952573bf9829bb21a81b032d939e3244337841a6fff45","typeString":"literal_string \"MUSDC\""},"value":"MUSDC"}],"id":723,"kind":"baseConstructorSpecifier","modifierName":{"id":720,"name":"ERC20","nameLocations":["208:5:4"],"nodeType":"IdentifierPath","referencedDeclaration":586,"src":"208:5:4"},"nodeType":"ModifierInvocation","src":"208:26:4"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":719,"nodeType":"ParameterList","parameters":[],"src":"205:2:4"},"returnParameters":{"id":724,"nodeType":"ParameterList","parameters":[],"src":"235:0:4"},"scope":781,"src":"194:89:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":743,"nodeType":"Block","src":"329:43:4","statements":[{"expression":{"arguments":[{"expression":{"id":738,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"345:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"349:6:4","memberName":"sender","nodeType":"MemberAccess","src":"345:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":740,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"357:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":737,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"339:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"339:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":742,"nodeType":"ExpressionStatement","src":"339:26:4"}]},"functionSelector":"a0712d68","id":744,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"298:4:4","nodeType":"FunctionDefinition","parameters":{"id":735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":734,"mutability":"mutable","name":"_amount","nameLocation":"311:7:4","nodeType":"VariableDeclaration","scope":744,"src":"303:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":733,"name":"uint256","nodeType":"ElementaryTypeName","src":"303:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"302:17:4"},"returnParameters":{"id":736,"nodeType":"ParameterList","parameters":[],"src":"329:0:4"},"scope":781,"src":"289:83:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":755,"nodeType":"Block","src":"418:43:4","statements":[{"expression":{"arguments":[{"expression":{"id":750,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"434:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"438:6:4","memberName":"sender","nodeType":"MemberAccess","src":"434:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":752,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"446:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":749,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"428:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"428:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":754,"nodeType":"ExpressionStatement","src":"428:26:4"}]},"functionSelector":"42966c68","id":756,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"387:4:4","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"_amount","nameLocation":"400:7:4","nodeType":"VariableDeclaration","scope":756,"src":"392:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":745,"name":"uint256","nodeType":"ElementaryTypeName","src":"392:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"391:17:4"},"returnParameters":{"id":748,"nodeType":"ParameterList","parameters":[],"src":"418:0:4"},"scope":781,"src":"378:83:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":779,"nodeType":"Block","src":"495:160:4","statements":[{"assignments":[760],"declarations":[{"constant":false,"id":760,"mutability":"mutable","name":"_balanceOf","nameLocation":"513:10:4","nodeType":"VariableDeclaration","scope":779,"src":"505:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":759,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":765,"initialValue":{"arguments":[{"expression":{"id":762,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"536:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"540:6:4","memberName":"sender","nodeType":"MemberAccess","src":"536:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":761,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"526:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"526:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"505:42:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":767,"name":"_balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"565:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"578:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"565:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6f636b555344433a204e6f7468696e6720746f206275726e","id":770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"581:27:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98","typeString":"literal_string \"MockUSDC: Nothing to burn\""},"value":"MockUSDC: Nothing to burn"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98","typeString":"literal_string \"MockUSDC: Nothing to burn\""}],"id":766,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"557:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"557:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":772,"nodeType":"ExpressionStatement","src":"557:52:4"},{"expression":{"arguments":[{"expression":{"id":774,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"625:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"629:6:4","memberName":"sender","nodeType":"MemberAccess","src":"625:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":776,"name":"_balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"637:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":773,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"619:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"619:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":778,"nodeType":"ExpressionStatement","src":"619:29:4"}]},"functionSelector":"9975038c","id":780,"implemented":true,"kind":"function","modifiers":[],"name":"burnAll","nameLocation":"476:7:4","nodeType":"FunctionDefinition","parameters":{"id":757,"nodeType":"ParameterList","parameters":[],"src":"483:2:4"},"returnParameters":{"id":758,"nodeType":"ParameterList","parameters":[],"src":"495:0:4"},"scope":781,"src":"467:188:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":782,"src":"161:496:4","usedErrors":[]}],"src":"38:620:4"},"id":4}},"contracts":{"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_44":{"entryPoint":null,"id":44,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":376,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":451,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":502,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_memory":{"entryPoint":247,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":99,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":278,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_string_storage":{"entryPoint":746,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":635,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_t_string_storage":{"entryPoint":1067,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_uint256":{"entryPoint":882,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":1028,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_uint256_to_t_uint256":{"entryPoint":902,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1222,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":332,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":767,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":693,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":1192,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":193,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":892,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":1160,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x22":{"entryPoint":646,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":146,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":942,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":119,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":124,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":114,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":109,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":129,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":783,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1147,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":1000,"id":null,"parameterSlots":2,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":796,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":952,"id":null,"parameterSlots":3,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":995,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8574:5","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:5","statements":[{"nodeType":"YulAssignment","src":"57:19:5","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:5","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:5"},"nodeType":"YulFunctionCall","src":"67:9:5"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:5"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:5","type":""}],"src":"7:75:5"},{"body":{"nodeType":"YulBlock","src":"177:28:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:5"},"nodeType":"YulFunctionCall","src":"187:12:5"},"nodeType":"YulExpressionStatement","src":"187:12:5"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:5"},{"body":{"nodeType":"YulBlock","src":"300:28:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:5"},"nodeType":"YulFunctionCall","src":"310:12:5"},"nodeType":"YulExpressionStatement","src":"310:12:5"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:5"},{"body":{"nodeType":"YulBlock","src":"423:28:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"443:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"433:6:5"},"nodeType":"YulFunctionCall","src":"433:12:5"},"nodeType":"YulExpressionStatement","src":"433:12:5"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"334:117:5"},{"body":{"nodeType":"YulBlock","src":"546:28:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:5"},"nodeType":"YulFunctionCall","src":"556:12:5"},"nodeType":"YulExpressionStatement","src":"556:12:5"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"457:117:5"},{"body":{"nodeType":"YulBlock","src":"628:54:5","statements":[{"nodeType":"YulAssignment","src":"638:38:5","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"656:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:5","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"652:3:5"},"nodeType":"YulFunctionCall","src":"652:14:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:5","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"668:3:5"},"nodeType":"YulFunctionCall","src":"668:7:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"648:3:5"},"nodeType":"YulFunctionCall","src":"648:28:5"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"638:6:5"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"611:5:5","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"621:6:5","type":""}],"src":"580:102:5"},{"body":{"nodeType":"YulBlock","src":"716:152:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"733:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"736:77:5","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"726:6:5"},"nodeType":"YulFunctionCall","src":"726:88:5"},"nodeType":"YulExpressionStatement","src":"726:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"830:1:5","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"833:4:5","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"823:6:5"},"nodeType":"YulFunctionCall","src":"823:15:5"},"nodeType":"YulExpressionStatement","src":"823:15:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"854:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"857:4:5","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"847:6:5"},"nodeType":"YulFunctionCall","src":"847:15:5"},"nodeType":"YulExpressionStatement","src":"847:15:5"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"688:180:5"},{"body":{"nodeType":"YulBlock","src":"917:238:5","statements":[{"nodeType":"YulVariableDeclaration","src":"927:58:5","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"949:6:5"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"979:4:5"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"957:21:5"},"nodeType":"YulFunctionCall","src":"957:27:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"945:3:5"},"nodeType":"YulFunctionCall","src":"945:40:5"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"931:10:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"1096:22:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1098:16:5"},"nodeType":"YulFunctionCall","src":"1098:18:5"},"nodeType":"YulExpressionStatement","src":"1098:18:5"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1039:10:5"},{"kind":"number","nodeType":"YulLiteral","src":"1051:18:5","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1036:2:5"},"nodeType":"YulFunctionCall","src":"1036:34:5"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1075:10:5"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1087:6:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:5"},"nodeType":"YulFunctionCall","src":"1072:22:5"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1033:2:5"},"nodeType":"YulFunctionCall","src":"1033:62:5"},"nodeType":"YulIf","src":"1030:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1134:2:5","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1138:10:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1127:6:5"},"nodeType":"YulFunctionCall","src":"1127:22:5"},"nodeType":"YulExpressionStatement","src":"1127:22:5"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"903:6:5","type":""},{"name":"size","nodeType":"YulTypedName","src":"911:4:5","type":""}],"src":"874:281:5"},{"body":{"nodeType":"YulBlock","src":"1202:88:5","statements":[{"nodeType":"YulAssignment","src":"1212:30:5","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1222:18:5"},"nodeType":"YulFunctionCall","src":"1222:20:5"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1212:6:5"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1271:6:5"},{"name":"size","nodeType":"YulIdentifier","src":"1279:4:5"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1251:19:5"},"nodeType":"YulFunctionCall","src":"1251:33:5"},"nodeType":"YulExpressionStatement","src":"1251:33:5"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1186:4:5","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1195:6:5","type":""}],"src":"1161:129:5"},{"body":{"nodeType":"YulBlock","src":"1363:241:5","statements":[{"body":{"nodeType":"YulBlock","src":"1468:22:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1470:16:5"},"nodeType":"YulFunctionCall","src":"1470:18:5"},"nodeType":"YulExpressionStatement","src":"1470:18:5"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1440:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"1448:18:5","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1437:2:5"},"nodeType":"YulFunctionCall","src":"1437:30:5"},"nodeType":"YulIf","src":"1434:56:5"},{"nodeType":"YulAssignment","src":"1500:37:5","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1530:6:5"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1508:21:5"},"nodeType":"YulFunctionCall","src":"1508:29:5"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1500:4:5"}]},{"nodeType":"YulAssignment","src":"1574:23:5","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1586:4:5"},{"kind":"number","nodeType":"YulLiteral","src":"1592:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1582:3:5"},"nodeType":"YulFunctionCall","src":"1582:15:5"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1574:4:5"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1347:6:5","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1358:4:5","type":""}],"src":"1296:308:5"},{"body":{"nodeType":"YulBlock","src":"1672:184:5","statements":[{"nodeType":"YulVariableDeclaration","src":"1682:10:5","value":{"kind":"number","nodeType":"YulLiteral","src":"1691:1:5","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1686:1:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"1751:63:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1776:3:5"},{"name":"i","nodeType":"YulIdentifier","src":"1781:1:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:5"},"nodeType":"YulFunctionCall","src":"1772:11:5"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1795:3:5"},{"name":"i","nodeType":"YulIdentifier","src":"1800:1:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1791:3:5"},"nodeType":"YulFunctionCall","src":"1791:11:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1785:5:5"},"nodeType":"YulFunctionCall","src":"1785:18:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1765:6:5"},"nodeType":"YulFunctionCall","src":"1765:39:5"},"nodeType":"YulExpressionStatement","src":"1765:39:5"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1712:1:5"},{"name":"length","nodeType":"YulIdentifier","src":"1715:6:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1709:2:5"},"nodeType":"YulFunctionCall","src":"1709:13:5"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1723:19:5","statements":[{"nodeType":"YulAssignment","src":"1725:15:5","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1734:1:5"},{"kind":"number","nodeType":"YulLiteral","src":"1737:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1730:3:5"},"nodeType":"YulFunctionCall","src":"1730:10:5"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1725:1:5"}]}]},"pre":{"nodeType":"YulBlock","src":"1705:3:5","statements":[]},"src":"1701:113:5"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1834:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"1839:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1830:3:5"},"nodeType":"YulFunctionCall","src":"1830:16:5"},{"kind":"number","nodeType":"YulLiteral","src":"1848:1:5","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1823:6:5"},"nodeType":"YulFunctionCall","src":"1823:27:5"},"nodeType":"YulExpressionStatement","src":"1823:27:5"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1654:3:5","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1659:3:5","type":""},{"name":"length","nodeType":"YulTypedName","src":"1664:6:5","type":""}],"src":"1610:246:5"},{"body":{"nodeType":"YulBlock","src":"1957:339:5","statements":[{"nodeType":"YulAssignment","src":"1967:75:5","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2034:6:5"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"1992:41:5"},"nodeType":"YulFunctionCall","src":"1992:49:5"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"1976:15:5"},"nodeType":"YulFunctionCall","src":"1976:66:5"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1967:5:5"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2058:5:5"},{"name":"length","nodeType":"YulIdentifier","src":"2065:6:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2051:6:5"},"nodeType":"YulFunctionCall","src":"2051:21:5"},"nodeType":"YulExpressionStatement","src":"2051:21:5"},{"nodeType":"YulVariableDeclaration","src":"2081:27:5","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2096:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"2103:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2092:3:5"},"nodeType":"YulFunctionCall","src":"2092:16:5"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2085:3:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"2146:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"2148:77:5"},"nodeType":"YulFunctionCall","src":"2148:79:5"},"nodeType":"YulExpressionStatement","src":"2148:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2127:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"2132:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2123:3:5"},"nodeType":"YulFunctionCall","src":"2123:16:5"},{"name":"end","nodeType":"YulIdentifier","src":"2141:3:5"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2120:2:5"},"nodeType":"YulFunctionCall","src":"2120:25:5"},"nodeType":"YulIf","src":"2117:112:5"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2273:3:5"},{"name":"dst","nodeType":"YulIdentifier","src":"2278:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"2283:6:5"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2238:34:5"},"nodeType":"YulFunctionCall","src":"2238:52:5"},"nodeType":"YulExpressionStatement","src":"2238:52:5"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1930:3:5","type":""},{"name":"length","nodeType":"YulTypedName","src":"1935:6:5","type":""},{"name":"end","nodeType":"YulTypedName","src":"1943:3:5","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"1951:5:5","type":""}],"src":"1862:434:5"},{"body":{"nodeType":"YulBlock","src":"2389:282:5","statements":[{"body":{"nodeType":"YulBlock","src":"2438:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"2440:77:5"},"nodeType":"YulFunctionCall","src":"2440:79:5"},"nodeType":"YulExpressionStatement","src":"2440:79:5"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2417:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"2425:4:5","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2413:3:5"},"nodeType":"YulFunctionCall","src":"2413:17:5"},{"name":"end","nodeType":"YulIdentifier","src":"2432:3:5"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2409:3:5"},"nodeType":"YulFunctionCall","src":"2409:27:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2402:6:5"},"nodeType":"YulFunctionCall","src":"2402:35:5"},"nodeType":"YulIf","src":"2399:122:5"},{"nodeType":"YulVariableDeclaration","src":"2530:27:5","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2550:6:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2544:5:5"},"nodeType":"YulFunctionCall","src":"2544:13:5"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2534:6:5","type":""}]},{"nodeType":"YulAssignment","src":"2566:99:5","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2638:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"2646:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2634:3:5"},"nodeType":"YulFunctionCall","src":"2634:17:5"},{"name":"length","nodeType":"YulIdentifier","src":"2653:6:5"},{"name":"end","nodeType":"YulIdentifier","src":"2661:3:5"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"2575:58:5"},"nodeType":"YulFunctionCall","src":"2575:90:5"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2566:5:5"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2367:6:5","type":""},{"name":"end","nodeType":"YulTypedName","src":"2375:3:5","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2383:5:5","type":""}],"src":"2316:355:5"},{"body":{"nodeType":"YulBlock","src":"2791:739:5","statements":[{"body":{"nodeType":"YulBlock","src":"2837:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2839:77:5"},"nodeType":"YulFunctionCall","src":"2839:79:5"},"nodeType":"YulExpressionStatement","src":"2839:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2812:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"2821:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2808:3:5"},"nodeType":"YulFunctionCall","src":"2808:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"2833:2:5","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2804:3:5"},"nodeType":"YulFunctionCall","src":"2804:32:5"},"nodeType":"YulIf","src":"2801:119:5"},{"nodeType":"YulBlock","src":"2930:291:5","statements":[{"nodeType":"YulVariableDeclaration","src":"2945:38:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2969:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"2980:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2965:3:5"},"nodeType":"YulFunctionCall","src":"2965:17:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2959:5:5"},"nodeType":"YulFunctionCall","src":"2959:24:5"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2949:6:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"3030:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3032:77:5"},"nodeType":"YulFunctionCall","src":"3032:79:5"},"nodeType":"YulExpressionStatement","src":"3032:79:5"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3002:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"3010:18:5","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2999:2:5"},"nodeType":"YulFunctionCall","src":"2999:30:5"},"nodeType":"YulIf","src":"2996:117:5"},{"nodeType":"YulAssignment","src":"3127:84:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3183:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"3194:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3179:3:5"},"nodeType":"YulFunctionCall","src":"3179:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3203:7:5"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3137:41:5"},"nodeType":"YulFunctionCall","src":"3137:74:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3127:6:5"}]}]},{"nodeType":"YulBlock","src":"3231:292:5","statements":[{"nodeType":"YulVariableDeclaration","src":"3246:39:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3270:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"3281:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3266:3:5"},"nodeType":"YulFunctionCall","src":"3266:18:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3260:5:5"},"nodeType":"YulFunctionCall","src":"3260:25:5"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3250:6:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"3332:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3334:77:5"},"nodeType":"YulFunctionCall","src":"3334:79:5"},"nodeType":"YulExpressionStatement","src":"3334:79:5"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3304:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"3312:18:5","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3301:2:5"},"nodeType":"YulFunctionCall","src":"3301:30:5"},"nodeType":"YulIf","src":"3298:117:5"},{"nodeType":"YulAssignment","src":"3429:84:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3485:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"3496:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3481:3:5"},"nodeType":"YulFunctionCall","src":"3481:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3505:7:5"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3439:41:5"},"nodeType":"YulFunctionCall","src":"3439:74:5"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3429:6:5"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2753:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2764:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2776:6:5","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2784:6:5","type":""}],"src":"2677:853:5"},{"body":{"nodeType":"YulBlock","src":"3595:40:5","statements":[{"nodeType":"YulAssignment","src":"3606:22:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3622:5:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3616:5:5"},"nodeType":"YulFunctionCall","src":"3616:12:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3606:6:5"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3578:5:5","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3588:6:5","type":""}],"src":"3536:99:5"},{"body":{"nodeType":"YulBlock","src":"3669:152:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3686:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3689:77:5","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3679:6:5"},"nodeType":"YulFunctionCall","src":"3679:88:5"},"nodeType":"YulExpressionStatement","src":"3679:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3783:1:5","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3786:4:5","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3776:6:5"},"nodeType":"YulFunctionCall","src":"3776:15:5"},"nodeType":"YulExpressionStatement","src":"3776:15:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3807:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3810:4:5","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3800:6:5"},"nodeType":"YulFunctionCall","src":"3800:15:5"},"nodeType":"YulExpressionStatement","src":"3800:15:5"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"3641:180:5"},{"body":{"nodeType":"YulBlock","src":"3878:269:5","statements":[{"nodeType":"YulAssignment","src":"3888:22:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3902:4:5"},{"kind":"number","nodeType":"YulLiteral","src":"3908:1:5","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3898:3:5"},"nodeType":"YulFunctionCall","src":"3898:12:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3888:6:5"}]},{"nodeType":"YulVariableDeclaration","src":"3919:38:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3949:4:5"},{"kind":"number","nodeType":"YulLiteral","src":"3955:1:5","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3945:3:5"},"nodeType":"YulFunctionCall","src":"3945:12:5"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"3923:18:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"3996:51:5","statements":[{"nodeType":"YulAssignment","src":"4010:27:5","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4024:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"4032:4:5","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4020:3:5"},"nodeType":"YulFunctionCall","src":"4020:17:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4010:6:5"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3976:18:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3969:6:5"},"nodeType":"YulFunctionCall","src":"3969:26:5"},"nodeType":"YulIf","src":"3966:81:5"},{"body":{"nodeType":"YulBlock","src":"4099:42:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"4113:16:5"},"nodeType":"YulFunctionCall","src":"4113:18:5"},"nodeType":"YulExpressionStatement","src":"4113:18:5"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4063:18:5"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4086:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"4094:2:5","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4083:2:5"},"nodeType":"YulFunctionCall","src":"4083:14:5"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4060:2:5"},"nodeType":"YulFunctionCall","src":"4060:38:5"},"nodeType":"YulIf","src":"4057:84:5"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3862:4:5","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3871:6:5","type":""}],"src":"3827:320:5"},{"body":{"nodeType":"YulBlock","src":"4207:87:5","statements":[{"nodeType":"YulAssignment","src":"4217:11:5","value":{"name":"ptr","nodeType":"YulIdentifier","src":"4225:3:5"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4217:4:5"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4245:1:5","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"4248:3:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4238:6:5"},"nodeType":"YulFunctionCall","src":"4238:14:5"},"nodeType":"YulExpressionStatement","src":"4238:14:5"},{"nodeType":"YulAssignment","src":"4261:26:5","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4279:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4282:4:5","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"4269:9:5"},"nodeType":"YulFunctionCall","src":"4269:18:5"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4261:4:5"}]}]},"name":"array_dataslot_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"4194:3:5","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"4202:4:5","type":""}],"src":"4153:141:5"},{"body":{"nodeType":"YulBlock","src":"4344:49:5","statements":[{"nodeType":"YulAssignment","src":"4354:33:5","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4372:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"4379:2:5","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4368:3:5"},"nodeType":"YulFunctionCall","src":"4368:14:5"},{"kind":"number","nodeType":"YulLiteral","src":"4384:2:5","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4364:3:5"},"nodeType":"YulFunctionCall","src":"4364:23:5"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"4354:6:5"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4327:5:5","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"4337:6:5","type":""}],"src":"4300:93:5"},{"body":{"nodeType":"YulBlock","src":"4452:54:5","statements":[{"nodeType":"YulAssignment","src":"4462:37:5","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"4487:4:5"},{"name":"value","nodeType":"YulIdentifier","src":"4493:5:5"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4483:3:5"},"nodeType":"YulFunctionCall","src":"4483:16:5"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"4462:8:5"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"4427:4:5","type":""},{"name":"value","nodeType":"YulTypedName","src":"4433:5:5","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"4443:8:5","type":""}],"src":"4399:107:5"},{"body":{"nodeType":"YulBlock","src":"4588:317:5","statements":[{"nodeType":"YulVariableDeclaration","src":"4598:35:5","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"4619:10:5"},{"kind":"number","nodeType":"YulLiteral","src":"4631:1:5","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"4615:3:5"},"nodeType":"YulFunctionCall","src":"4615:18:5"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"4602:9:5","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4642:109:5","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"4673:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"4684:66:5","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"4654:18:5"},"nodeType":"YulFunctionCall","src":"4654:97:5"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"4646:4:5","type":""}]},{"nodeType":"YulAssignment","src":"4760:51:5","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"4791:9:5"},{"name":"toInsert","nodeType":"YulIdentifier","src":"4802:8:5"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"4772:18:5"},"nodeType":"YulFunctionCall","src":"4772:39:5"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"4760:8:5"}]},{"nodeType":"YulAssignment","src":"4820:30:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4833:5:5"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"4844:4:5"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4840:3:5"},"nodeType":"YulFunctionCall","src":"4840:9:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4829:3:5"},"nodeType":"YulFunctionCall","src":"4829:21:5"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4820:5:5"}]},{"nodeType":"YulAssignment","src":"4859:40:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4872:5:5"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"4883:8:5"},{"name":"mask","nodeType":"YulIdentifier","src":"4893:4:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4879:3:5"},"nodeType":"YulFunctionCall","src":"4879:19:5"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4869:2:5"},"nodeType":"YulFunctionCall","src":"4869:30:5"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"4859:6:5"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4549:5:5","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"4556:10:5","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"4568:8:5","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"4581:6:5","type":""}],"src":"4512:393:5"},{"body":{"nodeType":"YulBlock","src":"4956:32:5","statements":[{"nodeType":"YulAssignment","src":"4966:16:5","value":{"name":"value","nodeType":"YulIdentifier","src":"4977:5:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4966:7:5"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4938:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4948:7:5","type":""}],"src":"4911:77:5"},{"body":{"nodeType":"YulBlock","src":"5026:28:5","statements":[{"nodeType":"YulAssignment","src":"5036:12:5","value":{"name":"value","nodeType":"YulIdentifier","src":"5043:5:5"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"5036:3:5"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5012:5:5","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"5022:3:5","type":""}],"src":"4994:60:5"},{"body":{"nodeType":"YulBlock","src":"5120:82:5","statements":[{"nodeType":"YulAssignment","src":"5130:66:5","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5188:5:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5170:17:5"},"nodeType":"YulFunctionCall","src":"5170:24:5"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"5161:8:5"},"nodeType":"YulFunctionCall","src":"5161:34:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5143:17:5"},"nodeType":"YulFunctionCall","src":"5143:53:5"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"5130:9:5"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5100:5:5","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"5110:9:5","type":""}],"src":"5060:142:5"},{"body":{"nodeType":"YulBlock","src":"5255:28:5","statements":[{"nodeType":"YulAssignment","src":"5265:12:5","value":{"name":"value","nodeType":"YulIdentifier","src":"5272:5:5"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"5265:3:5"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5241:5:5","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"5251:3:5","type":""}],"src":"5208:75:5"},{"body":{"nodeType":"YulBlock","src":"5365:193:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5375:63:5","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"5430:7:5"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"5399:30:5"},"nodeType":"YulFunctionCall","src":"5399:39:5"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"5379:16:5","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"5454:4:5"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"5494:4:5"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"5488:5:5"},"nodeType":"YulFunctionCall","src":"5488:11:5"},{"name":"offset","nodeType":"YulIdentifier","src":"5501:6:5"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"5533:16:5"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"5509:23:5"},"nodeType":"YulFunctionCall","src":"5509:41:5"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"5460:27:5"},"nodeType":"YulFunctionCall","src":"5460:91:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"5447:6:5"},"nodeType":"YulFunctionCall","src":"5447:105:5"},"nodeType":"YulExpressionStatement","src":"5447:105:5"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"5342:4:5","type":""},{"name":"offset","nodeType":"YulTypedName","src":"5348:6:5","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"5356:7:5","type":""}],"src":"5289:269:5"},{"body":{"nodeType":"YulBlock","src":"5613:24:5","statements":[{"nodeType":"YulAssignment","src":"5623:8:5","value":{"kind":"number","nodeType":"YulLiteral","src":"5630:1:5","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"5623:3:5"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"5609:3:5","type":""}],"src":"5564:73:5"},{"body":{"nodeType":"YulBlock","src":"5696:136:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5706:46:5","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"5720:30:5"},"nodeType":"YulFunctionCall","src":"5720:32:5"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"5710:6:5","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"5805:4:5"},{"name":"offset","nodeType":"YulIdentifier","src":"5811:6:5"},{"name":"zero_0","nodeType":"YulIdentifier","src":"5819:6:5"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"5761:43:5"},"nodeType":"YulFunctionCall","src":"5761:65:5"},"nodeType":"YulExpressionStatement","src":"5761:65:5"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"5682:4:5","type":""},{"name":"offset","nodeType":"YulTypedName","src":"5688:6:5","type":""}],"src":"5643:189:5"},{"body":{"nodeType":"YulBlock","src":"5888:136:5","statements":[{"body":{"nodeType":"YulBlock","src":"5955:63:5","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"5999:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"6006:1:5","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"5969:29:5"},"nodeType":"YulFunctionCall","src":"5969:39:5"},"nodeType":"YulExpressionStatement","src":"5969:39:5"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"5908:5:5"},{"name":"end","nodeType":"YulIdentifier","src":"5915:3:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5905:2:5"},"nodeType":"YulFunctionCall","src":"5905:14:5"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5920:26:5","statements":[{"nodeType":"YulAssignment","src":"5922:22:5","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"5935:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"5942:1:5","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5931:3:5"},"nodeType":"YulFunctionCall","src":"5931:13:5"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"5922:5:5"}]}]},"pre":{"nodeType":"YulBlock","src":"5902:2:5","statements":[]},"src":"5898:120:5"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"5876:5:5","type":""},{"name":"end","nodeType":"YulTypedName","src":"5883:3:5","type":""}],"src":"5838:186:5"},{"body":{"nodeType":"YulBlock","src":"6109:464:5","statements":[{"body":{"nodeType":"YulBlock","src":"6135:431:5","statements":[{"nodeType":"YulVariableDeclaration","src":"6149:54:5","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"6197:5:5"}],"functionName":{"name":"array_dataslot_t_string_storage","nodeType":"YulIdentifier","src":"6165:31:5"},"nodeType":"YulFunctionCall","src":"6165:38:5"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"6153:8:5","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6216:63:5","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"6239:8:5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"6267:10:5"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"6249:17:5"},"nodeType":"YulFunctionCall","src":"6249:29:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6235:3:5"},"nodeType":"YulFunctionCall","src":"6235:44:5"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"6220:11:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"6436:27:5","statements":[{"nodeType":"YulAssignment","src":"6438:23:5","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"6453:8:5"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"6438:11:5"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"6420:10:5"},{"kind":"number","nodeType":"YulLiteral","src":"6432:2:5","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6417:2:5"},"nodeType":"YulFunctionCall","src":"6417:18:5"},"nodeType":"YulIf","src":"6414:49:5"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"6505:11:5"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"6522:8:5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"6550:3:5"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"6532:17:5"},"nodeType":"YulFunctionCall","src":"6532:22:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6518:3:5"},"nodeType":"YulFunctionCall","src":"6518:37:5"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"6476:28:5"},"nodeType":"YulFunctionCall","src":"6476:80:5"},"nodeType":"YulExpressionStatement","src":"6476:80:5"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"6126:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"6131:2:5","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6123:2:5"},"nodeType":"YulFunctionCall","src":"6123:11:5"},"nodeType":"YulIf","src":"6120:446:5"}]},"name":"clean_up_bytearray_end_slots_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"6085:5:5","type":""},{"name":"len","nodeType":"YulTypedName","src":"6092:3:5","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"6097:10:5","type":""}],"src":"6030:543:5"},{"body":{"nodeType":"YulBlock","src":"6642:54:5","statements":[{"nodeType":"YulAssignment","src":"6652:37:5","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"6677:4:5"},{"name":"value","nodeType":"YulIdentifier","src":"6683:5:5"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"6673:3:5"},"nodeType":"YulFunctionCall","src":"6673:16:5"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"6652:8:5"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"6617:4:5","type":""},{"name":"value","nodeType":"YulTypedName","src":"6623:5:5","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"6633:8:5","type":""}],"src":"6579:117:5"},{"body":{"nodeType":"YulBlock","src":"6753:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"6763:68:5","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6812:1:5","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"6815:5:5"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6808:3:5"},"nodeType":"YulFunctionCall","src":"6808:13:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6827:1:5","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6823:3:5"},"nodeType":"YulFunctionCall","src":"6823:6:5"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"6779:28:5"},"nodeType":"YulFunctionCall","src":"6779:51:5"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6775:3:5"},"nodeType":"YulFunctionCall","src":"6775:56:5"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"6767:4:5","type":""}]},{"nodeType":"YulAssignment","src":"6840:25:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6854:4:5"},{"name":"mask","nodeType":"YulIdentifier","src":"6860:4:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6850:3:5"},"nodeType":"YulFunctionCall","src":"6850:15:5"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"6840:6:5"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6730:4:5","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"6736:5:5","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"6746:6:5","type":""}],"src":"6702:169:5"},{"body":{"nodeType":"YulBlock","src":"6957:214:5","statements":[{"nodeType":"YulAssignment","src":"7090:37:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"7117:4:5"},{"name":"len","nodeType":"YulIdentifier","src":"7123:3:5"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"7098:18:5"},"nodeType":"YulFunctionCall","src":"7098:29:5"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"7090:4:5"}]},{"nodeType":"YulAssignment","src":"7136:29:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"7147:4:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7157:1:5","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"7160:3:5"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7153:3:5"},"nodeType":"YulFunctionCall","src":"7153:11:5"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7144:2:5"},"nodeType":"YulFunctionCall","src":"7144:21:5"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"7136:4:5"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6938:4:5","type":""},{"name":"len","nodeType":"YulTypedName","src":"6944:3:5","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"6952:4:5","type":""}],"src":"6876:295:5"},{"body":{"nodeType":"YulBlock","src":"7268:1303:5","statements":[{"nodeType":"YulVariableDeclaration","src":"7279:51:5","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7326:3:5"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"7293:32:5"},"nodeType":"YulFunctionCall","src":"7293:37:5"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"7283:6:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"7415:22:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7417:16:5"},"nodeType":"YulFunctionCall","src":"7417:18:5"},"nodeType":"YulExpressionStatement","src":"7417:18:5"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"7387:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"7395:18:5","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7384:2:5"},"nodeType":"YulFunctionCall","src":"7384:30:5"},"nodeType":"YulIf","src":"7381:56:5"},{"nodeType":"YulVariableDeclaration","src":"7447:52:5","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"7493:4:5"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"7487:5:5"},"nodeType":"YulFunctionCall","src":"7487:11:5"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"7461:25:5"},"nodeType":"YulFunctionCall","src":"7461:38:5"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"7451:6:5","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"7592:4:5"},{"name":"oldLen","nodeType":"YulIdentifier","src":"7598:6:5"},{"name":"newLen","nodeType":"YulIdentifier","src":"7606:6:5"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_string_storage","nodeType":"YulIdentifier","src":"7546:45:5"},"nodeType":"YulFunctionCall","src":"7546:67:5"},"nodeType":"YulExpressionStatement","src":"7546:67:5"},{"nodeType":"YulVariableDeclaration","src":"7623:18:5","value":{"kind":"number","nodeType":"YulLiteral","src":"7640:1:5","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"7627:9:5","type":""}]},{"nodeType":"YulAssignment","src":"7651:17:5","value":{"kind":"number","nodeType":"YulLiteral","src":"7664:4:5","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"7651:9:5"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"7715:611:5","statements":[{"nodeType":"YulVariableDeclaration","src":"7729:37:5","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"7748:6:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7760:4:5","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7756:3:5"},"nodeType":"YulFunctionCall","src":"7756:9:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7744:3:5"},"nodeType":"YulFunctionCall","src":"7744:22:5"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"7733:7:5","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7780:51:5","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"7826:4:5"}],"functionName":{"name":"array_dataslot_t_string_storage","nodeType":"YulIdentifier","src":"7794:31:5"},"nodeType":"YulFunctionCall","src":"7794:37:5"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"7784:6:5","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7844:10:5","value":{"kind":"number","nodeType":"YulLiteral","src":"7853:1:5","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7848:1:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"7912:163:5","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"7937:6:5"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7955:3:5"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"7960:9:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7951:3:5"},"nodeType":"YulFunctionCall","src":"7951:19:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7945:5:5"},"nodeType":"YulFunctionCall","src":"7945:26:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"7930:6:5"},"nodeType":"YulFunctionCall","src":"7930:42:5"},"nodeType":"YulExpressionStatement","src":"7930:42:5"},{"nodeType":"YulAssignment","src":"7989:24:5","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"8003:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"8011:1:5","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7999:3:5"},"nodeType":"YulFunctionCall","src":"7999:14:5"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"7989:6:5"}]},{"nodeType":"YulAssignment","src":"8030:31:5","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"8047:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"8058:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8043:3:5"},"nodeType":"YulFunctionCall","src":"8043:18:5"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"8030:9:5"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7878:1:5"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"7881:7:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7875:2:5"},"nodeType":"YulFunctionCall","src":"7875:14:5"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7890:21:5","statements":[{"nodeType":"YulAssignment","src":"7892:17:5","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7901:1:5"},{"kind":"number","nodeType":"YulLiteral","src":"7904:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7897:3:5"},"nodeType":"YulFunctionCall","src":"7897:12:5"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7892:1:5"}]}]},"pre":{"nodeType":"YulBlock","src":"7871:3:5","statements":[]},"src":"7867:208:5"},{"body":{"nodeType":"YulBlock","src":"8111:156:5","statements":[{"nodeType":"YulVariableDeclaration","src":"8129:43:5","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8156:3:5"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"8161:9:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8152:3:5"},"nodeType":"YulFunctionCall","src":"8152:19:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8146:5:5"},"nodeType":"YulFunctionCall","src":"8146:26:5"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"8133:9:5","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"8196:6:5"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"8223:9:5"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"8238:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"8246:4:5","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8234:3:5"},"nodeType":"YulFunctionCall","src":"8234:17:5"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"8204:18:5"},"nodeType":"YulFunctionCall","src":"8204:48:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"8189:6:5"},"nodeType":"YulFunctionCall","src":"8189:64:5"},"nodeType":"YulExpressionStatement","src":"8189:64:5"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"8094:7:5"},{"name":"newLen","nodeType":"YulIdentifier","src":"8103:6:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8091:2:5"},"nodeType":"YulFunctionCall","src":"8091:19:5"},"nodeType":"YulIf","src":"8088:179:5"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"8287:4:5"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"8301:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"8309:1:5","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8297:3:5"},"nodeType":"YulFunctionCall","src":"8297:14:5"},{"kind":"number","nodeType":"YulLiteral","src":"8313:1:5","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8293:3:5"},"nodeType":"YulFunctionCall","src":"8293:22:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"8280:6:5"},"nodeType":"YulFunctionCall","src":"8280:36:5"},"nodeType":"YulExpressionStatement","src":"8280:36:5"}]},"nodeType":"YulCase","src":"7708:618:5","value":{"kind":"number","nodeType":"YulLiteral","src":"7713:1:5","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"8343:222:5","statements":[{"nodeType":"YulVariableDeclaration","src":"8357:14:5","value":{"kind":"number","nodeType":"YulLiteral","src":"8370:1:5","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8361:5:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"8394:67:5","statements":[{"nodeType":"YulAssignment","src":"8412:35:5","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8431:3:5"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"8436:9:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8427:3:5"},"nodeType":"YulFunctionCall","src":"8427:19:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8421:5:5"},"nodeType":"YulFunctionCall","src":"8421:26:5"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8412:5:5"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"8387:6:5"},"nodeType":"YulIf","src":"8384:77:5"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"8481:4:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8540:5:5"},{"name":"newLen","nodeType":"YulIdentifier","src":"8547:6:5"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"8487:52:5"},"nodeType":"YulFunctionCall","src":"8487:67:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"8474:6:5"},"nodeType":"YulFunctionCall","src":"8474:81:5"},"nodeType":"YulExpressionStatement","src":"8474:81:5"}]},"nodeType":"YulCase","src":"8335:230:5","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"7688:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"7696:2:5","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7685:2:5"},"nodeType":"YulFunctionCall","src":"7685:14:5"},"nodeType":"YulSwitch","src":"7678:887:5"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"7257:4:5","type":""},{"name":"src","nodeType":"YulTypedName","src":"7263:3:5","type":""}],"src":"7176:1395:5"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n}\n","id":5,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620017ec380380620017ec8339818101604052810190620000379190620001f6565b8160039081620000489190620004c6565b5080600490816200005a9190620004c6565b505050620005ad565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620000cc8262000081565b810181811067ffffffffffffffff82111715620000ee57620000ed62000092565b5b80604052505050565b60006200010362000063565b9050620001118282620000c1565b919050565b600067ffffffffffffffff82111562000134576200013362000092565b5b6200013f8262000081565b9050602081019050919050565b60005b838110156200016c5780820151818401526020810190506200014f565b60008484015250505050565b60006200018f620001898462000116565b620000f7565b905082815260208101848484011115620001ae57620001ad6200007c565b5b620001bb8482856200014c565b509392505050565b600082601f830112620001db57620001da62000077565b5b8151620001ed84826020860162000178565b91505092915050565b6000806040838503121562000210576200020f6200006d565b5b600083015167ffffffffffffffff81111562000231576200023062000072565b5b6200023f85828601620001c3565b925050602083015167ffffffffffffffff81111562000263576200026262000072565b5b6200027185828601620001c3565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ce57607f821691505b602082108103620002e457620002e362000286565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200034e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200030f565b6200035a86836200030f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003a7620003a16200039b8462000372565b6200037c565b62000372565b9050919050565b6000819050919050565b620003c38362000386565b620003db620003d282620003ae565b8484546200031c565b825550505050565b600090565b620003f2620003e3565b620003ff818484620003b8565b505050565b5b8181101562000427576200041b600082620003e8565b60018101905062000405565b5050565b601f82111562000476576200044081620002ea565b6200044b84620002ff565b810160208510156200045b578190505b620004736200046a85620002ff565b83018262000404565b50505b505050565b600082821c905092915050565b60006200049b600019846008026200047b565b1980831691505092915050565b6000620004b6838362000488565b9150826002028217905092915050565b620004d1826200027b565b67ffffffffffffffff811115620004ed57620004ec62000092565b5b620004f98254620002b5565b620005068282856200042b565b600060209050601f8311600181146200053e576000841562000529578287015190505b620005358582620004a8565b865550620005a5565b601f1984166200054e86620002ea565b60005b82811015620005785784890151825560018201915060208501945060208101905062000551565b8683101562000598578489015162000594601f89168262000488565b8355505b6001600288020188555050505b505050505050565b61122f80620005bd6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b0c565b60405180910390f35b6100e660048036038101906100e19190610bc7565b610308565b6040516100f39190610c22565b60405180910390f35b61010461032b565b6040516101119190610c4c565b60405180910390f35b610134600480360381019061012f9190610c67565b610335565b6040516101419190610c22565b60405180910390f35b610152610364565b60405161015f9190610cd6565b60405180910390f35b610182600480360381019061017d9190610bc7565b61036d565b60405161018f9190610c22565b60405180910390f35b6101b260048036038101906101ad9190610cf1565b6103a4565b6040516101bf9190610c4c565b60405180910390f35b6101d06103ec565b6040516101dd9190610b0c565b60405180910390f35b61020060048036038101906101fb9190610bc7565b61047e565b60405161020d9190610c22565b60405180910390f35b610230600480360381019061022b9190610bc7565b6104f5565b60405161023d9190610c22565b60405180910390f35b610260600480360381019061025b9190610d1e565b610518565b60405161026d9190610c4c565b60405180910390f35b60606003805461028590610d8d565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d8d565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610ded565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d8d565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d8d565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e93565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fb7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c4c565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90611023565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611147565b60405180910390fd5b6108e5838383610a72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111d9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a599190610c4c565b60405180910390a3610a6c848484610a77565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ab6578082015181840152602081019050610a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ade82610a7c565b610ae88185610a87565b9350610af8818560208601610a98565b610b0181610ac2565b840191505092915050565b60006020820190508181036000830152610b268184610ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5e82610b33565b9050919050565b610b6e81610b53565b8114610b7957600080fd5b50565b600081359050610b8b81610b65565b92915050565b6000819050919050565b610ba481610b91565b8114610baf57600080fd5b50565b600081359050610bc181610b9b565b92915050565b60008060408385031215610bde57610bdd610b2e565b5b6000610bec85828601610b7c565b9250506020610bfd85828601610bb2565b9150509250929050565b60008115159050919050565b610c1c81610c07565b82525050565b6000602082019050610c376000830184610c13565b92915050565b610c4681610b91565b82525050565b6000602082019050610c616000830184610c3d565b92915050565b600080600060608486031215610c8057610c7f610b2e565b5b6000610c8e86828701610b7c565b9350506020610c9f86828701610b7c565b9250506040610cb086828701610bb2565b9150509250925092565b600060ff82169050919050565b610cd081610cba565b82525050565b6000602082019050610ceb6000830184610cc7565b92915050565b600060208284031215610d0757610d06610b2e565b5b6000610d1584828501610b7c565b91505092915050565b60008060408385031215610d3557610d34610b2e565b5b6000610d4385828601610b7c565b9250506020610d5485828601610b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610da557607f821691505b602082108103610db857610db7610d5e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df882610b91565b9150610e0383610b91565b9250828201905080821115610e1b57610e1a610dbe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e7d602583610a87565b9150610e8882610e21565b604082019050919050565b60006020820190508181036000830152610eac81610e70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f0f602483610a87565b9150610f1a82610eb3565b604082019050919050565b60006020820190508181036000830152610f3e81610f02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602283610a87565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061100d601d83610a87565b915061101882610fd7565b602082019050919050565b6000602082019050818103600083015261103c81611000565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061109f602583610a87565b91506110aa82611043565b604082019050919050565b600060208201905081810360008301526110ce81611092565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611131602383610a87565b915061113c826110d5565b604082019050919050565b6000602082019050818103600083015261116081611124565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111c3602683610a87565b91506111ce82611167565b604082019050919050565b600060208201905081810360008301526111f2816111b6565b905091905056fea2646970667358221220cfa590969dc1fe52ec32dbe13f59185757e4c4868929d9f856f7b780f8d2e89764736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x17EC CODESIZE SUB DUP1 PUSH3 0x17EC DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x1F6 JUMP JUMPDEST DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0x48 SWAP2 SWAP1 PUSH3 0x4C6 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH3 0x5A SWAP2 SWAP1 PUSH3 0x4C6 JUMP JUMPDEST POP POP POP PUSH3 0x5AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH3 0xCC DUP3 PUSH3 0x81 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0xEE JUMPI PUSH3 0xED PUSH3 0x92 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103 PUSH3 0x63 JUMP JUMPDEST SWAP1 POP PUSH3 0x111 DUP3 DUP3 PUSH3 0xC1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x134 JUMPI PUSH3 0x133 PUSH3 0x92 JUMP JUMPDEST JUMPDEST PUSH3 0x13F DUP3 PUSH3 0x81 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x14F JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x18F PUSH3 0x189 DUP5 PUSH3 0x116 JUMP JUMPDEST PUSH3 0xF7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x1AE JUMPI PUSH3 0x1AD PUSH3 0x7C JUMP JUMPDEST JUMPDEST PUSH3 0x1BB DUP5 DUP3 DUP6 PUSH3 0x14C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1DB JUMPI PUSH3 0x1DA PUSH3 0x77 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x1ED DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x178 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x210 JUMPI PUSH3 0x20F PUSH3 0x6D JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x231 JUMPI PUSH3 0x230 PUSH3 0x72 JUMP JUMPDEST JUMPDEST PUSH3 0x23F DUP6 DUP3 DUP7 ADD PUSH3 0x1C3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x263 JUMPI PUSH3 0x262 PUSH3 0x72 JUMP JUMPDEST JUMPDEST PUSH3 0x271 DUP6 DUP3 DUP7 ADD PUSH3 0x1C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x2CE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x2E4 JUMPI PUSH3 0x2E3 PUSH3 0x286 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH3 0x34E PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x30F JUMP JUMPDEST PUSH3 0x35A DUP7 DUP4 PUSH3 0x30F JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3A7 PUSH3 0x3A1 PUSH3 0x39B DUP5 PUSH3 0x372 JUMP JUMPDEST PUSH3 0x37C JUMP JUMPDEST PUSH3 0x372 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x3C3 DUP4 PUSH3 0x386 JUMP JUMPDEST PUSH3 0x3DB PUSH3 0x3D2 DUP3 PUSH3 0x3AE JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x31C JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH3 0x3F2 PUSH3 0x3E3 JUMP JUMPDEST PUSH3 0x3FF DUP2 DUP5 DUP5 PUSH3 0x3B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x427 JUMPI PUSH3 0x41B PUSH1 0x0 DUP3 PUSH3 0x3E8 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x405 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x476 JUMPI PUSH3 0x440 DUP2 PUSH3 0x2EA JUMP JUMPDEST PUSH3 0x44B DUP5 PUSH3 0x2FF JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x45B JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x473 PUSH3 0x46A DUP6 PUSH3 0x2FF JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x404 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x49B PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x47B JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4B6 DUP4 DUP4 PUSH3 0x488 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4D1 DUP3 PUSH3 0x27B JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4ED JUMPI PUSH3 0x4EC PUSH3 0x92 JUMP JUMPDEST JUMPDEST PUSH3 0x4F9 DUP3 SLOAD PUSH3 0x2B5 JUMP JUMPDEST PUSH3 0x506 DUP3 DUP3 DUP6 PUSH3 0x42B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x53E JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x529 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x535 DUP6 DUP3 PUSH3 0x4A8 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x5A5 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x54E DUP7 PUSH3 0x2EA JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x578 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x551 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x598 JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x594 PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x488 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x122F DUP1 PUSH3 0x5BD PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x246 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x14A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE1 SWAP2 SWAP1 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x308 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x32B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x111 SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x134 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x12F SWAP2 SWAP1 PUSH2 0xC67 JUMP JUMPDEST PUSH2 0x335 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x141 SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x152 PUSH2 0x364 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0xCD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x182 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17D SWAP2 SWAP1 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18F SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1AD SWAP2 SWAP1 PUSH2 0xCF1 JUMP JUMPDEST PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x3EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DD SWAP2 SWAP1 PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x200 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FB SWAP2 SWAP1 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20D SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22B SWAP2 SWAP1 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x4F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x260 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25B SWAP2 SWAP1 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x518 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26D SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x285 SWAP1 PUSH2 0xD8D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2B1 SWAP1 PUSH2 0xD8D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2FE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2D3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2FE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2E1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x313 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH2 0x320 DUP2 DUP6 DUP6 PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x340 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH2 0x34D DUP6 DUP3 DUP6 PUSH2 0x770 JUMP JUMPDEST PUSH2 0x358 DUP6 DUP6 DUP6 PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x378 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH2 0x399 DUP2 DUP6 DUP6 PUSH2 0x38A DUP6 DUP10 PUSH2 0x518 JUMP JUMPDEST PUSH2 0x394 SWAP2 SWAP1 PUSH2 0xDED JUMP JUMPDEST PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x3FB SWAP1 PUSH2 0xD8D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x427 SWAP1 PUSH2 0xD8D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x474 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x449 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x474 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x457 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x489 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x497 DUP3 DUP7 PUSH2 0x518 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D3 SWAP1 PUSH2 0xE93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4E9 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x500 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH2 0x50D DUP2 DUP6 DUP6 PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x616 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP1 PUSH2 0xF25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x685 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x67C SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD PUSH2 0x763 SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77C DUP5 DUP5 PUSH2 0x518 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x7F6 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7DF SWAP1 PUSH2 0x1023 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7F5 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x5A7 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x86B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x862 SWAP1 PUSH2 0x10B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x8DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D1 SWAP1 PUSH2 0x1147 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8E5 DUP4 DUP4 DUP4 PUSH2 0xA72 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x96B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x962 SWAP1 PUSH2 0x11D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xA59 SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xA6C DUP5 DUP5 DUP5 PUSH2 0xA77 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAB6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xADE DUP3 PUSH2 0xA7C JUMP JUMPDEST PUSH2 0xAE8 DUP2 DUP6 PUSH2 0xA87 JUMP JUMPDEST SWAP4 POP PUSH2 0xAF8 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA98 JUMP JUMPDEST PUSH2 0xB01 DUP2 PUSH2 0xAC2 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB26 DUP2 DUP5 PUSH2 0xAD3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB5E DUP3 PUSH2 0xB33 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB6E DUP2 PUSH2 0xB53 JUMP JUMPDEST DUP2 EQ PUSH2 0xB79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB8B DUP2 PUSH2 0xB65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBA4 DUP2 PUSH2 0xB91 JUMP JUMPDEST DUP2 EQ PUSH2 0xBAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBC1 DUP2 PUSH2 0xB9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBDE JUMPI PUSH2 0xBDD PUSH2 0xB2E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xBEC DUP6 DUP3 DUP7 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBFD DUP6 DUP3 DUP7 ADD PUSH2 0xBB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC1C DUP2 PUSH2 0xC07 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC37 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC13 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC46 DUP2 PUSH2 0xB91 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC61 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC3D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC80 JUMPI PUSH2 0xC7F PUSH2 0xB2E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC8E DUP7 DUP3 DUP8 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC9F DUP7 DUP3 DUP8 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xCB0 DUP7 DUP3 DUP8 ADD PUSH2 0xBB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCD0 DUP2 PUSH2 0xCBA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xCEB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCC7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD07 JUMPI PUSH2 0xD06 PUSH2 0xB2E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD15 DUP5 DUP3 DUP6 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD35 JUMPI PUSH2 0xD34 PUSH2 0xB2E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD43 DUP6 DUP3 DUP7 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xD54 DUP6 DUP3 DUP7 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xDA5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xDB8 JUMPI PUSH2 0xDB7 PUSH2 0xD5E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDF8 DUP3 PUSH2 0xB91 JUMP JUMPDEST SWAP2 POP PUSH2 0xE03 DUP4 PUSH2 0xB91 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xE1B JUMPI PUSH2 0xE1A PUSH2 0xDBE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7D PUSH1 0x25 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0xE88 DUP3 PUSH2 0xE21 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xEAC DUP2 PUSH2 0xE70 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF0F PUSH1 0x24 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0xF1A DUP3 PUSH2 0xEB3 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF3E DUP2 PUSH2 0xF02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFA1 PUSH1 0x22 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0xFAC DUP3 PUSH2 0xF45 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xFD0 DUP2 PUSH2 0xF94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100D PUSH1 0x1D DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0x1018 DUP3 PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x103C DUP2 PUSH2 0x1000 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109F PUSH1 0x25 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0x10AA DUP3 PUSH2 0x1043 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x10CE DUP2 PUSH2 0x1092 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1131 PUSH1 0x23 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0x113C DUP3 PUSH2 0x10D5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1160 DUP2 PUSH2 0x1124 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11C3 PUSH1 0x26 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0x11CE DUP3 PUSH2 0x1167 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11F2 DUP2 PUSH2 0x11B6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCF 0xA5 SWAP1 SWAP7 SWAP14 0xC1 INVALID MSTORE 0xEC ORIGIN 0xDB 0xE1 EXTCODEHASH MSIZE XOR JUMPI JUMPI 0xE4 0xC4 DUP7 DUP10 0x29 0xD9 0xF8 JUMP 0xF7 0xB7 DUP1 0xF8 0xD2 0xE8 SWAP8 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"1401:11610:0:-:0;;;1976:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2050:5;2042;:13;;;;;;:::i;:::-;;2075:7;2065;:17;;;;;;:::i;:::-;;1976:113;;1401:11610;;7:75:5;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:246::-;1691:1;1701:113;1715:6;1712:1;1709:13;1701:113;;;1800:1;1795:3;1791:11;1785:18;1781:1;1776:3;1772:11;1765:39;1737:2;1734:1;1730:10;1725:15;;1701:113;;;1848:1;1839:6;1834:3;1830:16;1823:27;1672:184;1610:246;;;:::o;1862:434::-;1951:5;1976:66;1992:49;2034:6;1992:49;:::i;:::-;1976:66;:::i;:::-;1967:75;;2065:6;2058:5;2051:21;2103:4;2096:5;2092:16;2141:3;2132:6;2127:3;2123:16;2120:25;2117:112;;;2148:79;;:::i;:::-;2117:112;2238:52;2283:6;2278:3;2273;2238:52;:::i;:::-;1957:339;1862:434;;;;;:::o;2316:355::-;2383:5;2432:3;2425:4;2417:6;2413:17;2409:27;2399:122;;2440:79;;:::i;:::-;2399:122;2550:6;2544:13;2575:90;2661:3;2653:6;2646:4;2638:6;2634:17;2575:90;:::i;:::-;2566:99;;2389:282;2316:355;;;;:::o;2677:853::-;2776:6;2784;2833:2;2821:9;2812:7;2808:23;2804:32;2801:119;;;2839:79;;:::i;:::-;2801:119;2980:1;2969:9;2965:17;2959:24;3010:18;3002:6;2999:30;2996:117;;;3032:79;;:::i;:::-;2996:117;3137:74;3203:7;3194:6;3183:9;3179:22;3137:74;:::i;:::-;3127:84;;2930:291;3281:2;3270:9;3266:18;3260:25;3312:18;3304:6;3301:30;3298:117;;;3334:79;;:::i;:::-;3298:117;3439:74;3505:7;3496:6;3485:9;3481:22;3439:74;:::i;:::-;3429:84;;3231:292;2677:853;;;;;:::o;3536:99::-;3588:6;3622:5;3616:12;3606:22;;3536:99;;;:::o;3641:180::-;3689:77;3686:1;3679:88;3786:4;3783:1;3776:15;3810:4;3807:1;3800:15;3827:320;3871:6;3908:1;3902:4;3898:12;3888:22;;3955:1;3949:4;3945:12;3976:18;3966:81;;4032:4;4024:6;4020:17;4010:27;;3966:81;4094:2;4086:6;4083:14;4063:18;4060:38;4057:84;;4113:18;;:::i;:::-;4057:84;3878:269;3827:320;;;:::o;4153:141::-;4202:4;4225:3;4217:11;;4248:3;4245:1;4238:14;4282:4;4279:1;4269:18;4261:26;;4153:141;;;:::o;4300:93::-;4337:6;4384:2;4379;4372:5;4368:14;4364:23;4354:33;;4300:93;;;:::o;4399:107::-;4443:8;4493:5;4487:4;4483:16;4462:37;;4399:107;;;;:::o;4512:393::-;4581:6;4631:1;4619:10;4615:18;4654:97;4684:66;4673:9;4654:97;:::i;:::-;4772:39;4802:8;4791:9;4772:39;:::i;:::-;4760:51;;4844:4;4840:9;4833:5;4829:21;4820:30;;4893:4;4883:8;4879:19;4872:5;4869:30;4859:40;;4588:317;;4512:393;;;;;:::o;4911:77::-;4948:7;4977:5;4966:16;;4911:77;;;:::o;4994:60::-;5022:3;5043:5;5036:12;;4994:60;;;:::o;5060:142::-;5110:9;5143:53;5161:34;5170:24;5188:5;5170:24;:::i;:::-;5161:34;:::i;:::-;5143:53;:::i;:::-;5130:66;;5060:142;;;:::o;5208:75::-;5251:3;5272:5;5265:12;;5208:75;;;:::o;5289:269::-;5399:39;5430:7;5399:39;:::i;:::-;5460:91;5509:41;5533:16;5509:41;:::i;:::-;5501:6;5494:4;5488:11;5460:91;:::i;:::-;5454:4;5447:105;5365:193;5289:269;;;:::o;5564:73::-;5609:3;5564:73;:::o;5643:189::-;5720:32;;:::i;:::-;5761:65;5819:6;5811;5805:4;5761:65;:::i;:::-;5696:136;5643:189;;:::o;5838:186::-;5898:120;5915:3;5908:5;5905:14;5898:120;;;5969:39;6006:1;5999:5;5969:39;:::i;:::-;5942:1;5935:5;5931:13;5922:22;;5898:120;;;5838:186;;:::o;6030:543::-;6131:2;6126:3;6123:11;6120:446;;;6165:38;6197:5;6165:38;:::i;:::-;6249:29;6267:10;6249:29;:::i;:::-;6239:8;6235:44;6432:2;6420:10;6417:18;6414:49;;;6453:8;6438:23;;6414:49;6476:80;6532:22;6550:3;6532:22;:::i;:::-;6522:8;6518:37;6505:11;6476:80;:::i;:::-;6135:431;;6120:446;6030:543;;;:::o;6579:117::-;6633:8;6683:5;6677:4;6673:16;6652:37;;6579:117;;;;:::o;6702:169::-;6746:6;6779:51;6827:1;6823:6;6815:5;6812:1;6808:13;6779:51;:::i;:::-;6775:56;6860:4;6854;6850:15;6840:25;;6753:118;6702:169;;;;:::o;6876:295::-;6952:4;7098:29;7123:3;7117:4;7098:29;:::i;:::-;7090:37;;7160:3;7157:1;7153:11;7147:4;7144:21;7136:29;;6876:295;;;;:::o;7176:1395::-;7293:37;7326:3;7293:37;:::i;:::-;7395:18;7387:6;7384:30;7381:56;;;7417:18;;:::i;:::-;7381:56;7461:38;7493:4;7487:11;7461:38;:::i;:::-;7546:67;7606:6;7598;7592:4;7546:67;:::i;:::-;7640:1;7664:4;7651:17;;7696:2;7688:6;7685:14;7713:1;7708:618;;;;8370:1;8387:6;8384:77;;;8436:9;8431:3;8427:19;8421:26;8412:35;;8384:77;8487:67;8547:6;8540:5;8487:67;:::i;:::-;8481:4;8474:81;8343:222;7678:887;;7708:618;7760:4;7756:9;7748:6;7744:22;7794:37;7826:4;7794:37;:::i;:::-;7853:1;7867:208;7881:7;7878:1;7875:14;7867:208;;;7960:9;7955:3;7951:19;7945:26;7937:6;7930:42;8011:1;8003:6;7999:14;7989:24;;8058:2;8047:9;8043:18;8030:31;;7904:4;7901:1;7897:12;7892:17;;7867:208;;;8103:6;8094:7;8091:19;8088:179;;;8161:9;8156:3;8152:19;8146:26;8204:48;8246:4;8238:6;8234:17;8223:9;8204:48;:::i;:::-;8196:6;8189:64;8111:156;8088:179;8313:1;8309;8301:6;8297:14;8293:22;8287:4;8280:36;7715:611;;;7678:887;;7268:1303;;;7176:1395;;:::o;1401:11610:0:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_585":{"entryPoint":2679,"id":585,"parameterSlots":3,"returnSlots":0},"@_approve_520":{"entryPoint":1447,"id":520,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_574":{"entryPoint":2674,"id":574,"parameterSlots":3,"returnSlots":0},"@_msgSender_701":{"entryPoint":1439,"id":701,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_563":{"entryPoint":1904,"id":563,"parameterSlots":3,"returnSlots":0},"@_transfer_346":{"entryPoint":2044,"id":346,"parameterSlots":3,"returnSlots":0},"@allowance_141":{"entryPoint":1304,"id":141,"parameterSlots":2,"returnSlots":1},"@approve_166":{"entryPoint":776,"id":166,"parameterSlots":2,"returnSlots":1},"@balanceOf_98":{"entryPoint":932,"id":98,"parameterSlots":1,"returnSlots":1},"@decimals_74":{"entryPoint":868,"id":74,"parameterSlots":0,"returnSlots":1},"@decreaseAllowance_269":{"entryPoint":1150,"id":269,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_228":{"entryPoint":877,"id":228,"parameterSlots":2,"returnSlots":1},"@name_54":{"entryPoint":630,"id":54,"parameterSlots":0,"returnSlots":1},"@symbol_64":{"entryPoint":1004,"id":64,"parameterSlots":0,"returnSlots":1},"@totalSupply_84":{"entryPoint":811,"id":84,"parameterSlots":0,"returnSlots":1},"@transferFrom_199":{"entryPoint":821,"id":199,"parameterSlots":3,"returnSlots":1},"@transfer_123":{"entryPoint":1269,"id":123,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2940,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":2994,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3313,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3358,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3175,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3015,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":3091,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":2771,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack":{"entryPoint":4388,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack":{"entryPoint":3988,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack":{"entryPoint":4096,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack":{"entryPoint":4534,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack":{"entryPoint":4242,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack":{"entryPoint":3842,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack":{"entryPoint":3696,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":3133,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":3271,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":3106,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2828,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4423,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4023,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4131,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4569,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4277,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3877,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3731,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":3148,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":3286,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":2684,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":2695,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":3565,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":2899,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":3079,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2867,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":2961,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":3258,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2712,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":3469,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3518,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":3422,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2862,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2754,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f":{"entryPoint":4309,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029":{"entryPoint":3909,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe":{"entryPoint":4055,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6":{"entryPoint":4455,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea":{"entryPoint":4163,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208":{"entryPoint":3763,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8":{"entryPoint":3617,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2917,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":2971,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:13699:5","statements":[{"body":{"nodeType":"YulBlock","src":"66:40:5","statements":[{"nodeType":"YulAssignment","src":"77:22:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"93:5:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"87:5:5"},"nodeType":"YulFunctionCall","src":"87:12:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"77:6:5"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"49:5:5","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"59:6:5","type":""}],"src":"7:99:5"},{"body":{"nodeType":"YulBlock","src":"208:73:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"225:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"230:6:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"218:6:5"},"nodeType":"YulFunctionCall","src":"218:19:5"},"nodeType":"YulExpressionStatement","src":"218:19:5"},{"nodeType":"YulAssignment","src":"246:29:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"265:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"270:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"261:3:5"},"nodeType":"YulFunctionCall","src":"261:14:5"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"246:11:5"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"180:3:5","type":""},{"name":"length","nodeType":"YulTypedName","src":"185:6:5","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"196:11:5","type":""}],"src":"112:169:5"},{"body":{"nodeType":"YulBlock","src":"349:184:5","statements":[{"nodeType":"YulVariableDeclaration","src":"359:10:5","value":{"kind":"number","nodeType":"YulLiteral","src":"368:1:5","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"363:1:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"428:63:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"453:3:5"},{"name":"i","nodeType":"YulIdentifier","src":"458:1:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"449:3:5"},"nodeType":"YulFunctionCall","src":"449:11:5"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"472:3:5"},{"name":"i","nodeType":"YulIdentifier","src":"477:1:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"468:3:5"},"nodeType":"YulFunctionCall","src":"468:11:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"462:5:5"},"nodeType":"YulFunctionCall","src":"462:18:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"442:6:5"},"nodeType":"YulFunctionCall","src":"442:39:5"},"nodeType":"YulExpressionStatement","src":"442:39:5"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"389:1:5"},{"name":"length","nodeType":"YulIdentifier","src":"392:6:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"386:2:5"},"nodeType":"YulFunctionCall","src":"386:13:5"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"400:19:5","statements":[{"nodeType":"YulAssignment","src":"402:15:5","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"411:1:5"},{"kind":"number","nodeType":"YulLiteral","src":"414:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"407:3:5"},"nodeType":"YulFunctionCall","src":"407:10:5"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"402:1:5"}]}]},"pre":{"nodeType":"YulBlock","src":"382:3:5","statements":[]},"src":"378:113:5"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"511:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"516:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"507:3:5"},"nodeType":"YulFunctionCall","src":"507:16:5"},{"kind":"number","nodeType":"YulLiteral","src":"525:1:5","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"500:6:5"},"nodeType":"YulFunctionCall","src":"500:27:5"},"nodeType":"YulExpressionStatement","src":"500:27:5"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"331:3:5","type":""},{"name":"dst","nodeType":"YulTypedName","src":"336:3:5","type":""},{"name":"length","nodeType":"YulTypedName","src":"341:6:5","type":""}],"src":"287:246:5"},{"body":{"nodeType":"YulBlock","src":"587:54:5","statements":[{"nodeType":"YulAssignment","src":"597:38:5","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"615:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"622:2:5","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"611:3:5"},"nodeType":"YulFunctionCall","src":"611:14:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"631:2:5","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"627:3:5"},"nodeType":"YulFunctionCall","src":"627:7:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"607:3:5"},"nodeType":"YulFunctionCall","src":"607:28:5"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"597:6:5"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"570:5:5","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"580:6:5","type":""}],"src":"539:102:5"},{"body":{"nodeType":"YulBlock","src":"739:285:5","statements":[{"nodeType":"YulVariableDeclaration","src":"749:53:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"796:5:5"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"763:32:5"},"nodeType":"YulFunctionCall","src":"763:39:5"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"753:6:5","type":""}]},{"nodeType":"YulAssignment","src":"811:78:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"877:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"882:6:5"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"818:58:5"},"nodeType":"YulFunctionCall","src":"818:71:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"937:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"944:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"933:3:5"},"nodeType":"YulFunctionCall","src":"933:16:5"},{"name":"pos","nodeType":"YulIdentifier","src":"951:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"956:6:5"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"898:34:5"},"nodeType":"YulFunctionCall","src":"898:65:5"},"nodeType":"YulExpressionStatement","src":"898:65:5"},{"nodeType":"YulAssignment","src":"972:46:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"983:3:5"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1010:6:5"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"988:21:5"},"nodeType":"YulFunctionCall","src":"988:29:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"979:3:5"},"nodeType":"YulFunctionCall","src":"979:39:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"972:3:5"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"720:5:5","type":""},{"name":"pos","nodeType":"YulTypedName","src":"727:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"735:3:5","type":""}],"src":"647:377:5"},{"body":{"nodeType":"YulBlock","src":"1148:195:5","statements":[{"nodeType":"YulAssignment","src":"1158:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"1181:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1166:3:5"},"nodeType":"YulFunctionCall","src":"1166:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1158:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1205:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"1216:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1201:3:5"},"nodeType":"YulFunctionCall","src":"1201:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1224:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"1230:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1220:3:5"},"nodeType":"YulFunctionCall","src":"1220:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1194:6:5"},"nodeType":"YulFunctionCall","src":"1194:47:5"},"nodeType":"YulExpressionStatement","src":"1194:47:5"},{"nodeType":"YulAssignment","src":"1250:86:5","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1322:6:5"},{"name":"tail","nodeType":"YulIdentifier","src":"1331:4:5"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1258:63:5"},"nodeType":"YulFunctionCall","src":"1258:78:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1250:4:5"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1120:9:5","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1132:6:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1143:4:5","type":""}],"src":"1030:313:5"},{"body":{"nodeType":"YulBlock","src":"1389:35:5","statements":[{"nodeType":"YulAssignment","src":"1399:19:5","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1415:2:5","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1409:5:5"},"nodeType":"YulFunctionCall","src":"1409:9:5"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1399:6:5"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1382:6:5","type":""}],"src":"1349:75:5"},{"body":{"nodeType":"YulBlock","src":"1519:28:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1536:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1539:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1529:6:5"},"nodeType":"YulFunctionCall","src":"1529:12:5"},"nodeType":"YulExpressionStatement","src":"1529:12:5"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"1430:117:5"},{"body":{"nodeType":"YulBlock","src":"1642:28:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1659:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1662:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1652:6:5"},"nodeType":"YulFunctionCall","src":"1652:12:5"},"nodeType":"YulExpressionStatement","src":"1652:12:5"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"1553:117:5"},{"body":{"nodeType":"YulBlock","src":"1721:81:5","statements":[{"nodeType":"YulAssignment","src":"1731:65:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1746:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"1753:42:5","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1742:3:5"},"nodeType":"YulFunctionCall","src":"1742:54:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1731:7:5"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1703:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1713:7:5","type":""}],"src":"1676:126:5"},{"body":{"nodeType":"YulBlock","src":"1853:51:5","statements":[{"nodeType":"YulAssignment","src":"1863:35:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1892:5:5"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"1874:17:5"},"nodeType":"YulFunctionCall","src":"1874:24:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1863:7:5"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1835:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1845:7:5","type":""}],"src":"1808:96:5"},{"body":{"nodeType":"YulBlock","src":"1953:79:5","statements":[{"body":{"nodeType":"YulBlock","src":"2010:16:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2019:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2022:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2012:6:5"},"nodeType":"YulFunctionCall","src":"2012:12:5"},"nodeType":"YulExpressionStatement","src":"2012:12:5"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1976:5:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2001:5:5"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1983:17:5"},"nodeType":"YulFunctionCall","src":"1983:24:5"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1973:2:5"},"nodeType":"YulFunctionCall","src":"1973:35:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1966:6:5"},"nodeType":"YulFunctionCall","src":"1966:43:5"},"nodeType":"YulIf","src":"1963:63:5"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1946:5:5","type":""}],"src":"1910:122:5"},{"body":{"nodeType":"YulBlock","src":"2090:87:5","statements":[{"nodeType":"YulAssignment","src":"2100:29:5","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2122:6:5"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2109:12:5"},"nodeType":"YulFunctionCall","src":"2109:20:5"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2100:5:5"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2165:5:5"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2138:26:5"},"nodeType":"YulFunctionCall","src":"2138:33:5"},"nodeType":"YulExpressionStatement","src":"2138:33:5"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2068:6:5","type":""},{"name":"end","nodeType":"YulTypedName","src":"2076:3:5","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2084:5:5","type":""}],"src":"2038:139:5"},{"body":{"nodeType":"YulBlock","src":"2228:32:5","statements":[{"nodeType":"YulAssignment","src":"2238:16:5","value":{"name":"value","nodeType":"YulIdentifier","src":"2249:5:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2238:7:5"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2210:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2220:7:5","type":""}],"src":"2183:77:5"},{"body":{"nodeType":"YulBlock","src":"2309:79:5","statements":[{"body":{"nodeType":"YulBlock","src":"2366:16:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2375:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2378:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2368:6:5"},"nodeType":"YulFunctionCall","src":"2368:12:5"},"nodeType":"YulExpressionStatement","src":"2368:12:5"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2332:5:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2357:5:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2339:17:5"},"nodeType":"YulFunctionCall","src":"2339:24:5"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2329:2:5"},"nodeType":"YulFunctionCall","src":"2329:35:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2322:6:5"},"nodeType":"YulFunctionCall","src":"2322:43:5"},"nodeType":"YulIf","src":"2319:63:5"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2302:5:5","type":""}],"src":"2266:122:5"},{"body":{"nodeType":"YulBlock","src":"2446:87:5","statements":[{"nodeType":"YulAssignment","src":"2456:29:5","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2478:6:5"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2465:12:5"},"nodeType":"YulFunctionCall","src":"2465:20:5"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2456:5:5"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2521:5:5"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"2494:26:5"},"nodeType":"YulFunctionCall","src":"2494:33:5"},"nodeType":"YulExpressionStatement","src":"2494:33:5"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2424:6:5","type":""},{"name":"end","nodeType":"YulTypedName","src":"2432:3:5","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2440:5:5","type":""}],"src":"2394:139:5"},{"body":{"nodeType":"YulBlock","src":"2622:391:5","statements":[{"body":{"nodeType":"YulBlock","src":"2668:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2670:77:5"},"nodeType":"YulFunctionCall","src":"2670:79:5"},"nodeType":"YulExpressionStatement","src":"2670:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2643:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"2652:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2639:3:5"},"nodeType":"YulFunctionCall","src":"2639:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"2664:2:5","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2635:3:5"},"nodeType":"YulFunctionCall","src":"2635:32:5"},"nodeType":"YulIf","src":"2632:119:5"},{"nodeType":"YulBlock","src":"2761:117:5","statements":[{"nodeType":"YulVariableDeclaration","src":"2776:15:5","value":{"kind":"number","nodeType":"YulLiteral","src":"2790:1:5","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2780:6:5","type":""}]},{"nodeType":"YulAssignment","src":"2805:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2840:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"2851:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2836:3:5"},"nodeType":"YulFunctionCall","src":"2836:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2860:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2815:20:5"},"nodeType":"YulFunctionCall","src":"2815:53:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2805:6:5"}]}]},{"nodeType":"YulBlock","src":"2888:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"2903:16:5","value":{"kind":"number","nodeType":"YulLiteral","src":"2917:2:5","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2907:6:5","type":""}]},{"nodeType":"YulAssignment","src":"2933:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2968:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"2979:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2964:3:5"},"nodeType":"YulFunctionCall","src":"2964:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2988:7:5"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2943:20:5"},"nodeType":"YulFunctionCall","src":"2943:53:5"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2933:6:5"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2584:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2595:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2607:6:5","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2615:6:5","type":""}],"src":"2539:474:5"},{"body":{"nodeType":"YulBlock","src":"3061:48:5","statements":[{"nodeType":"YulAssignment","src":"3071:32:5","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3096:5:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3089:6:5"},"nodeType":"YulFunctionCall","src":"3089:13:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3082:6:5"},"nodeType":"YulFunctionCall","src":"3082:21:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3071:7:5"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3043:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3053:7:5","type":""}],"src":"3019:90:5"},{"body":{"nodeType":"YulBlock","src":"3174:50:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3191:3:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3211:5:5"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"3196:14:5"},"nodeType":"YulFunctionCall","src":"3196:21:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3184:6:5"},"nodeType":"YulFunctionCall","src":"3184:34:5"},"nodeType":"YulExpressionStatement","src":"3184:34:5"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3162:5:5","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3169:3:5","type":""}],"src":"3115:109:5"},{"body":{"nodeType":"YulBlock","src":"3322:118:5","statements":[{"nodeType":"YulAssignment","src":"3332:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3344:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"3355:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3340:3:5"},"nodeType":"YulFunctionCall","src":"3340:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3332:4:5"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3406:6:5"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3419:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"3430:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3415:3:5"},"nodeType":"YulFunctionCall","src":"3415:17:5"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3368:37:5"},"nodeType":"YulFunctionCall","src":"3368:65:5"},"nodeType":"YulExpressionStatement","src":"3368:65:5"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3294:9:5","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3306:6:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3317:4:5","type":""}],"src":"3230:210:5"},{"body":{"nodeType":"YulBlock","src":"3511:53:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3551:5:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3533:17:5"},"nodeType":"YulFunctionCall","src":"3533:24:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3521:6:5"},"nodeType":"YulFunctionCall","src":"3521:37:5"},"nodeType":"YulExpressionStatement","src":"3521:37:5"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3499:5:5","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3506:3:5","type":""}],"src":"3446:118:5"},{"body":{"nodeType":"YulBlock","src":"3668:124:5","statements":[{"nodeType":"YulAssignment","src":"3678:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3690:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"3701:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3686:3:5"},"nodeType":"YulFunctionCall","src":"3686:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3678:4:5"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3758:6:5"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3771:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"3782:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3767:3:5"},"nodeType":"YulFunctionCall","src":"3767:17:5"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"3714:43:5"},"nodeType":"YulFunctionCall","src":"3714:71:5"},"nodeType":"YulExpressionStatement","src":"3714:71:5"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3640:9:5","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3652:6:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3663:4:5","type":""}],"src":"3570:222:5"},{"body":{"nodeType":"YulBlock","src":"3898:519:5","statements":[{"body":{"nodeType":"YulBlock","src":"3944:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3946:77:5"},"nodeType":"YulFunctionCall","src":"3946:79:5"},"nodeType":"YulExpressionStatement","src":"3946:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3919:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"3928:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3915:3:5"},"nodeType":"YulFunctionCall","src":"3915:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"3940:2:5","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3911:3:5"},"nodeType":"YulFunctionCall","src":"3911:32:5"},"nodeType":"YulIf","src":"3908:119:5"},{"nodeType":"YulBlock","src":"4037:117:5","statements":[{"nodeType":"YulVariableDeclaration","src":"4052:15:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4066:1:5","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4056:6:5","type":""}]},{"nodeType":"YulAssignment","src":"4081:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4116:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"4127:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4112:3:5"},"nodeType":"YulFunctionCall","src":"4112:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4136:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4091:20:5"},"nodeType":"YulFunctionCall","src":"4091:53:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4081:6:5"}]}]},{"nodeType":"YulBlock","src":"4164:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"4179:16:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4193:2:5","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4183:6:5","type":""}]},{"nodeType":"YulAssignment","src":"4209:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4244:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"4255:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4240:3:5"},"nodeType":"YulFunctionCall","src":"4240:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4264:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4219:20:5"},"nodeType":"YulFunctionCall","src":"4219:53:5"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4209:6:5"}]}]},{"nodeType":"YulBlock","src":"4292:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"4307:16:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4321:2:5","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4311:6:5","type":""}]},{"nodeType":"YulAssignment","src":"4337:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4372:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"4383:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4368:3:5"},"nodeType":"YulFunctionCall","src":"4368:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4392:7:5"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4347:20:5"},"nodeType":"YulFunctionCall","src":"4347:53:5"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4337:6:5"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3852:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3863:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3875:6:5","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3883:6:5","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3891:6:5","type":""}],"src":"3798:619:5"},{"body":{"nodeType":"YulBlock","src":"4466:43:5","statements":[{"nodeType":"YulAssignment","src":"4476:27:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4491:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"4498:4:5","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4487:3:5"},"nodeType":"YulFunctionCall","src":"4487:16:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4476:7:5"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4448:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4458:7:5","type":""}],"src":"4423:86:5"},{"body":{"nodeType":"YulBlock","src":"4576:51:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4593:3:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4614:5:5"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"4598:15:5"},"nodeType":"YulFunctionCall","src":"4598:22:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4586:6:5"},"nodeType":"YulFunctionCall","src":"4586:35:5"},"nodeType":"YulExpressionStatement","src":"4586:35:5"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4564:5:5","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4571:3:5","type":""}],"src":"4515:112:5"},{"body":{"nodeType":"YulBlock","src":"4727:120:5","statements":[{"nodeType":"YulAssignment","src":"4737:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4749:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"4760:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4745:3:5"},"nodeType":"YulFunctionCall","src":"4745:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4737:4:5"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4813:6:5"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4826:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"4837:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4822:3:5"},"nodeType":"YulFunctionCall","src":"4822:17:5"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"4773:39:5"},"nodeType":"YulFunctionCall","src":"4773:67:5"},"nodeType":"YulExpressionStatement","src":"4773:67:5"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4699:9:5","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4711:6:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4722:4:5","type":""}],"src":"4633:214:5"},{"body":{"nodeType":"YulBlock","src":"4919:263:5","statements":[{"body":{"nodeType":"YulBlock","src":"4965:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4967:77:5"},"nodeType":"YulFunctionCall","src":"4967:79:5"},"nodeType":"YulExpressionStatement","src":"4967:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4940:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"4949:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4936:3:5"},"nodeType":"YulFunctionCall","src":"4936:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"4961:2:5","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4932:3:5"},"nodeType":"YulFunctionCall","src":"4932:32:5"},"nodeType":"YulIf","src":"4929:119:5"},{"nodeType":"YulBlock","src":"5058:117:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5073:15:5","value":{"kind":"number","nodeType":"YulLiteral","src":"5087:1:5","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5077:6:5","type":""}]},{"nodeType":"YulAssignment","src":"5102:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5137:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"5148:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5133:3:5"},"nodeType":"YulFunctionCall","src":"5133:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5157:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5112:20:5"},"nodeType":"YulFunctionCall","src":"5112:53:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5102:6:5"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4889:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4900:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4912:6:5","type":""}],"src":"4853:329:5"},{"body":{"nodeType":"YulBlock","src":"5271:391:5","statements":[{"body":{"nodeType":"YulBlock","src":"5317:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5319:77:5"},"nodeType":"YulFunctionCall","src":"5319:79:5"},"nodeType":"YulExpressionStatement","src":"5319:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5292:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"5301:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5288:3:5"},"nodeType":"YulFunctionCall","src":"5288:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"5313:2:5","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5284:3:5"},"nodeType":"YulFunctionCall","src":"5284:32:5"},"nodeType":"YulIf","src":"5281:119:5"},{"nodeType":"YulBlock","src":"5410:117:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5425:15:5","value":{"kind":"number","nodeType":"YulLiteral","src":"5439:1:5","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5429:6:5","type":""}]},{"nodeType":"YulAssignment","src":"5454:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5489:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"5500:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:5"},"nodeType":"YulFunctionCall","src":"5485:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5509:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5464:20:5"},"nodeType":"YulFunctionCall","src":"5464:53:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5454:6:5"}]}]},{"nodeType":"YulBlock","src":"5537:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5552:16:5","value":{"kind":"number","nodeType":"YulLiteral","src":"5566:2:5","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5556:6:5","type":""}]},{"nodeType":"YulAssignment","src":"5582:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5617:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"5628:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5613:3:5"},"nodeType":"YulFunctionCall","src":"5613:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5637:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5592:20:5"},"nodeType":"YulFunctionCall","src":"5592:53:5"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5582:6:5"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5233:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5244:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5256:6:5","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5264:6:5","type":""}],"src":"5188:474:5"},{"body":{"nodeType":"YulBlock","src":"5696:152:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5713:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5716:77:5","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5706:6:5"},"nodeType":"YulFunctionCall","src":"5706:88:5"},"nodeType":"YulExpressionStatement","src":"5706:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5810:1:5","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5813:4:5","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5803:6:5"},"nodeType":"YulFunctionCall","src":"5803:15:5"},"nodeType":"YulExpressionStatement","src":"5803:15:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5834:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5837:4:5","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5827:6:5"},"nodeType":"YulFunctionCall","src":"5827:15:5"},"nodeType":"YulExpressionStatement","src":"5827:15:5"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"5668:180:5"},{"body":{"nodeType":"YulBlock","src":"5905:269:5","statements":[{"nodeType":"YulAssignment","src":"5915:22:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5929:4:5"},{"kind":"number","nodeType":"YulLiteral","src":"5935:1:5","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"5925:3:5"},"nodeType":"YulFunctionCall","src":"5925:12:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5915:6:5"}]},{"nodeType":"YulVariableDeclaration","src":"5946:38:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5976:4:5"},{"kind":"number","nodeType":"YulLiteral","src":"5982:1:5","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5972:3:5"},"nodeType":"YulFunctionCall","src":"5972:12:5"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"5950:18:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"6023:51:5","statements":[{"nodeType":"YulAssignment","src":"6037:27:5","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6051:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"6059:4:5","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6047:3:5"},"nodeType":"YulFunctionCall","src":"6047:17:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6037:6:5"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6003:18:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5996:6:5"},"nodeType":"YulFunctionCall","src":"5996:26:5"},"nodeType":"YulIf","src":"5993:81:5"},{"body":{"nodeType":"YulBlock","src":"6126:42:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6140:16:5"},"nodeType":"YulFunctionCall","src":"6140:18:5"},"nodeType":"YulExpressionStatement","src":"6140:18:5"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6090:18:5"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6113:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"6121:2:5","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6110:2:5"},"nodeType":"YulFunctionCall","src":"6110:14:5"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6087:2:5"},"nodeType":"YulFunctionCall","src":"6087:38:5"},"nodeType":"YulIf","src":"6084:84:5"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"5889:4:5","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5898:6:5","type":""}],"src":"5854:320:5"},{"body":{"nodeType":"YulBlock","src":"6208:152:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6225:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6228:77:5","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6218:6:5"},"nodeType":"YulFunctionCall","src":"6218:88:5"},"nodeType":"YulExpressionStatement","src":"6218:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6322:1:5","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6325:4:5","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6315:6:5"},"nodeType":"YulFunctionCall","src":"6315:15:5"},"nodeType":"YulExpressionStatement","src":"6315:15:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6346:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6349:4:5","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6339:6:5"},"nodeType":"YulFunctionCall","src":"6339:15:5"},"nodeType":"YulExpressionStatement","src":"6339:15:5"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6180:180:5"},{"body":{"nodeType":"YulBlock","src":"6410:147:5","statements":[{"nodeType":"YulAssignment","src":"6420:25:5","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6443:1:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6425:17:5"},"nodeType":"YulFunctionCall","src":"6425:20:5"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"6420:1:5"}]},{"nodeType":"YulAssignment","src":"6454:25:5","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"6477:1:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6459:17:5"},"nodeType":"YulFunctionCall","src":"6459:20:5"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"6454:1:5"}]},{"nodeType":"YulAssignment","src":"6488:16:5","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6499:1:5"},{"name":"y","nodeType":"YulIdentifier","src":"6502:1:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6495:3:5"},"nodeType":"YulFunctionCall","src":"6495:9:5"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"6488:3:5"}]},{"body":{"nodeType":"YulBlock","src":"6528:22:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"6530:16:5"},"nodeType":"YulFunctionCall","src":"6530:18:5"},"nodeType":"YulExpressionStatement","src":"6530:18:5"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6520:1:5"},{"name":"sum","nodeType":"YulIdentifier","src":"6523:3:5"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6517:2:5"},"nodeType":"YulFunctionCall","src":"6517:10:5"},"nodeType":"YulIf","src":"6514:36:5"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"6397:1:5","type":""},{"name":"y","nodeType":"YulTypedName","src":"6400:1:5","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"6406:3:5","type":""}],"src":"6366:191:5"},{"body":{"nodeType":"YulBlock","src":"6669:118:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6691:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"6699:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6687:3:5"},"nodeType":"YulFunctionCall","src":"6687:14:5"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"6703:34:5","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6680:6:5"},"nodeType":"YulFunctionCall","src":"6680:58:5"},"nodeType":"YulExpressionStatement","src":"6680:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6759:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"6767:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6755:3:5"},"nodeType":"YulFunctionCall","src":"6755:15:5"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"6772:7:5","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6748:6:5"},"nodeType":"YulFunctionCall","src":"6748:32:5"},"nodeType":"YulExpressionStatement","src":"6748:32:5"}]},"name":"store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"6661:6:5","type":""}],"src":"6563:224:5"},{"body":{"nodeType":"YulBlock","src":"6939:220:5","statements":[{"nodeType":"YulAssignment","src":"6949:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7015:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"7020:2:5","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6956:58:5"},"nodeType":"YulFunctionCall","src":"6956:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6949:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7121:3:5"}],"functionName":{"name":"store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","nodeType":"YulIdentifier","src":"7032:88:5"},"nodeType":"YulFunctionCall","src":"7032:93:5"},"nodeType":"YulExpressionStatement","src":"7032:93:5"},{"nodeType":"YulAssignment","src":"7134:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7145:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"7150:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7141:3:5"},"nodeType":"YulFunctionCall","src":"7141:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7134:3:5"}]}]},"name":"abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6927:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6935:3:5","type":""}],"src":"6793:366:5"},{"body":{"nodeType":"YulBlock","src":"7336:248:5","statements":[{"nodeType":"YulAssignment","src":"7346:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7358:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"7369:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7354:3:5"},"nodeType":"YulFunctionCall","src":"7354:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7346:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7393:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"7404:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7389:3:5"},"nodeType":"YulFunctionCall","src":"7389:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7412:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"7418:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7408:3:5"},"nodeType":"YulFunctionCall","src":"7408:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7382:6:5"},"nodeType":"YulFunctionCall","src":"7382:47:5"},"nodeType":"YulExpressionStatement","src":"7382:47:5"},{"nodeType":"YulAssignment","src":"7438:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7572:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7446:124:5"},"nodeType":"YulFunctionCall","src":"7446:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7438:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7316:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7331:4:5","type":""}],"src":"7165:419:5"},{"body":{"nodeType":"YulBlock","src":"7696:117:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7718:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"7726:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7714:3:5"},"nodeType":"YulFunctionCall","src":"7714:14:5"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"7730:34:5","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7707:6:5"},"nodeType":"YulFunctionCall","src":"7707:58:5"},"nodeType":"YulExpressionStatement","src":"7707:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7786:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"7794:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7782:3:5"},"nodeType":"YulFunctionCall","src":"7782:15:5"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"7799:6:5","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7775:6:5"},"nodeType":"YulFunctionCall","src":"7775:31:5"},"nodeType":"YulExpressionStatement","src":"7775:31:5"}]},"name":"store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7688:6:5","type":""}],"src":"7590:223:5"},{"body":{"nodeType":"YulBlock","src":"7965:220:5","statements":[{"nodeType":"YulAssignment","src":"7975:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8041:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"8046:2:5","type":"","value":"36"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7982:58:5"},"nodeType":"YulFunctionCall","src":"7982:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7975:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8147:3:5"}],"functionName":{"name":"store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","nodeType":"YulIdentifier","src":"8058:88:5"},"nodeType":"YulFunctionCall","src":"8058:93:5"},"nodeType":"YulExpressionStatement","src":"8058:93:5"},{"nodeType":"YulAssignment","src":"8160:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8171:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"8176:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8167:3:5"},"nodeType":"YulFunctionCall","src":"8167:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8160:3:5"}]}]},"name":"abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7953:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7961:3:5","type":""}],"src":"7819:366:5"},{"body":{"nodeType":"YulBlock","src":"8362:248:5","statements":[{"nodeType":"YulAssignment","src":"8372:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8384:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"8395:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8380:3:5"},"nodeType":"YulFunctionCall","src":"8380:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8372:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8419:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"8430:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8415:3:5"},"nodeType":"YulFunctionCall","src":"8415:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"8438:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"8444:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8434:3:5"},"nodeType":"YulFunctionCall","src":"8434:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8408:6:5"},"nodeType":"YulFunctionCall","src":"8408:47:5"},"nodeType":"YulExpressionStatement","src":"8408:47:5"},{"nodeType":"YulAssignment","src":"8464:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"8598:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8472:124:5"},"nodeType":"YulFunctionCall","src":"8472:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8464:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8342:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8357:4:5","type":""}],"src":"8191:419:5"},{"body":{"nodeType":"YulBlock","src":"8722:115:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8744:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"8752:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8740:3:5"},"nodeType":"YulFunctionCall","src":"8740:14:5"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"8756:34:5","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8733:6:5"},"nodeType":"YulFunctionCall","src":"8733:58:5"},"nodeType":"YulExpressionStatement","src":"8733:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8812:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"8820:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8808:3:5"},"nodeType":"YulFunctionCall","src":"8808:15:5"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"8825:4:5","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8801:6:5"},"nodeType":"YulFunctionCall","src":"8801:29:5"},"nodeType":"YulExpressionStatement","src":"8801:29:5"}]},"name":"store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"8714:6:5","type":""}],"src":"8616:221:5"},{"body":{"nodeType":"YulBlock","src":"8989:220:5","statements":[{"nodeType":"YulAssignment","src":"8999:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9065:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"9070:2:5","type":"","value":"34"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9006:58:5"},"nodeType":"YulFunctionCall","src":"9006:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8999:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9171:3:5"}],"functionName":{"name":"store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","nodeType":"YulIdentifier","src":"9082:88:5"},"nodeType":"YulFunctionCall","src":"9082:93:5"},"nodeType":"YulExpressionStatement","src":"9082:93:5"},{"nodeType":"YulAssignment","src":"9184:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9195:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"9200:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9191:3:5"},"nodeType":"YulFunctionCall","src":"9191:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9184:3:5"}]}]},"name":"abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8977:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8985:3:5","type":""}],"src":"8843:366:5"},{"body":{"nodeType":"YulBlock","src":"9386:248:5","statements":[{"nodeType":"YulAssignment","src":"9396:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9408:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"9419:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9404:3:5"},"nodeType":"YulFunctionCall","src":"9404:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9396:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9443:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"9454:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9439:3:5"},"nodeType":"YulFunctionCall","src":"9439:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"9462:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"9468:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9458:3:5"},"nodeType":"YulFunctionCall","src":"9458:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9432:6:5"},"nodeType":"YulFunctionCall","src":"9432:47:5"},"nodeType":"YulExpressionStatement","src":"9432:47:5"},{"nodeType":"YulAssignment","src":"9488:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"9622:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9496:124:5"},"nodeType":"YulFunctionCall","src":"9496:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9488:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9366:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9381:4:5","type":""}],"src":"9215:419:5"},{"body":{"nodeType":"YulBlock","src":"9746:73:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9768:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"9776:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9764:3:5"},"nodeType":"YulFunctionCall","src":"9764:14:5"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"9780:31:5","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9757:6:5"},"nodeType":"YulFunctionCall","src":"9757:55:5"},"nodeType":"YulExpressionStatement","src":"9757:55:5"}]},"name":"store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"9738:6:5","type":""}],"src":"9640:179:5"},{"body":{"nodeType":"YulBlock","src":"9971:220:5","statements":[{"nodeType":"YulAssignment","src":"9981:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10047:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"10052:2:5","type":"","value":"29"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9988:58:5"},"nodeType":"YulFunctionCall","src":"9988:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9981:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10153:3:5"}],"functionName":{"name":"store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","nodeType":"YulIdentifier","src":"10064:88:5"},"nodeType":"YulFunctionCall","src":"10064:93:5"},"nodeType":"YulExpressionStatement","src":"10064:93:5"},{"nodeType":"YulAssignment","src":"10166:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10177:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"10182:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10173:3:5"},"nodeType":"YulFunctionCall","src":"10173:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10166:3:5"}]}]},"name":"abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9959:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9967:3:5","type":""}],"src":"9825:366:5"},{"body":{"nodeType":"YulBlock","src":"10368:248:5","statements":[{"nodeType":"YulAssignment","src":"10378:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10390:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"10401:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10386:3:5"},"nodeType":"YulFunctionCall","src":"10386:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10378:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10425:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"10436:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10421:3:5"},"nodeType":"YulFunctionCall","src":"10421:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10444:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"10450:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10440:3:5"},"nodeType":"YulFunctionCall","src":"10440:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10414:6:5"},"nodeType":"YulFunctionCall","src":"10414:47:5"},"nodeType":"YulExpressionStatement","src":"10414:47:5"},{"nodeType":"YulAssignment","src":"10470:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10604:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10478:124:5"},"nodeType":"YulFunctionCall","src":"10478:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10470:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10348:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10363:4:5","type":""}],"src":"10197:419:5"},{"body":{"nodeType":"YulBlock","src":"10728:118:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10750:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"10758:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10746:3:5"},"nodeType":"YulFunctionCall","src":"10746:14:5"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"10762:34:5","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10739:6:5"},"nodeType":"YulFunctionCall","src":"10739:58:5"},"nodeType":"YulExpressionStatement","src":"10739:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10818:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"10826:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10814:3:5"},"nodeType":"YulFunctionCall","src":"10814:15:5"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"10831:7:5","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10807:6:5"},"nodeType":"YulFunctionCall","src":"10807:32:5"},"nodeType":"YulExpressionStatement","src":"10807:32:5"}]},"name":"store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"10720:6:5","type":""}],"src":"10622:224:5"},{"body":{"nodeType":"YulBlock","src":"10998:220:5","statements":[{"nodeType":"YulAssignment","src":"11008:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11074:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"11079:2:5","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11015:58:5"},"nodeType":"YulFunctionCall","src":"11015:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11008:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11180:3:5"}],"functionName":{"name":"store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","nodeType":"YulIdentifier","src":"11091:88:5"},"nodeType":"YulFunctionCall","src":"11091:93:5"},"nodeType":"YulExpressionStatement","src":"11091:93:5"},{"nodeType":"YulAssignment","src":"11193:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11204:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"11209:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11200:3:5"},"nodeType":"YulFunctionCall","src":"11200:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11193:3:5"}]}]},"name":"abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10986:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10994:3:5","type":""}],"src":"10852:366:5"},{"body":{"nodeType":"YulBlock","src":"11395:248:5","statements":[{"nodeType":"YulAssignment","src":"11405:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11417:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"11428:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11413:3:5"},"nodeType":"YulFunctionCall","src":"11413:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11405:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11452:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"11463:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11448:3:5"},"nodeType":"YulFunctionCall","src":"11448:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11471:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"11477:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11467:3:5"},"nodeType":"YulFunctionCall","src":"11467:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11441:6:5"},"nodeType":"YulFunctionCall","src":"11441:47:5"},"nodeType":"YulExpressionStatement","src":"11441:47:5"},{"nodeType":"YulAssignment","src":"11497:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11631:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11505:124:5"},"nodeType":"YulFunctionCall","src":"11505:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11497:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11375:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11390:4:5","type":""}],"src":"11224:419:5"},{"body":{"nodeType":"YulBlock","src":"11755:116:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11777:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"11785:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11773:3:5"},"nodeType":"YulFunctionCall","src":"11773:14:5"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"11789:34:5","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11766:6:5"},"nodeType":"YulFunctionCall","src":"11766:58:5"},"nodeType":"YulExpressionStatement","src":"11766:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11845:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"11853:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11841:3:5"},"nodeType":"YulFunctionCall","src":"11841:15:5"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"11858:5:5","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11834:6:5"},"nodeType":"YulFunctionCall","src":"11834:30:5"},"nodeType":"YulExpressionStatement","src":"11834:30:5"}]},"name":"store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11747:6:5","type":""}],"src":"11649:222:5"},{"body":{"nodeType":"YulBlock","src":"12023:220:5","statements":[{"nodeType":"YulAssignment","src":"12033:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12099:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"12104:2:5","type":"","value":"35"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12040:58:5"},"nodeType":"YulFunctionCall","src":"12040:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12033:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12205:3:5"}],"functionName":{"name":"store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","nodeType":"YulIdentifier","src":"12116:88:5"},"nodeType":"YulFunctionCall","src":"12116:93:5"},"nodeType":"YulExpressionStatement","src":"12116:93:5"},{"nodeType":"YulAssignment","src":"12218:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12229:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"12234:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12225:3:5"},"nodeType":"YulFunctionCall","src":"12225:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12218:3:5"}]}]},"name":"abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12011:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12019:3:5","type":""}],"src":"11877:366:5"},{"body":{"nodeType":"YulBlock","src":"12420:248:5","statements":[{"nodeType":"YulAssignment","src":"12430:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12442:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"12453:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12438:3:5"},"nodeType":"YulFunctionCall","src":"12438:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12430:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12477:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"12488:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12473:3:5"},"nodeType":"YulFunctionCall","src":"12473:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12496:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"12502:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12492:3:5"},"nodeType":"YulFunctionCall","src":"12492:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12466:6:5"},"nodeType":"YulFunctionCall","src":"12466:47:5"},"nodeType":"YulExpressionStatement","src":"12466:47:5"},{"nodeType":"YulAssignment","src":"12522:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12656:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12530:124:5"},"nodeType":"YulFunctionCall","src":"12530:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12522:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12400:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12415:4:5","type":""}],"src":"12249:419:5"},{"body":{"nodeType":"YulBlock","src":"12780:119:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12802:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"12810:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12798:3:5"},"nodeType":"YulFunctionCall","src":"12798:14:5"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"12814:34:5","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12791:6:5"},"nodeType":"YulFunctionCall","src":"12791:58:5"},"nodeType":"YulExpressionStatement","src":"12791:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12870:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"12878:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12866:3:5"},"nodeType":"YulFunctionCall","src":"12866:15:5"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"12883:8:5","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12859:6:5"},"nodeType":"YulFunctionCall","src":"12859:33:5"},"nodeType":"YulExpressionStatement","src":"12859:33:5"}]},"name":"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12772:6:5","type":""}],"src":"12674:225:5"},{"body":{"nodeType":"YulBlock","src":"13051:220:5","statements":[{"nodeType":"YulAssignment","src":"13061:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13127:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"13132:2:5","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13068:58:5"},"nodeType":"YulFunctionCall","src":"13068:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13061:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13233:3:5"}],"functionName":{"name":"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","nodeType":"YulIdentifier","src":"13144:88:5"},"nodeType":"YulFunctionCall","src":"13144:93:5"},"nodeType":"YulExpressionStatement","src":"13144:93:5"},{"nodeType":"YulAssignment","src":"13246:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13257:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"13262:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13253:3:5"},"nodeType":"YulFunctionCall","src":"13253:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13246:3:5"}]}]},"name":"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13039:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13047:3:5","type":""}],"src":"12905:366:5"},{"body":{"nodeType":"YulBlock","src":"13448:248:5","statements":[{"nodeType":"YulAssignment","src":"13458:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13470:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"13481:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13466:3:5"},"nodeType":"YulFunctionCall","src":"13466:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13458:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13505:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"13516:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13501:3:5"},"nodeType":"YulFunctionCall","src":"13501:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13524:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"13530:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13520:3:5"},"nodeType":"YulFunctionCall","src":"13520:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13494:6:5"},"nodeType":"YulFunctionCall","src":"13494:47:5"},"nodeType":"YulExpressionStatement","src":"13494:47:5"},{"nodeType":"YulAssignment","src":"13550:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13684:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13558:124:5"},"nodeType":"YulFunctionCall","src":"13558:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13550:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13428:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13443:4:5","type":""}],"src":"13277:419:5"}]},"contents":"{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: decreased allowance below\")\n\n mstore(add(memPtr, 32), \" zero\")\n\n }\n\n function abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve from the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve to the zero addre\")\n\n mstore(add(memPtr, 32), \"ss\")\n\n }\n\n function abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: insufficient allowance\")\n\n }\n\n function abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer from the zero ad\")\n\n mstore(add(memPtr, 32), \"dress\")\n\n }\n\n function abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer to the zero addr\")\n\n mstore(add(memPtr, 32), \"ess\")\n\n }\n\n function abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds b\")\n\n mstore(add(memPtr, 32), \"alance\")\n\n }\n\n function abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":5,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b0c565b60405180910390f35b6100e660048036038101906100e19190610bc7565b610308565b6040516100f39190610c22565b60405180910390f35b61010461032b565b6040516101119190610c4c565b60405180910390f35b610134600480360381019061012f9190610c67565b610335565b6040516101419190610c22565b60405180910390f35b610152610364565b60405161015f9190610cd6565b60405180910390f35b610182600480360381019061017d9190610bc7565b61036d565b60405161018f9190610c22565b60405180910390f35b6101b260048036038101906101ad9190610cf1565b6103a4565b6040516101bf9190610c4c565b60405180910390f35b6101d06103ec565b6040516101dd9190610b0c565b60405180910390f35b61020060048036038101906101fb9190610bc7565b61047e565b60405161020d9190610c22565b60405180910390f35b610230600480360381019061022b9190610bc7565b6104f5565b60405161023d9190610c22565b60405180910390f35b610260600480360381019061025b9190610d1e565b610518565b60405161026d9190610c4c565b60405180910390f35b60606003805461028590610d8d565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d8d565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610ded565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d8d565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d8d565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e93565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fb7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c4c565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90611023565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611147565b60405180910390fd5b6108e5838383610a72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111d9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a599190610c4c565b60405180910390a3610a6c848484610a77565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ab6578082015181840152602081019050610a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ade82610a7c565b610ae88185610a87565b9350610af8818560208601610a98565b610b0181610ac2565b840191505092915050565b60006020820190508181036000830152610b268184610ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5e82610b33565b9050919050565b610b6e81610b53565b8114610b7957600080fd5b50565b600081359050610b8b81610b65565b92915050565b6000819050919050565b610ba481610b91565b8114610baf57600080fd5b50565b600081359050610bc181610b9b565b92915050565b60008060408385031215610bde57610bdd610b2e565b5b6000610bec85828601610b7c565b9250506020610bfd85828601610bb2565b9150509250929050565b60008115159050919050565b610c1c81610c07565b82525050565b6000602082019050610c376000830184610c13565b92915050565b610c4681610b91565b82525050565b6000602082019050610c616000830184610c3d565b92915050565b600080600060608486031215610c8057610c7f610b2e565b5b6000610c8e86828701610b7c565b9350506020610c9f86828701610b7c565b9250506040610cb086828701610bb2565b9150509250925092565b600060ff82169050919050565b610cd081610cba565b82525050565b6000602082019050610ceb6000830184610cc7565b92915050565b600060208284031215610d0757610d06610b2e565b5b6000610d1584828501610b7c565b91505092915050565b60008060408385031215610d3557610d34610b2e565b5b6000610d4385828601610b7c565b9250506020610d5485828601610b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610da557607f821691505b602082108103610db857610db7610d5e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df882610b91565b9150610e0383610b91565b9250828201905080821115610e1b57610e1a610dbe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e7d602583610a87565b9150610e8882610e21565b604082019050919050565b60006020820190508181036000830152610eac81610e70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f0f602483610a87565b9150610f1a82610eb3565b604082019050919050565b60006020820190508181036000830152610f3e81610f02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602283610a87565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061100d601d83610a87565b915061101882610fd7565b602082019050919050565b6000602082019050818103600083015261103c81611000565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061109f602583610a87565b91506110aa82611043565b604082019050919050565b600060208201905081810360008301526110ce81611092565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611131602383610a87565b915061113c826110d5565b604082019050919050565b6000602082019050818103600083015261116081611124565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111c3602683610a87565b91506111ce82611167565b604082019050919050565b600060208201905081810360008301526111f2816111b6565b905091905056fea2646970667358221220cfa590969dc1fe52ec32dbe13f59185757e4c4868929d9f856f7b780f8d2e89764736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x246 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x14A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE1 SWAP2 SWAP1 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x308 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x32B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x111 SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x134 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x12F SWAP2 SWAP1 PUSH2 0xC67 JUMP JUMPDEST PUSH2 0x335 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x141 SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x152 PUSH2 0x364 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0xCD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x182 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17D SWAP2 SWAP1 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x36D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18F SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1AD SWAP2 SWAP1 PUSH2 0xCF1 JUMP JUMPDEST PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x3EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DD SWAP2 SWAP1 PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x200 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FB SWAP2 SWAP1 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20D SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22B SWAP2 SWAP1 PUSH2 0xBC7 JUMP JUMPDEST PUSH2 0x4F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x260 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25B SWAP2 SWAP1 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x518 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26D SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x285 SWAP1 PUSH2 0xD8D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2B1 SWAP1 PUSH2 0xD8D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2FE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2D3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2FE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2E1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x313 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH2 0x320 DUP2 DUP6 DUP6 PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x340 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH2 0x34D DUP6 DUP3 DUP6 PUSH2 0x770 JUMP JUMPDEST PUSH2 0x358 DUP6 DUP6 DUP6 PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x378 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH2 0x399 DUP2 DUP6 DUP6 PUSH2 0x38A DUP6 DUP10 PUSH2 0x518 JUMP JUMPDEST PUSH2 0x394 SWAP2 SWAP1 PUSH2 0xDED JUMP JUMPDEST PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x3FB SWAP1 PUSH2 0xD8D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x427 SWAP1 PUSH2 0xD8D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x474 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x449 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x474 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x457 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x489 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x497 DUP3 DUP7 PUSH2 0x518 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D3 SWAP1 PUSH2 0xE93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4E9 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x5A7 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x500 PUSH2 0x59F JUMP JUMPDEST SWAP1 POP PUSH2 0x50D DUP2 DUP6 DUP6 PUSH2 0x7FC JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x616 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x60D SWAP1 PUSH2 0xF25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x685 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x67C SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD PUSH2 0x763 SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77C DUP5 DUP5 PUSH2 0x518 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x7F6 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7DF SWAP1 PUSH2 0x1023 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7F5 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x5A7 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x86B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x862 SWAP1 PUSH2 0x10B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x8DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D1 SWAP1 PUSH2 0x1147 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8E5 DUP4 DUP4 DUP4 PUSH2 0xA72 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x96B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x962 SWAP1 PUSH2 0x11D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xA59 SWAP2 SWAP1 PUSH2 0xC4C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xA6C DUP5 DUP5 DUP5 PUSH2 0xA77 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAB6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA9B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xADE DUP3 PUSH2 0xA7C JUMP JUMPDEST PUSH2 0xAE8 DUP2 DUP6 PUSH2 0xA87 JUMP JUMPDEST SWAP4 POP PUSH2 0xAF8 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA98 JUMP JUMPDEST PUSH2 0xB01 DUP2 PUSH2 0xAC2 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB26 DUP2 DUP5 PUSH2 0xAD3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB5E DUP3 PUSH2 0xB33 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB6E DUP2 PUSH2 0xB53 JUMP JUMPDEST DUP2 EQ PUSH2 0xB79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB8B DUP2 PUSH2 0xB65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBA4 DUP2 PUSH2 0xB91 JUMP JUMPDEST DUP2 EQ PUSH2 0xBAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBC1 DUP2 PUSH2 0xB9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBDE JUMPI PUSH2 0xBDD PUSH2 0xB2E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xBEC DUP6 DUP3 DUP7 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xBFD DUP6 DUP3 DUP7 ADD PUSH2 0xBB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC1C DUP2 PUSH2 0xC07 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC37 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC13 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC46 DUP2 PUSH2 0xB91 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC61 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC3D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC80 JUMPI PUSH2 0xC7F PUSH2 0xB2E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC8E DUP7 DUP3 DUP8 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xC9F DUP7 DUP3 DUP8 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xCB0 DUP7 DUP3 DUP8 ADD PUSH2 0xBB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCD0 DUP2 PUSH2 0xCBA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xCEB PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xCC7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD07 JUMPI PUSH2 0xD06 PUSH2 0xB2E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD15 DUP5 DUP3 DUP6 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD35 JUMPI PUSH2 0xD34 PUSH2 0xB2E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD43 DUP6 DUP3 DUP7 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xD54 DUP6 DUP3 DUP7 ADD PUSH2 0xB7C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xDA5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xDB8 JUMPI PUSH2 0xDB7 PUSH2 0xD5E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xDF8 DUP3 PUSH2 0xB91 JUMP JUMPDEST SWAP2 POP PUSH2 0xE03 DUP4 PUSH2 0xB91 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xE1B JUMPI PUSH2 0xE1A PUSH2 0xDBE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7D PUSH1 0x25 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0xE88 DUP3 PUSH2 0xE21 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xEAC DUP2 PUSH2 0xE70 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF0F PUSH1 0x24 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0xF1A DUP3 PUSH2 0xEB3 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF3E DUP2 PUSH2 0xF02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFA1 PUSH1 0x22 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0xFAC DUP3 PUSH2 0xF45 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xFD0 DUP2 PUSH2 0xF94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100D PUSH1 0x1D DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0x1018 DUP3 PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x103C DUP2 PUSH2 0x1000 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109F PUSH1 0x25 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0x10AA DUP3 PUSH2 0x1043 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x10CE DUP2 PUSH2 0x1092 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1131 PUSH1 0x23 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0x113C DUP3 PUSH2 0x10D5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1160 DUP2 PUSH2 0x1124 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11C3 PUSH1 0x26 DUP4 PUSH2 0xA87 JUMP JUMPDEST SWAP2 POP PUSH2 0x11CE DUP3 PUSH2 0x1167 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x11F2 DUP2 PUSH2 0x11B6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCF 0xA5 SWAP1 SWAP7 SWAP14 0xC1 INVALID MSTORE 0xEC ORIGIN 0xDB 0xE1 EXTCODEHASH MSIZE XOR JUMPI JUMPI 0xE4 0xC4 DUP7 DUP10 0x29 0xD9 0xF8 JUMP 0xF7 0xB7 DUP1 0xF8 0xD2 0xE8 SWAP8 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"1401:11610:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3242:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5190:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3091:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3406:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2365:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6592:427;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3727:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3974:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2154:98;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;4530:13;4546:12;:10;:12::i;:::-;4530:28;;4568:32;4577:5;4584:7;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;:::o;3242:106::-;3303:7;3329:12;;3322:19;;3242:106;:::o;5190:286::-;5317:4;5333:15;5351:12;:10;:12::i;:::-;5333:30;;5373:38;5389:4;5395:7;5404:6;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;5465:4;5458:11;;;5190:286;;;;;:::o;3091:91::-;3149:5;3173:2;3166:9;;3091:91;:::o;5871:234::-;5959:4;5975:13;5991:12;:10;:12::i;:::-;5975:28;;6013:64;6022:5;6029:7;6066:10;6038:25;6048:5;6055:7;6038:9;:25::i;:::-;:38;;;;:::i;:::-;6013:8;:64::i;:::-;6094:4;6087:11;;;5871:234;;;;:::o;3406:125::-;3480:7;3506:9;:18;3516:7;3506:18;;;;;;;;;;;;;;;;3499:25;;3406:125;;;:::o;2365:102::-;2421:13;2453:7;2446:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:102;:::o;6592:427::-;6685:4;6701:13;6717:12;:10;:12::i;:::-;6701:28;;6739:24;6766:25;6776:5;6783:7;6766:9;:25::i;:::-;6739:52;;6829:15;6809:16;:35;;6801:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;:::-;7008:4;7001:11;;;;6592:427;;;;:::o;3727:189::-;3806:4;3822:13;3838:12;:10;:12::i;:::-;3822:28;;3860;3870:5;3877:2;3881:6;3860:9;:28::i;:::-;3905:4;3898:11;;;3727:189;;;;:::o;3974:149::-;4063:7;4089:11;:18;4101:5;4089:18;;;;;;;;;;;;;;;:27;4108:7;4089:27;;;;;;;;;;;;;;;;4082:34;;3974:149;;;;:::o;640:96:3:-;693:7;719:10;712:17;;640:96;:::o;10504:370:0:-;10652:1;10635:19;;:5;:19;;;10627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10732:1;10713:21;;:7;:21;;;10705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10814:6;10784:11;:18;10796:5;10784:18;;;;;;;;;;;;;;;:27;10803:7;10784:27;;;;;;;;;;;;;;;:36;;;;10851:7;10835:32;;10844:5;10835:32;;;10860:6;10835:32;;;;;;:::i;:::-;;;;;;;;10504:370;;;:::o;11155:441::-;11285:24;11312:25;11322:5;11329:7;11312:9;:25::i;:::-;11285:52;;11371:17;11351:16;:37;11347:243;;11432:6;11412:16;:26;;11404:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11347:243;11275:321;11155:441;;;:::o;7473:818::-;7615:1;7599:18;;:4;:18;;;7591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7691:1;7677:16;;:2;:16;;;7669:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7744:38;7765:4;7771:2;7775:6;7744:20;:38::i;:::-;7793:19;7815:9;:15;7825:4;7815:15;;;;;;;;;;;;;;;;7793:37;;7863:6;7848:11;:21;;7840:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:6;7964:11;:20;7946:9;:15;7956:4;7946:15;;;;;;;;;;;;;;;:38;;;;8178:6;8161:9;:13;8171:2;8161:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8225:2;8210:26;;8219:4;8210:26;;;8229:6;8210:26;;;;;;:::i;:::-;;;;;;;;8247:37;8267:4;8273:2;8277:6;8247:19;:37::i;:::-;7581:710;7473:818;;;:::o;12180:121::-;;;;:::o;12889:120::-;;;;:::o;7:99:5:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:474::-;5256:6;5264;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5566:2;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5537:118;5188:474;;;;;:::o;5668:180::-;5716:77;5713:1;5706:88;5813:4;5810:1;5803:15;5837:4;5834:1;5827:15;5854:320;5898:6;5935:1;5929:4;5925:12;5915:22;;5982:1;5976:4;5972:12;6003:18;5993:81;;6059:4;6051:6;6047:17;6037:27;;5993:81;6121:2;6113:6;6110:14;6090:18;6087:38;6084:84;;6140:18;;:::i;:::-;6084:84;5905:269;5854:320;;;:::o;6180:180::-;6228:77;6225:1;6218:88;6325:4;6322:1;6315:15;6349:4;6346:1;6339:15;6366:191;6406:3;6425:20;6443:1;6425:20;:::i;:::-;6420:25;;6459:20;6477:1;6459:20;:::i;:::-;6454:25;;6502:1;6499;6495:9;6488:16;;6523:3;6520:1;6517:10;6514:36;;;6530:18;;:::i;:::-;6514:36;6366:191;;;;:::o;6563:224::-;6703:34;6699:1;6691:6;6687:14;6680:58;6772:7;6767:2;6759:6;6755:15;6748:32;6563:224;:::o;6793:366::-;6935:3;6956:67;7020:2;7015:3;6956:67;:::i;:::-;6949:74;;7032:93;7121:3;7032:93;:::i;:::-;7150:2;7145:3;7141:12;7134:19;;6793:366;;;:::o;7165:419::-;7331:4;7369:2;7358:9;7354:18;7346:26;;7418:9;7412:4;7408:20;7404:1;7393:9;7389:17;7382:47;7446:131;7572:4;7446:131;:::i;:::-;7438:139;;7165:419;;;:::o;7590:223::-;7730:34;7726:1;7718:6;7714:14;7707:58;7799:6;7794:2;7786:6;7782:15;7775:31;7590:223;:::o;7819:366::-;7961:3;7982:67;8046:2;8041:3;7982:67;:::i;:::-;7975:74;;8058:93;8147:3;8058:93;:::i;:::-;8176:2;8171:3;8167:12;8160:19;;7819:366;;;:::o;8191:419::-;8357:4;8395:2;8384:9;8380:18;8372:26;;8444:9;8438:4;8434:20;8430:1;8419:9;8415:17;8408:47;8472:131;8598:4;8472:131;:::i;:::-;8464:139;;8191:419;;;:::o;8616:221::-;8756:34;8752:1;8744:6;8740:14;8733:58;8825:4;8820:2;8812:6;8808:15;8801:29;8616:221;:::o;8843:366::-;8985:3;9006:67;9070:2;9065:3;9006:67;:::i;:::-;8999:74;;9082:93;9171:3;9082:93;:::i;:::-;9200:2;9195:3;9191:12;9184:19;;8843:366;;;:::o;9215:419::-;9381:4;9419:2;9408:9;9404:18;9396:26;;9468:9;9462:4;9458:20;9454:1;9443:9;9439:17;9432:47;9496:131;9622:4;9496:131;:::i;:::-;9488:139;;9215:419;;;:::o;9640:179::-;9780:31;9776:1;9768:6;9764:14;9757:55;9640:179;:::o;9825:366::-;9967:3;9988:67;10052:2;10047:3;9988:67;:::i;:::-;9981:74;;10064:93;10153:3;10064:93;:::i;:::-;10182:2;10177:3;10173:12;10166:19;;9825:366;;;:::o;10197:419::-;10363:4;10401:2;10390:9;10386:18;10378:26;;10450:9;10444:4;10440:20;10436:1;10425:9;10421:17;10414:47;10478:131;10604:4;10478:131;:::i;:::-;10470:139;;10197:419;;;:::o;10622:224::-;10762:34;10758:1;10750:6;10746:14;10739:58;10831:7;10826:2;10818:6;10814:15;10807:32;10622:224;:::o;10852:366::-;10994:3;11015:67;11079:2;11074:3;11015:67;:::i;:::-;11008:74;;11091:93;11180:3;11091:93;:::i;:::-;11209:2;11204:3;11200:12;11193:19;;10852:366;;;:::o;11224:419::-;11390:4;11428:2;11417:9;11413:18;11405:26;;11477:9;11471:4;11467:20;11463:1;11452:9;11448:17;11441:47;11505:131;11631:4;11505:131;:::i;:::-;11497:139;;11224:419;;;:::o;11649:222::-;11789:34;11785:1;11777:6;11773:14;11766:58;11858:5;11853:2;11845:6;11841:15;11834:30;11649:222;:::o;11877:366::-;12019:3;12040:67;12104:2;12099:3;12040:67;:::i;:::-;12033:74;;12116:93;12205:3;12116:93;:::i;:::-;12234:2;12229:3;12225:12;12218:19;;11877:366;;;:::o;12249:419::-;12415:4;12453:2;12442:9;12438:18;12430:26;;12502:9;12496:4;12492:20;12488:1;12477:9;12473:17;12466:47;12530:131;12656:4;12530:131;:::i;:::-;12522:139;;12249:419;;;:::o;12674:225::-;12814:34;12810:1;12802:6;12798:14;12791:58;12883:8;12878:2;12870:6;12866:15;12859:33;12674:225;:::o;12905:366::-;13047:3;13068:67;13132:2;13127:3;13068:67;:::i;:::-;13061:74;;13144:93;13233:3;13144:93;:::i;:::-;13262:2;13257:3;13253:12;13246:19;;12905:366;;;:::o;13277:419::-;13443:4;13481:2;13470:9;13466:18;13458:26;;13530:9;13524:4;13520:20;13516:1;13505:9;13501:17;13494:47;13558:131;13684:4;13558:131;:::i;:::-;13550:139;;13277:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"931000","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"infinite","balanceOf(address)":"2863","decimals()":"432","decreaseAllowance(address,uint256)":"infinite","increaseAllowance(address,uint256)":"infinite","name()":"infinite","symbol()":"infinite","totalSupply()":"2482","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"15","_approve(address,address,uint256)":"infinite","_beforeTokenTransfer(address,address,uint256)":"15","_burn(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_spendAllowance(address,address,uint256)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n mapping(address => uint256) private _balances;\\n\\n mapping(address => mapping(address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * The default value of {decimals} is 18. To select a different value for\\n * {decimals} you should overload it.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n * overridden;\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) public virtual override returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, amount);\\n _transfer(from, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, allowance(owner, spender) + addedValue);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n uint256 currentAllowance = allowance(owner, spender);\\n require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - subtractedValue);\\n }\\n\\n return true;\\n }\\n\\n /**\\n * @dev Moves `amount` of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {\\n require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, amount);\\n\\n uint256 fromBalance = _balances[from];\\n require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n unchecked {\\n _balances[from] = fromBalance - amount;\\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\\n // decrementing then incrementing.\\n _balances[to] += amount;\\n }\\n\\n emit Transfer(from, to, amount);\\n\\n _afterTokenTransfer(from, to, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply += amount;\\n unchecked {\\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\\n _balances[account] += amount;\\n }\\n emit Transfer(address(0), account, amount);\\n\\n _afterTokenTransfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n uint256 accountBalance = _balances[account];\\n require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[account] = accountBalance - amount;\\n // Overflow not possible: amount <= accountBalance <= totalSupply.\\n _totalSupply -= amount;\\n }\\n\\n emit Transfer(account, address(0), amount);\\n\\n _afterTokenTransfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(\\n address owner,\\n address spender,\\n uint256 amount\\n ) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n *\\n * Does not update the allowance amount in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Might emit an {Approval} event.\\n */\\n function _spendAllowance(\\n address owner,\\n address spender,\\n uint256 amount\\n ) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - amount);\\n }\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * will be transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * has been transferred to `to`.\\n * - when `from` is zero, `amount` tokens have been minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":15,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":21,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":23,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":25,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":27,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/mocks/MockUSDC.sol":{"MockUSDC":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Mock mintable USDC","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_44":{"entryPoint":null,"id":44,"parameterSlots":2,"returnSlots":0},"@_732":{"entryPoint":null,"id":732,"parameterSlots":0,"returnSlots":0},"@_afterTokenTransfer_585":{"entryPoint":568,"id":585,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_574":{"entryPoint":563,"id":574,"parameterSlots":3,"returnSlots":0},"@_mint_403":{"entryPoint":198,"id":403,"parameterSlots":2,"returnSlots":0},"abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack":{"entryPoint":1496,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":1675,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1535,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":1692,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_t_string_storage":{"entryPoint":731,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":573,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":1438,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":1616,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_string_storage":{"entryPoint":1052,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_uint256":{"entryPoint":867,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":1013,"id":null,"parameterSlots":2,"returnSlots":0},"convert_t_uint256_to_t_uint256":{"entryPoint":887,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1207,"id":null,"parameterSlots":2,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":752,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":678,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":1177,"id":null,"parameterSlots":2,"returnSlots":1},"identity":{"entryPoint":877,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":1145,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":1569,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":631,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":584,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":927,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":768,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":1132,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":985,"id":null,"parameterSlots":2,"returnSlots":0},"store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e":{"entryPoint":1455,"id":null,"parameterSlots":1,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":781,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":937,"id":null,"parameterSlots":3,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":980,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7125:5","statements":[{"body":{"nodeType":"YulBlock","src":"66:40:5","statements":[{"nodeType":"YulAssignment","src":"77:22:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"93:5:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"87:5:5"},"nodeType":"YulFunctionCall","src":"87:12:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"77:6:5"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"49:5:5","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"59:6:5","type":""}],"src":"7:99:5"},{"body":{"nodeType":"YulBlock","src":"140:152:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"157:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"160:77:5","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"150:6:5"},"nodeType":"YulFunctionCall","src":"150:88:5"},"nodeType":"YulExpressionStatement","src":"150:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"254:1:5","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"257:4:5","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"247:6:5"},"nodeType":"YulFunctionCall","src":"247:15:5"},"nodeType":"YulExpressionStatement","src":"247:15:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"278:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"281:4:5","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"271:6:5"},"nodeType":"YulFunctionCall","src":"271:15:5"},"nodeType":"YulExpressionStatement","src":"271:15:5"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"112:180:5"},{"body":{"nodeType":"YulBlock","src":"326:152:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"343:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"346:77:5","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"336:6:5"},"nodeType":"YulFunctionCall","src":"336:88:5"},"nodeType":"YulExpressionStatement","src":"336:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:5","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"443:4:5","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"433:6:5"},"nodeType":"YulFunctionCall","src":"433:15:5"},"nodeType":"YulExpressionStatement","src":"433:15:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"464:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"467:4:5","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"457:6:5"},"nodeType":"YulFunctionCall","src":"457:15:5"},"nodeType":"YulExpressionStatement","src":"457:15:5"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"298:180:5"},{"body":{"nodeType":"YulBlock","src":"535:269:5","statements":[{"nodeType":"YulAssignment","src":"545:22:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"559:4:5"},{"kind":"number","nodeType":"YulLiteral","src":"565:1:5","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"555:3:5"},"nodeType":"YulFunctionCall","src":"555:12:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"545:6:5"}]},{"nodeType":"YulVariableDeclaration","src":"576:38:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"606:4:5"},{"kind":"number","nodeType":"YulLiteral","src":"612:1:5","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"602:3:5"},"nodeType":"YulFunctionCall","src":"602:12:5"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"580:18:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"653:51:5","statements":[{"nodeType":"YulAssignment","src":"667:27:5","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"681:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"689:4:5","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"677:3:5"},"nodeType":"YulFunctionCall","src":"677:17:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"667:6:5"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"633:18:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"626:6:5"},"nodeType":"YulFunctionCall","src":"626:26:5"},"nodeType":"YulIf","src":"623:81:5"},{"body":{"nodeType":"YulBlock","src":"756:42:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"770:16:5"},"nodeType":"YulFunctionCall","src":"770:18:5"},"nodeType":"YulExpressionStatement","src":"770:18:5"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"720:18:5"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"743:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"751:2:5","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"740:2:5"},"nodeType":"YulFunctionCall","src":"740:14:5"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"717:2:5"},"nodeType":"YulFunctionCall","src":"717:38:5"},"nodeType":"YulIf","src":"714:84:5"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"519:4:5","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"528:6:5","type":""}],"src":"484:320:5"},{"body":{"nodeType":"YulBlock","src":"864:87:5","statements":[{"nodeType":"YulAssignment","src":"874:11:5","value":{"name":"ptr","nodeType":"YulIdentifier","src":"882:3:5"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"874:4:5"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"902:1:5","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"905:3:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"895:6:5"},"nodeType":"YulFunctionCall","src":"895:14:5"},"nodeType":"YulExpressionStatement","src":"895:14:5"},{"nodeType":"YulAssignment","src":"918:26:5","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"936:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"939:4:5","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"926:9:5"},"nodeType":"YulFunctionCall","src":"926:18:5"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"918:4:5"}]}]},"name":"array_dataslot_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"851:3:5","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"859:4:5","type":""}],"src":"810:141:5"},{"body":{"nodeType":"YulBlock","src":"1001:49:5","statements":[{"nodeType":"YulAssignment","src":"1011:33:5","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1029:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"1036:2:5","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1025:3:5"},"nodeType":"YulFunctionCall","src":"1025:14:5"},{"kind":"number","nodeType":"YulLiteral","src":"1041:2:5","type":"","value":"32"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"1021:3:5"},"nodeType":"YulFunctionCall","src":"1021:23:5"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1011:6:5"}]}]},"name":"divide_by_32_ceil","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"984:5:5","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"994:6:5","type":""}],"src":"957:93:5"},{"body":{"nodeType":"YulBlock","src":"1109:54:5","statements":[{"nodeType":"YulAssignment","src":"1119:37:5","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"1144:4:5"},{"name":"value","nodeType":"YulIdentifier","src":"1150:5:5"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1140:3:5"},"nodeType":"YulFunctionCall","src":"1140:16:5"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"1119:8:5"}]}]},"name":"shift_left_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"1084:4:5","type":""},{"name":"value","nodeType":"YulTypedName","src":"1090:5:5","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"1100:8:5","type":""}],"src":"1056:107:5"},{"body":{"nodeType":"YulBlock","src":"1245:317:5","statements":[{"nodeType":"YulVariableDeclaration","src":"1255:35:5","value":{"arguments":[{"name":"shiftBytes","nodeType":"YulIdentifier","src":"1276:10:5"},{"kind":"number","nodeType":"YulLiteral","src":"1288:1:5","type":"","value":"8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1272:3:5"},"nodeType":"YulFunctionCall","src":"1272:18:5"},"variables":[{"name":"shiftBits","nodeType":"YulTypedName","src":"1259:9:5","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1299:109:5","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"1330:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"1341:66:5","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"1311:18:5"},"nodeType":"YulFunctionCall","src":"1311:97:5"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"1303:4:5","type":""}]},{"nodeType":"YulAssignment","src":"1417:51:5","value":{"arguments":[{"name":"shiftBits","nodeType":"YulIdentifier","src":"1448:9:5"},{"name":"toInsert","nodeType":"YulIdentifier","src":"1459:8:5"}],"functionName":{"name":"shift_left_dynamic","nodeType":"YulIdentifier","src":"1429:18:5"},"nodeType":"YulFunctionCall","src":"1429:39:5"},"variableNames":[{"name":"toInsert","nodeType":"YulIdentifier","src":"1417:8:5"}]},{"nodeType":"YulAssignment","src":"1477:30:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1490:5:5"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"1501:4:5"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1497:3:5"},"nodeType":"YulFunctionCall","src":"1497:9:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1486:3:5"},"nodeType":"YulFunctionCall","src":"1486:21:5"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1477:5:5"}]},{"nodeType":"YulAssignment","src":"1516:40:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1529:5:5"},{"arguments":[{"name":"toInsert","nodeType":"YulIdentifier","src":"1540:8:5"},{"name":"mask","nodeType":"YulIdentifier","src":"1550:4:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1536:3:5"},"nodeType":"YulFunctionCall","src":"1536:19:5"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1526:2:5"},"nodeType":"YulFunctionCall","src":"1526:30:5"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1516:6:5"}]}]},"name":"update_byte_slice_dynamic32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1206:5:5","type":""},{"name":"shiftBytes","nodeType":"YulTypedName","src":"1213:10:5","type":""},{"name":"toInsert","nodeType":"YulTypedName","src":"1225:8:5","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"1238:6:5","type":""}],"src":"1169:393:5"},{"body":{"nodeType":"YulBlock","src":"1613:32:5","statements":[{"nodeType":"YulAssignment","src":"1623:16:5","value":{"name":"value","nodeType":"YulIdentifier","src":"1634:5:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1623:7:5"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1595:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1605:7:5","type":""}],"src":"1568:77:5"},{"body":{"nodeType":"YulBlock","src":"1683:28:5","statements":[{"nodeType":"YulAssignment","src":"1693:12:5","value":{"name":"value","nodeType":"YulIdentifier","src":"1700:5:5"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"1693:3:5"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1669:5:5","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"1679:3:5","type":""}],"src":"1651:60:5"},{"body":{"nodeType":"YulBlock","src":"1777:82:5","statements":[{"nodeType":"YulAssignment","src":"1787:66:5","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1827:17:5"},"nodeType":"YulFunctionCall","src":"1827:24:5"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"1818:8:5"},"nodeType":"YulFunctionCall","src":"1818:34:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1800:17:5"},"nodeType":"YulFunctionCall","src":"1800:53:5"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"1787:9:5"}]}]},"name":"convert_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1757:5:5","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"1767:9:5","type":""}],"src":"1717:142:5"},{"body":{"nodeType":"YulBlock","src":"1912:28:5","statements":[{"nodeType":"YulAssignment","src":"1922:12:5","value":{"name":"value","nodeType":"YulIdentifier","src":"1929:5:5"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"1922:3:5"}]}]},"name":"prepare_store_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1898:5:5","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"1908:3:5","type":""}],"src":"1865:75:5"},{"body":{"nodeType":"YulBlock","src":"2022:193:5","statements":[{"nodeType":"YulVariableDeclaration","src":"2032:63:5","value":{"arguments":[{"name":"value_0","nodeType":"YulIdentifier","src":"2087:7:5"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"2056:30:5"},"nodeType":"YulFunctionCall","src":"2056:39:5"},"variables":[{"name":"convertedValue_0","nodeType":"YulTypedName","src":"2036:16:5","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2111:4:5"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2151:4:5"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"2145:5:5"},"nodeType":"YulFunctionCall","src":"2145:11:5"},{"name":"offset","nodeType":"YulIdentifier","src":"2158:6:5"},{"arguments":[{"name":"convertedValue_0","nodeType":"YulIdentifier","src":"2190:16:5"}],"functionName":{"name":"prepare_store_t_uint256","nodeType":"YulIdentifier","src":"2166:23:5"},"nodeType":"YulFunctionCall","src":"2166:41:5"}],"functionName":{"name":"update_byte_slice_dynamic32","nodeType":"YulIdentifier","src":"2117:27:5"},"nodeType":"YulFunctionCall","src":"2117:91:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2104:6:5"},"nodeType":"YulFunctionCall","src":"2104:105:5"},"nodeType":"YulExpressionStatement","src":"2104:105:5"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"1999:4:5","type":""},{"name":"offset","nodeType":"YulTypedName","src":"2005:6:5","type":""},{"name":"value_0","nodeType":"YulTypedName","src":"2013:7:5","type":""}],"src":"1946:269:5"},{"body":{"nodeType":"YulBlock","src":"2270:24:5","statements":[{"nodeType":"YulAssignment","src":"2280:8:5","value":{"kind":"number","nodeType":"YulLiteral","src":"2287:1:5","type":"","value":"0"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"2280:3:5"}]}]},"name":"zero_value_for_split_t_uint256","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"2266:3:5","type":""}],"src":"2221:73:5"},{"body":{"nodeType":"YulBlock","src":"2353:136:5","statements":[{"nodeType":"YulVariableDeclaration","src":"2363:46:5","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nodeType":"YulIdentifier","src":"2377:30:5"},"nodeType":"YulFunctionCall","src":"2377:32:5"},"variables":[{"name":"zero_0","nodeType":"YulTypedName","src":"2367:6:5","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2462:4:5"},{"name":"offset","nodeType":"YulIdentifier","src":"2468:6:5"},{"name":"zero_0","nodeType":"YulIdentifier","src":"2476:6:5"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"2418:43:5"},"nodeType":"YulFunctionCall","src":"2418:65:5"},"nodeType":"YulExpressionStatement","src":"2418:65:5"}]},"name":"storage_set_to_zero_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2339:4:5","type":""},{"name":"offset","nodeType":"YulTypedName","src":"2345:6:5","type":""}],"src":"2300:189:5"},{"body":{"nodeType":"YulBlock","src":"2545:136:5","statements":[{"body":{"nodeType":"YulBlock","src":"2612:63:5","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2656:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"2663:1:5","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nodeType":"YulIdentifier","src":"2626:29:5"},"nodeType":"YulFunctionCall","src":"2626:39:5"},"nodeType":"YulExpressionStatement","src":"2626:39:5"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2565:5:5"},{"name":"end","nodeType":"YulIdentifier","src":"2572:3:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2562:2:5"},"nodeType":"YulFunctionCall","src":"2562:14:5"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2577:26:5","statements":[{"nodeType":"YulAssignment","src":"2579:22:5","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2592:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"2599:1:5","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2588:3:5"},"nodeType":"YulFunctionCall","src":"2588:13:5"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2579:5:5"}]}]},"pre":{"nodeType":"YulBlock","src":"2559:2:5","statements":[]},"src":"2555:120:5"}]},"name":"clear_storage_range_t_bytes1","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"2533:5:5","type":""},{"name":"end","nodeType":"YulTypedName","src":"2540:3:5","type":""}],"src":"2495:186:5"},{"body":{"nodeType":"YulBlock","src":"2766:464:5","statements":[{"body":{"nodeType":"YulBlock","src":"2792:431:5","statements":[{"nodeType":"YulVariableDeclaration","src":"2806:54:5","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2854:5:5"}],"functionName":{"name":"array_dataslot_t_string_storage","nodeType":"YulIdentifier","src":"2822:31:5"},"nodeType":"YulFunctionCall","src":"2822:38:5"},"variables":[{"name":"dataArea","nodeType":"YulTypedName","src":"2810:8:5","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2873:63:5","value":{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"2896:8:5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2924:10:5"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"2906:17:5"},"nodeType":"YulFunctionCall","src":"2906:29:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2892:3:5"},"nodeType":"YulFunctionCall","src":"2892:44:5"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2877:11:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"3093:27:5","statements":[{"nodeType":"YulAssignment","src":"3095:23:5","value":{"name":"dataArea","nodeType":"YulIdentifier","src":"3110:8:5"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"3095:11:5"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"3077:10:5"},{"kind":"number","nodeType":"YulLiteral","src":"3089:2:5","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3074:2:5"},"nodeType":"YulFunctionCall","src":"3074:18:5"},"nodeType":"YulIf","src":"3071:49:5"},{"expression":{"arguments":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"3162:11:5"},{"arguments":[{"name":"dataArea","nodeType":"YulIdentifier","src":"3179:8:5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"3207:3:5"}],"functionName":{"name":"divide_by_32_ceil","nodeType":"YulIdentifier","src":"3189:17:5"},"nodeType":"YulFunctionCall","src":"3189:22:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3175:3:5"},"nodeType":"YulFunctionCall","src":"3175:37:5"}],"functionName":{"name":"clear_storage_range_t_bytes1","nodeType":"YulIdentifier","src":"3133:28:5"},"nodeType":"YulFunctionCall","src":"3133:80:5"},"nodeType":"YulExpressionStatement","src":"3133:80:5"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2783:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"2788:2:5","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2780:2:5"},"nodeType":"YulFunctionCall","src":"2780:11:5"},"nodeType":"YulIf","src":"2777:446:5"}]},"name":"clean_up_bytearray_end_slots_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2742:5:5","type":""},{"name":"len","nodeType":"YulTypedName","src":"2749:3:5","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2754:10:5","type":""}],"src":"2687:543:5"},{"body":{"nodeType":"YulBlock","src":"3299:54:5","statements":[{"nodeType":"YulAssignment","src":"3309:37:5","value":{"arguments":[{"name":"bits","nodeType":"YulIdentifier","src":"3334:4:5"},{"name":"value","nodeType":"YulIdentifier","src":"3340:5:5"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3330:3:5"},"nodeType":"YulFunctionCall","src":"3330:16:5"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"3309:8:5"}]}]},"name":"shift_right_unsigned_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nodeType":"YulTypedName","src":"3274:4:5","type":""},{"name":"value","nodeType":"YulTypedName","src":"3280:5:5","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"3290:8:5","type":""}],"src":"3236:117:5"},{"body":{"nodeType":"YulBlock","src":"3410:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"3420:68:5","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3469:1:5","type":"","value":"8"},{"name":"bytes","nodeType":"YulIdentifier","src":"3472:5:5"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3465:3:5"},"nodeType":"YulFunctionCall","src":"3465:13:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3484:1:5","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3480:3:5"},"nodeType":"YulFunctionCall","src":"3480:6:5"}],"functionName":{"name":"shift_right_unsigned_dynamic","nodeType":"YulIdentifier","src":"3436:28:5"},"nodeType":"YulFunctionCall","src":"3436:51:5"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3432:3:5"},"nodeType":"YulFunctionCall","src":"3432:56:5"},"variables":[{"name":"mask","nodeType":"YulTypedName","src":"3424:4:5","type":""}]},{"nodeType":"YulAssignment","src":"3497:25:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3511:4:5"},{"name":"mask","nodeType":"YulIdentifier","src":"3517:4:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3507:3:5"},"nodeType":"YulFunctionCall","src":"3507:15:5"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3497:6:5"}]}]},"name":"mask_bytes_dynamic","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3387:4:5","type":""},{"name":"bytes","nodeType":"YulTypedName","src":"3393:5:5","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"3403:6:5","type":""}],"src":"3359:169:5"},{"body":{"nodeType":"YulBlock","src":"3614:214:5","statements":[{"nodeType":"YulAssignment","src":"3747:37:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3774:4:5"},{"name":"len","nodeType":"YulIdentifier","src":"3780:3:5"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"3755:18:5"},"nodeType":"YulFunctionCall","src":"3755:29:5"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"3747:4:5"}]},{"nodeType":"YulAssignment","src":"3793:29:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3804:4:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3814:1:5","type":"","value":"2"},{"name":"len","nodeType":"YulIdentifier","src":"3817:3:5"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3810:3:5"},"nodeType":"YulFunctionCall","src":"3810:11:5"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3801:2:5"},"nodeType":"YulFunctionCall","src":"3801:21:5"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"3793:4:5"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3595:4:5","type":""},{"name":"len","nodeType":"YulTypedName","src":"3601:3:5","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"3609:4:5","type":""}],"src":"3533:295:5"},{"body":{"nodeType":"YulBlock","src":"3925:1303:5","statements":[{"nodeType":"YulVariableDeclaration","src":"3936:51:5","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3983:3:5"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3950:32:5"},"nodeType":"YulFunctionCall","src":"3950:37:5"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"3940:6:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"4072:22:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4074:16:5"},"nodeType":"YulFunctionCall","src":"4074:18:5"},"nodeType":"YulExpressionStatement","src":"4074:18:5"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"4044:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"4052:18:5","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4041:2:5"},"nodeType":"YulFunctionCall","src":"4041:30:5"},"nodeType":"YulIf","src":"4038:56:5"},{"nodeType":"YulVariableDeclaration","src":"4104:52:5","value":{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4150:4:5"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"4144:5:5"},"nodeType":"YulFunctionCall","src":"4144:11:5"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"4118:25:5"},"nodeType":"YulFunctionCall","src":"4118:38:5"},"variables":[{"name":"oldLen","nodeType":"YulTypedName","src":"4108:6:5","type":""}]},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4249:4:5"},{"name":"oldLen","nodeType":"YulIdentifier","src":"4255:6:5"},{"name":"newLen","nodeType":"YulIdentifier","src":"4263:6:5"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_string_storage","nodeType":"YulIdentifier","src":"4203:45:5"},"nodeType":"YulFunctionCall","src":"4203:67:5"},"nodeType":"YulExpressionStatement","src":"4203:67:5"},{"nodeType":"YulVariableDeclaration","src":"4280:18:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4297:1:5","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"4284:9:5","type":""}]},{"nodeType":"YulAssignment","src":"4308:17:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4321:4:5","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"4308:9:5"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"4372:611:5","statements":[{"nodeType":"YulVariableDeclaration","src":"4386:37:5","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"4405:6:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4417:4:5","type":"","value":"0x1f"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4413:3:5"},"nodeType":"YulFunctionCall","src":"4413:9:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4401:3:5"},"nodeType":"YulFunctionCall","src":"4401:22:5"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"4390:7:5","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4437:51:5","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4483:4:5"}],"functionName":{"name":"array_dataslot_t_string_storage","nodeType":"YulIdentifier","src":"4451:31:5"},"nodeType":"YulFunctionCall","src":"4451:37:5"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"4441:6:5","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4501:10:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4510:1:5","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4505:1:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"4569:163:5","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"4594:6:5"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4612:3:5"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4617:9:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4608:3:5"},"nodeType":"YulFunctionCall","src":"4608:19:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4602:5:5"},"nodeType":"YulFunctionCall","src":"4602:26:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4587:6:5"},"nodeType":"YulFunctionCall","src":"4587:42:5"},"nodeType":"YulExpressionStatement","src":"4587:42:5"},{"nodeType":"YulAssignment","src":"4646:24:5","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"4660:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"4668:1:5","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4656:3:5"},"nodeType":"YulFunctionCall","src":"4656:14:5"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"4646:6:5"}]},{"nodeType":"YulAssignment","src":"4687:31:5","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"4704:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"4715:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4700:3:5"},"nodeType":"YulFunctionCall","src":"4700:18:5"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"4687:9:5"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4535:1:5"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"4538:7:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4532:2:5"},"nodeType":"YulFunctionCall","src":"4532:14:5"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4547:21:5","statements":[{"nodeType":"YulAssignment","src":"4549:17:5","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4558:1:5"},{"kind":"number","nodeType":"YulLiteral","src":"4561:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4554:3:5"},"nodeType":"YulFunctionCall","src":"4554:12:5"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4549:1:5"}]}]},"pre":{"nodeType":"YulBlock","src":"4528:3:5","statements":[]},"src":"4524:208:5"},{"body":{"nodeType":"YulBlock","src":"4768:156:5","statements":[{"nodeType":"YulVariableDeclaration","src":"4786:43:5","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4813:3:5"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4818:9:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4809:3:5"},"nodeType":"YulFunctionCall","src":"4809:19:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4803:5:5"},"nodeType":"YulFunctionCall","src":"4803:26:5"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"4790:9:5","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"4853:6:5"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"4880:9:5"},{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"4895:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"4903:4:5","type":"","value":"0x1f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4891:3:5"},"nodeType":"YulFunctionCall","src":"4891:17:5"}],"functionName":{"name":"mask_bytes_dynamic","nodeType":"YulIdentifier","src":"4861:18:5"},"nodeType":"YulFunctionCall","src":"4861:48:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4846:6:5"},"nodeType":"YulFunctionCall","src":"4846:64:5"},"nodeType":"YulExpressionStatement","src":"4846:64:5"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"4751:7:5"},{"name":"newLen","nodeType":"YulIdentifier","src":"4760:6:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4748:2:5"},"nodeType":"YulFunctionCall","src":"4748:19:5"},"nodeType":"YulIf","src":"4745:179:5"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4944:4:5"},{"arguments":[{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"4958:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"4966:1:5","type":"","value":"2"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"4954:3:5"},"nodeType":"YulFunctionCall","src":"4954:14:5"},{"kind":"number","nodeType":"YulLiteral","src":"4970:1:5","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4950:3:5"},"nodeType":"YulFunctionCall","src":"4950:22:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4937:6:5"},"nodeType":"YulFunctionCall","src":"4937:36:5"},"nodeType":"YulExpressionStatement","src":"4937:36:5"}]},"nodeType":"YulCase","src":"4365:618:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4370:1:5","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"5000:222:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5014:14:5","value":{"kind":"number","nodeType":"YulLiteral","src":"5027:1:5","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5018:5:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"5051:67:5","statements":[{"nodeType":"YulAssignment","src":"5069:35:5","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5088:3:5"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"5093:9:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5084:3:5"},"nodeType":"YulFunctionCall","src":"5084:19:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5078:5:5"},"nodeType":"YulFunctionCall","src":"5078:26:5"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5069:5:5"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"5044:6:5"},"nodeType":"YulIf","src":"5041:77:5"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"5138:4:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5197:5:5"},{"name":"newLen","nodeType":"YulIdentifier","src":"5204:6:5"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"5144:52:5"},"nodeType":"YulFunctionCall","src":"5144:67:5"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"5131:6:5"},"nodeType":"YulFunctionCall","src":"5131:81:5"},"nodeType":"YulExpressionStatement","src":"5131:81:5"}]},"nodeType":"YulCase","src":"4992:230:5","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"4345:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"4353:2:5","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4342:2:5"},"nodeType":"YulFunctionCall","src":"4342:14:5"},"nodeType":"YulSwitch","src":"4335:887:5"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"3914:4:5","type":""},{"name":"src","nodeType":"YulTypedName","src":"3920:3:5","type":""}],"src":"3833:1395:5"},{"body":{"nodeType":"YulBlock","src":"5330:73:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5347:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"5352:6:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5340:6:5"},"nodeType":"YulFunctionCall","src":"5340:19:5"},"nodeType":"YulExpressionStatement","src":"5340:19:5"},{"nodeType":"YulAssignment","src":"5368:29:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5387:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"5392:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5383:3:5"},"nodeType":"YulFunctionCall","src":"5383:14:5"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5368:11:5"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5302:3:5","type":""},{"name":"length","nodeType":"YulTypedName","src":"5307:6:5","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5318:11:5","type":""}],"src":"5234:169:5"},{"body":{"nodeType":"YulBlock","src":"5515:75:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5537:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"5545:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5533:3:5"},"nodeType":"YulFunctionCall","src":"5533:14:5"},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"5549:33:5","type":"","value":"ERC20: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5526:6:5"},"nodeType":"YulFunctionCall","src":"5526:57:5"},"nodeType":"YulExpressionStatement","src":"5526:57:5"}]},"name":"store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5507:6:5","type":""}],"src":"5409:181:5"},{"body":{"nodeType":"YulBlock","src":"5742:220:5","statements":[{"nodeType":"YulAssignment","src":"5752:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5818:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"5823:2:5","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"5759:58:5"},"nodeType":"YulFunctionCall","src":"5759:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5752:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5924:3:5"}],"functionName":{"name":"store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","nodeType":"YulIdentifier","src":"5835:88:5"},"nodeType":"YulFunctionCall","src":"5835:93:5"},"nodeType":"YulExpressionStatement","src":"5835:93:5"},{"nodeType":"YulAssignment","src":"5937:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5948:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"5953:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5944:3:5"},"nodeType":"YulFunctionCall","src":"5944:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5937:3:5"}]}]},"name":"abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5730:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5738:3:5","type":""}],"src":"5596:366:5"},{"body":{"nodeType":"YulBlock","src":"6139:248:5","statements":[{"nodeType":"YulAssignment","src":"6149:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6161:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"6172:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6157:3:5"},"nodeType":"YulFunctionCall","src":"6157:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6149:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6196:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"6207:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6192:3:5"},"nodeType":"YulFunctionCall","src":"6192:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"6215:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"6221:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6211:3:5"},"nodeType":"YulFunctionCall","src":"6211:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6185:6:5"},"nodeType":"YulFunctionCall","src":"6185:47:5"},"nodeType":"YulExpressionStatement","src":"6185:47:5"},{"nodeType":"YulAssignment","src":"6241:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"6375:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6249:124:5"},"nodeType":"YulFunctionCall","src":"6249:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6241:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6119:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6134:4:5","type":""}],"src":"5968:419:5"},{"body":{"nodeType":"YulBlock","src":"6421:152:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6438:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6441:77:5","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6431:6:5"},"nodeType":"YulFunctionCall","src":"6431:88:5"},"nodeType":"YulExpressionStatement","src":"6431:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6535:1:5","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6538:4:5","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6528:6:5"},"nodeType":"YulFunctionCall","src":"6528:15:5"},"nodeType":"YulExpressionStatement","src":"6528:15:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6559:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6562:4:5","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6552:6:5"},"nodeType":"YulFunctionCall","src":"6552:15:5"},"nodeType":"YulExpressionStatement","src":"6552:15:5"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6393:180:5"},{"body":{"nodeType":"YulBlock","src":"6623:147:5","statements":[{"nodeType":"YulAssignment","src":"6633:25:5","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6656:1:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6638:17:5"},"nodeType":"YulFunctionCall","src":"6638:20:5"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"6633:1:5"}]},{"nodeType":"YulAssignment","src":"6667:25:5","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"6690:1:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6672:17:5"},"nodeType":"YulFunctionCall","src":"6672:20:5"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"6667:1:5"}]},{"nodeType":"YulAssignment","src":"6701:16:5","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6712:1:5"},{"name":"y","nodeType":"YulIdentifier","src":"6715:1:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6708:3:5"},"nodeType":"YulFunctionCall","src":"6708:9:5"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"6701:3:5"}]},{"body":{"nodeType":"YulBlock","src":"6741:22:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"6743:16:5"},"nodeType":"YulFunctionCall","src":"6743:18:5"},"nodeType":"YulExpressionStatement","src":"6743:18:5"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6733:1:5"},{"name":"sum","nodeType":"YulIdentifier","src":"6736:3:5"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6730:2:5"},"nodeType":"YulFunctionCall","src":"6730:10:5"},"nodeType":"YulIf","src":"6727:36:5"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"6610:1:5","type":""},{"name":"y","nodeType":"YulTypedName","src":"6613:1:5","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"6619:3:5","type":""}],"src":"6579:191:5"},{"body":{"nodeType":"YulBlock","src":"6841:53:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6858:3:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6881:5:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6863:17:5"},"nodeType":"YulFunctionCall","src":"6863:24:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6851:6:5"},"nodeType":"YulFunctionCall","src":"6851:37:5"},"nodeType":"YulExpressionStatement","src":"6851:37:5"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6829:5:5","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6836:3:5","type":""}],"src":"6776:118:5"},{"body":{"nodeType":"YulBlock","src":"6998:124:5","statements":[{"nodeType":"YulAssignment","src":"7008:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7020:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"7031:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7016:3:5"},"nodeType":"YulFunctionCall","src":"7016:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7008:4:5"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7088:6:5"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7101:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"7112:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7097:3:5"},"nodeType":"YulFunctionCall","src":"7097:17:5"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"7044:43:5"},"nodeType":"YulFunctionCall","src":"7044:71:5"},"nodeType":"YulExpressionStatement","src":"7044:71:5"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6970:9:5","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6982:6:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6993:4:5","type":""}],"src":"6900:222:5"}]},"contents":"{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: mint to the zero address\")\n\n }\n\n function abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":5,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040518060400160405280600881526020017f4d6f636b554453430000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d5553444300000000000000000000000000000000000000000000000000000081525081600390816200008f9190620004b7565b508060049081620000a19190620004b7565b505050620000c03369d3c21bcecceda1000000620000c660201b60201c565b620006b9565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000138576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012f90620005ff565b60405180910390fd5b6200014c600083836200023360201b60201c565b806002600082825462000160919062000650565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200021391906200069c565b60405180910390a36200022f600083836200023860201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002bf57607f821691505b602082108103620002d557620002d462000277565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200033f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000300565b6200034b868362000300565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000398620003926200038c8462000363565b6200036d565b62000363565b9050919050565b6000819050919050565b620003b48362000377565b620003cc620003c3826200039f565b8484546200030d565b825550505050565b600090565b620003e3620003d4565b620003f0818484620003a9565b505050565b5b8181101562000418576200040c600082620003d9565b600181019050620003f6565b5050565b601f82111562000467576200043181620002db565b6200043c84620002f0565b810160208510156200044c578190505b620004646200045b85620002f0565b830182620003f5565b50505b505050565b600082821c905092915050565b60006200048c600019846008026200046c565b1980831691505092915050565b6000620004a7838362000479565b9150826002028217905092915050565b620004c2826200023d565b67ffffffffffffffff811115620004de57620004dd62000248565b5b620004ea8254620002a6565b620004f78282856200041c565b600060209050601f8311600181146200052f57600084156200051a578287015190505b62000526858262000499565b86555062000596565b601f1984166200053f86620002db565b60005b82811015620005695784890151825560018201915060208501945060208101905062000542565b8683101562000589578489015162000585601f89168262000479565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005e7601f836200059e565b9150620005f482620005af565b602082019050919050565b600060208201905081810360008301526200061a81620005d8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200065d8262000363565b91506200066a8362000363565b925082820190508082111562000685576200068462000621565b5b92915050565b620006968162000363565b82525050565b6000602082019050620006b360008301846200068b565b92915050565b61187580620006c96000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d681461024d578063a457c2d714610269578063a9059cbb14610299578063dd62ed3e146102c9576100ea565b806370a08231146101f557806395d89b41146102255780639975038c14610243576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806342966c68146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102f9565b6040516101049190610f29565b60405180910390f35b61012760048036038101906101229190610fe4565b61038b565b604051610134919061103f565b60405180910390f35b6101456103ae565b6040516101529190611069565b60405180910390f35b61017560048036038101906101709190611084565b6103b8565b604051610182919061103f565b60405180910390f35b6101936103e7565b6040516101a091906110f3565b60405180910390f35b6101c360048036038101906101be9190610fe4565b6103f0565b6040516101d0919061103f565b60405180910390f35b6101f360048036038101906101ee919061110e565b610427565b005b61020f600480360381019061020a919061113b565b610434565b60405161021c9190611069565b60405180910390f35b61022d61047c565b60405161023a9190610f29565b60405180910390f35b61024b61050e565b005b6102676004803603810190610262919061110e565b61056b565b005b610283600480360381019061027e9190610fe4565b610578565b604051610290919061103f565b60405180910390f35b6102b360048036038101906102ae9190610fe4565b6105ef565b6040516102c0919061103f565b60405180910390f35b6102e360048036038101906102de9190611168565b610612565b6040516102f09190611069565b60405180910390f35b606060038054610308906111d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610334906111d7565b80156103815780601f1061035657610100808354040283529160200191610381565b820191906000526020600020905b81548152906001019060200180831161036457829003601f168201915b5050505050905090565b600080610396610699565b90506103a38185856106a1565b600191505092915050565b6000600254905090565b6000806103c3610699565b90506103d085828561086a565b6103db8585856108f6565b60019150509392505050565b60006012905090565b6000806103fb610699565b905061041c81858561040d8589610612565b6104179190611237565b6106a1565b600191505092915050565b6104313382610b6c565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461048b906111d7565b80601f01602080910402602001604051908101604052809291908181526020018280546104b7906111d7565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061051933610434565b90506000811161055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906112b7565b60405180910390fd5b6105683382610b6c565b50565b6105753382610d39565b50565b600080610583610699565b905060006105918286610612565b9050838110156105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90611349565b60405180910390fd5b6105e382868684036106a1565b60019250505092915050565b6000806105fa610699565b90506106078185856108f6565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906113db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107769061146d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161085d9190611069565b60405180910390a3505050565b60006108768484610612565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108f057818110156108e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d9906114d9565b60405180910390fd5b6108ef84848484036106a1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c9061156b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb906115fd565b60405180910390fd5b6109df838383610e8f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c9061168f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b539190611069565b60405180910390a3610b66848484610e94565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290611721565b60405180910390fd5b610be782600083610e8f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c64906117b3565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d209190611069565b60405180910390a3610d3483600084610e94565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f9061181f565b60405180910390fd5b610db460008383610e8f565b8060026000828254610dc69190611237565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e779190611069565b60405180910390a3610e8b60008383610e94565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ed3578082015181840152602081019050610eb8565b60008484015250505050565b6000601f19601f8301169050919050565b6000610efb82610e99565b610f058185610ea4565b9350610f15818560208601610eb5565b610f1e81610edf565b840191505092915050565b60006020820190508181036000830152610f438184610ef0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f7b82610f50565b9050919050565b610f8b81610f70565b8114610f9657600080fd5b50565b600081359050610fa881610f82565b92915050565b6000819050919050565b610fc181610fae565b8114610fcc57600080fd5b50565b600081359050610fde81610fb8565b92915050565b60008060408385031215610ffb57610ffa610f4b565b5b600061100985828601610f99565b925050602061101a85828601610fcf565b9150509250929050565b60008115159050919050565b61103981611024565b82525050565b60006020820190506110546000830184611030565b92915050565b61106381610fae565b82525050565b600060208201905061107e600083018461105a565b92915050565b60008060006060848603121561109d5761109c610f4b565b5b60006110ab86828701610f99565b93505060206110bc86828701610f99565b92505060406110cd86828701610fcf565b9150509250925092565b600060ff82169050919050565b6110ed816110d7565b82525050565b600060208201905061110860008301846110e4565b92915050565b60006020828403121561112457611123610f4b565b5b600061113284828501610fcf565b91505092915050565b60006020828403121561115157611150610f4b565b5b600061115f84828501610f99565b91505092915050565b6000806040838503121561117f5761117e610f4b565b5b600061118d85828601610f99565b925050602061119e85828601610f99565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ef57607f821691505b602082108103611202576112016111a8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061124282610fae565b915061124d83610fae565b925082820190508082111561126557611264611208565b5b92915050565b7f4d6f636b555344433a204e6f7468696e6720746f206275726e00000000000000600082015250565b60006112a1601983610ea4565b91506112ac8261126b565b602082019050919050565b600060208201905081810360008301526112d081611294565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611333602583610ea4565b915061133e826112d7565b604082019050919050565b6000602082019050818103600083015261136281611326565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113c5602483610ea4565b91506113d082611369565b604082019050919050565b600060208201905081810360008301526113f4816113b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611457602283610ea4565b9150611462826113fb565b604082019050919050565b600060208201905081810360008301526114868161144a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006114c3601d83610ea4565b91506114ce8261148d565b602082019050919050565b600060208201905081810360008301526114f2816114b6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611555602583610ea4565b9150611560826114f9565b604082019050919050565b6000602082019050818103600083015261158481611548565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115e7602383610ea4565b91506115f28261158b565b604082019050919050565b60006020820190508181036000830152611616816115da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611679602683610ea4565b91506116848261161d565b604082019050919050565b600060208201905081810360008301526116a88161166c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061170b602183610ea4565b9150611716826116af565b604082019050919050565b6000602082019050818103600083015261173a816116fe565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061179d602283610ea4565b91506117a882611741565b604082019050919050565b600060208201905081810360008301526117cc81611790565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611809601f83610ea4565b9150611814826117d3565b602082019050919050565b60006020820190508181036000830152611838816117fc565b905091905056fea2646970667358221220db80c17952bbfdfde6337cbbe3fe3f03b3b28028fd799fb2393ebc5ad90036ce64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D6F636B55445343000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4D55534443000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0x8F SWAP2 SWAP1 PUSH3 0x4B7 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH3 0xA1 SWAP2 SWAP1 PUSH3 0x4B7 JUMP JUMPDEST POP POP POP PUSH3 0xC0 CALLER PUSH10 0xD3C21BCECCEDA1000000 PUSH3 0xC6 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x6B9 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x138 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x12F SWAP1 PUSH3 0x5FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x14C PUSH1 0x0 DUP4 DUP4 PUSH3 0x233 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH3 0x160 SWAP2 SWAP1 PUSH3 0x650 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH3 0x213 SWAP2 SWAP1 PUSH3 0x69C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH3 0x22F PUSH1 0x0 DUP4 DUP4 PUSH3 0x238 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x2BF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x2D5 JUMPI PUSH3 0x2D4 PUSH3 0x277 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH3 0x33F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x300 JUMP JUMPDEST PUSH3 0x34B DUP7 DUP4 PUSH3 0x300 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x398 PUSH3 0x392 PUSH3 0x38C DUP5 PUSH3 0x363 JUMP JUMPDEST PUSH3 0x36D JUMP JUMPDEST PUSH3 0x363 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x3B4 DUP4 PUSH3 0x377 JUMP JUMPDEST PUSH3 0x3CC PUSH3 0x3C3 DUP3 PUSH3 0x39F JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x30D JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH3 0x3E3 PUSH3 0x3D4 JUMP JUMPDEST PUSH3 0x3F0 DUP2 DUP5 DUP5 PUSH3 0x3A9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x418 JUMPI PUSH3 0x40C PUSH1 0x0 DUP3 PUSH3 0x3D9 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x3F6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x467 JUMPI PUSH3 0x431 DUP2 PUSH3 0x2DB JUMP JUMPDEST PUSH3 0x43C DUP5 PUSH3 0x2F0 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x44C JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x464 PUSH3 0x45B DUP6 PUSH3 0x2F0 JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x3F5 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x48C PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x46C JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4A7 DUP4 DUP4 PUSH3 0x479 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4C2 DUP3 PUSH3 0x23D JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4DE JUMPI PUSH3 0x4DD PUSH3 0x248 JUMP JUMPDEST JUMPDEST PUSH3 0x4EA DUP3 SLOAD PUSH3 0x2A6 JUMP JUMPDEST PUSH3 0x4F7 DUP3 DUP3 DUP6 PUSH3 0x41C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x52F JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x51A JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x526 DUP6 DUP3 PUSH3 0x499 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x596 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x53F DUP7 PUSH3 0x2DB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x569 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x542 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x589 JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x585 PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x479 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5E7 PUSH1 0x1F DUP4 PUSH3 0x59E JUMP JUMPDEST SWAP2 POP PUSH3 0x5F4 DUP3 PUSH3 0x5AF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x61A DUP2 PUSH3 0x5D8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x65D DUP3 PUSH3 0x363 JUMP JUMPDEST SWAP2 POP PUSH3 0x66A DUP4 PUSH3 0x363 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH3 0x685 JUMPI PUSH3 0x684 PUSH3 0x621 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x696 DUP2 PUSH3 0x363 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x6B3 PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x68B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1875 DUP1 PUSH3 0x6C9 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA0712D68 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2C9 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x9975038C EQ PUSH2 0x243 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x1D9 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x13D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x122 SWAP2 SWAP1 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x134 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x145 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x152 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x175 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x170 SWAP2 SWAP1 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x182 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x10F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D0 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0x110E JUMP JUMPDEST PUSH2 0x427 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x113B JUMP JUMPDEST PUSH2 0x434 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH2 0x47C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23A SWAP2 SWAP1 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH2 0x50E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x267 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x262 SWAP2 SWAP1 PUSH2 0x110E JUMP JUMPDEST PUSH2 0x56B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x283 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x27E SWAP2 SWAP1 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x578 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x290 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x5EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C0 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DE SWAP2 SWAP1 PUSH2 0x1168 JUMP JUMPDEST PUSH2 0x612 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F0 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x308 SWAP1 PUSH2 0x11D7 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x334 SWAP1 PUSH2 0x11D7 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x381 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x356 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x381 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x364 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x396 PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A3 DUP2 DUP6 DUP6 PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3C3 PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH2 0x3D0 DUP6 DUP3 DUP6 PUSH2 0x86A JUMP JUMPDEST PUSH2 0x3DB DUP6 DUP6 DUP6 PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3FB PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH2 0x41C DUP2 DUP6 DUP6 PUSH2 0x40D DUP6 DUP10 PUSH2 0x612 JUMP JUMPDEST PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x1237 JUMP JUMPDEST PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x431 CALLER DUP3 PUSH2 0xB6C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x48B SWAP1 PUSH2 0x11D7 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x4B7 SWAP1 PUSH2 0x11D7 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x504 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4D9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x504 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4E7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 CALLER PUSH2 0x434 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x55E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x555 SWAP1 PUSH2 0x12B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x568 CALLER DUP3 PUSH2 0xB6C JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x575 CALLER DUP3 PUSH2 0xD39 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x583 PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x591 DUP3 DUP7 PUSH2 0x612 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CD SWAP1 PUSH2 0x1349 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E3 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5FA PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH2 0x607 DUP2 DUP6 DUP6 PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x710 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x707 SWAP1 PUSH2 0x13DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x77F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x776 SWAP1 PUSH2 0x146D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD PUSH2 0x85D SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x876 DUP5 DUP5 PUSH2 0x612 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x8F0 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D9 SWAP1 PUSH2 0x14D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8EF DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x6A1 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x965 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x95C SWAP1 PUSH2 0x156B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9D4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9CB SWAP1 PUSH2 0x15FD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9DF DUP4 DUP4 DUP4 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xA65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA5C SWAP1 PUSH2 0x168F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xB53 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xB66 DUP5 DUP5 DUP5 PUSH2 0xE94 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBD2 SWAP1 PUSH2 0x1721 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBE7 DUP3 PUSH1 0x0 DUP4 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC64 SWAP1 PUSH2 0x17B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xD20 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xD34 DUP4 PUSH1 0x0 DUP5 PUSH2 0xE94 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xDA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD9F SWAP1 PUSH2 0x181F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDB4 PUSH1 0x0 DUP4 DUP4 PUSH2 0xE8F JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xDC6 SWAP2 SWAP1 PUSH2 0x1237 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xE77 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xE8B PUSH1 0x0 DUP4 DUP4 PUSH2 0xE94 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xED3 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFB DUP3 PUSH2 0xE99 JUMP JUMPDEST PUSH2 0xF05 DUP2 DUP6 PUSH2 0xEA4 JUMP JUMPDEST SWAP4 POP PUSH2 0xF15 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xEB5 JUMP JUMPDEST PUSH2 0xF1E DUP2 PUSH2 0xEDF JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF43 DUP2 DUP5 PUSH2 0xEF0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7B DUP3 PUSH2 0xF50 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF8B DUP2 PUSH2 0xF70 JUMP JUMPDEST DUP2 EQ PUSH2 0xF96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xFA8 DUP2 PUSH2 0xF82 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFC1 DUP2 PUSH2 0xFAE JUMP JUMPDEST DUP2 EQ PUSH2 0xFCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xFDE DUP2 PUSH2 0xFB8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFFB JUMPI PUSH2 0xFFA PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1009 DUP6 DUP3 DUP7 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x101A DUP6 DUP3 DUP7 ADD PUSH2 0xFCF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1039 DUP2 PUSH2 0x1024 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1054 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1030 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1063 DUP2 PUSH2 0xFAE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x107E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x105A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x109D JUMPI PUSH2 0x109C PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x10AB DUP7 DUP3 DUP8 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x10BC DUP7 DUP3 DUP8 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x10CD DUP7 DUP3 DUP8 ADD PUSH2 0xFCF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x10ED DUP2 PUSH2 0x10D7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1108 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x10E4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1124 JUMPI PUSH2 0x1123 PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1132 DUP5 DUP3 DUP6 ADD PUSH2 0xFCF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1151 JUMPI PUSH2 0x1150 PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x115F DUP5 DUP3 DUP6 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x117F JUMPI PUSH2 0x117E PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x118D DUP6 DUP3 DUP7 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x119E DUP6 DUP3 DUP7 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x11EF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1202 JUMPI PUSH2 0x1201 PUSH2 0x11A8 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1242 DUP3 PUSH2 0xFAE JUMP JUMPDEST SWAP2 POP PUSH2 0x124D DUP4 PUSH2 0xFAE JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1265 JUMPI PUSH2 0x1264 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4D6F636B555344433A204E6F7468696E6720746F206275726E00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12A1 PUSH1 0x19 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x12AC DUP3 PUSH2 0x126B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x12D0 DUP2 PUSH2 0x1294 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1333 PUSH1 0x25 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x133E DUP3 PUSH2 0x12D7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1362 DUP2 PUSH2 0x1326 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C5 PUSH1 0x24 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x13D0 DUP3 PUSH2 0x1369 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x13F4 DUP2 PUSH2 0x13B8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1457 PUSH1 0x22 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1462 DUP3 PUSH2 0x13FB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1486 DUP2 PUSH2 0x144A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C3 PUSH1 0x1D DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x14CE DUP3 PUSH2 0x148D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x14F2 DUP2 PUSH2 0x14B6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1555 PUSH1 0x25 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1560 DUP3 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1584 DUP2 PUSH2 0x1548 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E7 PUSH1 0x23 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x15F2 DUP3 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1616 DUP2 PUSH2 0x15DA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1679 PUSH1 0x26 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1684 DUP3 PUSH2 0x161D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x16A8 DUP2 PUSH2 0x166C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x170B PUSH1 0x21 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1716 DUP3 PUSH2 0x16AF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x173A DUP2 PUSH2 0x16FE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x179D PUSH1 0x22 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x17A8 DUP3 PUSH2 0x1741 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x17CC DUP2 PUSH2 0x1790 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1809 PUSH1 0x1F DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1814 DUP3 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1838 DUP2 PUSH2 0x17FC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB DUP1 0xC1 PUSH26 0x52BBFDFDE6337CBBE3FE3F03B3B28028FD799FB2393EBC5AD900 CALLDATASIZE 0xCE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"161:496:4:-:0;;;194:89;;;;;;;;;;1976:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2050:5;2042;:13;;;;;;:::i;:::-;;2075:7;2065;:17;;;;;;:::i;:::-;;1976:113;;245:31:4::1;251:10;263:12;245:5;;;:31;;:::i;:::-;161:496:::0;;8567:535:0;8669:1;8650:21;;:7;:21;;;8642:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8718:49;8747:1;8751:7;8760:6;8718:20;;;:49;;:::i;:::-;8794:6;8778:12;;:22;;;;;;;:::i;:::-;;;;;;;;8968:6;8946:9;:18;8956:7;8946:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;9020:7;8999:37;;9016:1;8999:37;;;9029:6;8999:37;;;;;;:::i;:::-;;;;;;;;9047:48;9075:1;9079:7;9088:6;9047:19;;;:48;;:::i;:::-;8567:535;;:::o;12180:121::-;;;;:::o;12889:120::-;;;;:::o;7:99:5:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;5234:169::-;5318:11;5352:6;5347:3;5340:19;5392:4;5387:3;5383:14;5368:29;;5234:169;;;;:::o;5409:181::-;5549:33;5545:1;5537:6;5533:14;5526:57;5409:181;:::o;5596:366::-;5738:3;5759:67;5823:2;5818:3;5759:67;:::i;:::-;5752:74;;5835:93;5924:3;5835:93;:::i;:::-;5953:2;5948:3;5944:12;5937:19;;5596:366;;;:::o;5968:419::-;6134:4;6172:2;6161:9;6157:18;6149:26;;6221:9;6215:4;6211:20;6207:1;6196:9;6192:17;6185:47;6249:131;6375:4;6249:131;:::i;:::-;6241:139;;5968:419;;;:::o;6393:180::-;6441:77;6438:1;6431:88;6538:4;6535:1;6528:15;6562:4;6559:1;6552:15;6579:191;6619:3;6638:20;6656:1;6638:20;:::i;:::-;6633:25;;6672:20;6690:1;6672:20;:::i;:::-;6667:25;;6715:1;6712;6708:9;6701:16;;6736:3;6733:1;6730:10;6727:36;;;6743:18;;:::i;:::-;6727:36;6579:191;;;;:::o;6776:118::-;6863:24;6881:5;6863:24;:::i;:::-;6858:3;6851:37;6776:118;;:::o;6900:222::-;6993:4;7031:2;7020:9;7016:18;7008:26;;7044:71;7112:1;7101:9;7097:17;7088:6;7044:71;:::i;:::-;6900:222;;;;:::o;161:496:4:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_585":{"entryPoint":3732,"id":585,"parameterSlots":3,"returnSlots":0},"@_approve_520":{"entryPoint":1697,"id":520,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_574":{"entryPoint":3727,"id":574,"parameterSlots":3,"returnSlots":0},"@_burn_475":{"entryPoint":2924,"id":475,"parameterSlots":2,"returnSlots":0},"@_mint_403":{"entryPoint":3385,"id":403,"parameterSlots":2,"returnSlots":0},"@_msgSender_701":{"entryPoint":1689,"id":701,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_563":{"entryPoint":2154,"id":563,"parameterSlots":3,"returnSlots":0},"@_transfer_346":{"entryPoint":2294,"id":346,"parameterSlots":3,"returnSlots":0},"@allowance_141":{"entryPoint":1554,"id":141,"parameterSlots":2,"returnSlots":1},"@approve_166":{"entryPoint":907,"id":166,"parameterSlots":2,"returnSlots":1},"@balanceOf_98":{"entryPoint":1076,"id":98,"parameterSlots":1,"returnSlots":1},"@burnAll_780":{"entryPoint":1294,"id":780,"parameterSlots":0,"returnSlots":0},"@burn_756":{"entryPoint":1063,"id":756,"parameterSlots":1,"returnSlots":0},"@decimals_74":{"entryPoint":999,"id":74,"parameterSlots":0,"returnSlots":1},"@decreaseAllowance_269":{"entryPoint":1400,"id":269,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_228":{"entryPoint":1008,"id":228,"parameterSlots":2,"returnSlots":1},"@mint_744":{"entryPoint":1387,"id":744,"parameterSlots":1,"returnSlots":0},"@name_54":{"entryPoint":761,"id":54,"parameterSlots":0,"returnSlots":1},"@symbol_64":{"entryPoint":1148,"id":64,"parameterSlots":0,"returnSlots":1},"@totalSupply_84":{"entryPoint":942,"id":84,"parameterSlots":0,"returnSlots":1},"@transferFrom_199":{"entryPoint":952,"id":199,"parameterSlots":3,"returnSlots":1},"@transfer_123":{"entryPoint":1519,"id":123,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address":{"entryPoint":3993,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":4047,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4411,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4456,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4228,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4068,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":4366,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":4144,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":3824,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack":{"entryPoint":5594,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack":{"entryPoint":6032,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack":{"entryPoint":5194,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack":{"entryPoint":5302,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack":{"entryPoint":5740,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack":{"entryPoint":5886,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack":{"entryPoint":5448,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack":{"entryPoint":5048,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack":{"entryPoint":4902,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack":{"entryPoint":6140,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98_to_t_string_memory_ptr_fromStack":{"entryPoint":4756,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":4186,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":4324,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":4159,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3881,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5629,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6067,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5229,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5337,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5775,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5921,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5483,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5083,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4937,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6175,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4791,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":4201,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":4339,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":3737,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":3748,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":4663,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":3952,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":4132,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":3920,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":4014,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":4311,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3765,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4567,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":4616,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":4520,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":3915,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":3807,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f":{"entryPoint":5515,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd":{"entryPoint":5953,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029":{"entryPoint":5115,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe":{"entryPoint":5261,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6":{"entryPoint":5661,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f":{"entryPoint":5807,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea":{"entryPoint":5369,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208":{"entryPoint":4969,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8":{"entryPoint":4823,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e":{"entryPoint":6099,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98":{"entryPoint":4715,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":3970,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":4024,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:18043:5","statements":[{"body":{"nodeType":"YulBlock","src":"66:40:5","statements":[{"nodeType":"YulAssignment","src":"77:22:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"93:5:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"87:5:5"},"nodeType":"YulFunctionCall","src":"87:12:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"77:6:5"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"49:5:5","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"59:6:5","type":""}],"src":"7:99:5"},{"body":{"nodeType":"YulBlock","src":"208:73:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"225:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"230:6:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"218:6:5"},"nodeType":"YulFunctionCall","src":"218:19:5"},"nodeType":"YulExpressionStatement","src":"218:19:5"},{"nodeType":"YulAssignment","src":"246:29:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"265:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"270:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"261:3:5"},"nodeType":"YulFunctionCall","src":"261:14:5"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"246:11:5"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"180:3:5","type":""},{"name":"length","nodeType":"YulTypedName","src":"185:6:5","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"196:11:5","type":""}],"src":"112:169:5"},{"body":{"nodeType":"YulBlock","src":"349:184:5","statements":[{"nodeType":"YulVariableDeclaration","src":"359:10:5","value":{"kind":"number","nodeType":"YulLiteral","src":"368:1:5","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"363:1:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"428:63:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"453:3:5"},{"name":"i","nodeType":"YulIdentifier","src":"458:1:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"449:3:5"},"nodeType":"YulFunctionCall","src":"449:11:5"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"472:3:5"},{"name":"i","nodeType":"YulIdentifier","src":"477:1:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"468:3:5"},"nodeType":"YulFunctionCall","src":"468:11:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"462:5:5"},"nodeType":"YulFunctionCall","src":"462:18:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"442:6:5"},"nodeType":"YulFunctionCall","src":"442:39:5"},"nodeType":"YulExpressionStatement","src":"442:39:5"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"389:1:5"},{"name":"length","nodeType":"YulIdentifier","src":"392:6:5"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"386:2:5"},"nodeType":"YulFunctionCall","src":"386:13:5"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"400:19:5","statements":[{"nodeType":"YulAssignment","src":"402:15:5","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"411:1:5"},{"kind":"number","nodeType":"YulLiteral","src":"414:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"407:3:5"},"nodeType":"YulFunctionCall","src":"407:10:5"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"402:1:5"}]}]},"pre":{"nodeType":"YulBlock","src":"382:3:5","statements":[]},"src":"378:113:5"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"511:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"516:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"507:3:5"},"nodeType":"YulFunctionCall","src":"507:16:5"},{"kind":"number","nodeType":"YulLiteral","src":"525:1:5","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"500:6:5"},"nodeType":"YulFunctionCall","src":"500:27:5"},"nodeType":"YulExpressionStatement","src":"500:27:5"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"331:3:5","type":""},{"name":"dst","nodeType":"YulTypedName","src":"336:3:5","type":""},{"name":"length","nodeType":"YulTypedName","src":"341:6:5","type":""}],"src":"287:246:5"},{"body":{"nodeType":"YulBlock","src":"587:54:5","statements":[{"nodeType":"YulAssignment","src":"597:38:5","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"615:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"622:2:5","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"611:3:5"},"nodeType":"YulFunctionCall","src":"611:14:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"631:2:5","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"627:3:5"},"nodeType":"YulFunctionCall","src":"627:7:5"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"607:3:5"},"nodeType":"YulFunctionCall","src":"607:28:5"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"597:6:5"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"570:5:5","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"580:6:5","type":""}],"src":"539:102:5"},{"body":{"nodeType":"YulBlock","src":"739:285:5","statements":[{"nodeType":"YulVariableDeclaration","src":"749:53:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"796:5:5"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"763:32:5"},"nodeType":"YulFunctionCall","src":"763:39:5"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"753:6:5","type":""}]},{"nodeType":"YulAssignment","src":"811:78:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"877:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"882:6:5"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"818:58:5"},"nodeType":"YulFunctionCall","src":"818:71:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"811:3:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"937:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"944:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"933:3:5"},"nodeType":"YulFunctionCall","src":"933:16:5"},{"name":"pos","nodeType":"YulIdentifier","src":"951:3:5"},{"name":"length","nodeType":"YulIdentifier","src":"956:6:5"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"898:34:5"},"nodeType":"YulFunctionCall","src":"898:65:5"},"nodeType":"YulExpressionStatement","src":"898:65:5"},{"nodeType":"YulAssignment","src":"972:46:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"983:3:5"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1010:6:5"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"988:21:5"},"nodeType":"YulFunctionCall","src":"988:29:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"979:3:5"},"nodeType":"YulFunctionCall","src":"979:39:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"972:3:5"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"720:5:5","type":""},{"name":"pos","nodeType":"YulTypedName","src":"727:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"735:3:5","type":""}],"src":"647:377:5"},{"body":{"nodeType":"YulBlock","src":"1148:195:5","statements":[{"nodeType":"YulAssignment","src":"1158:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"1181:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1166:3:5"},"nodeType":"YulFunctionCall","src":"1166:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1158:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1205:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"1216:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1201:3:5"},"nodeType":"YulFunctionCall","src":"1201:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1224:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"1230:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1220:3:5"},"nodeType":"YulFunctionCall","src":"1220:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1194:6:5"},"nodeType":"YulFunctionCall","src":"1194:47:5"},"nodeType":"YulExpressionStatement","src":"1194:47:5"},{"nodeType":"YulAssignment","src":"1250:86:5","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1322:6:5"},{"name":"tail","nodeType":"YulIdentifier","src":"1331:4:5"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1258:63:5"},"nodeType":"YulFunctionCall","src":"1258:78:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1250:4:5"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1120:9:5","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1132:6:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1143:4:5","type":""}],"src":"1030:313:5"},{"body":{"nodeType":"YulBlock","src":"1389:35:5","statements":[{"nodeType":"YulAssignment","src":"1399:19:5","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1415:2:5","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1409:5:5"},"nodeType":"YulFunctionCall","src":"1409:9:5"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1399:6:5"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1382:6:5","type":""}],"src":"1349:75:5"},{"body":{"nodeType":"YulBlock","src":"1519:28:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1536:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1539:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1529:6:5"},"nodeType":"YulFunctionCall","src":"1529:12:5"},"nodeType":"YulExpressionStatement","src":"1529:12:5"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"1430:117:5"},{"body":{"nodeType":"YulBlock","src":"1642:28:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1659:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1662:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1652:6:5"},"nodeType":"YulFunctionCall","src":"1652:12:5"},"nodeType":"YulExpressionStatement","src":"1652:12:5"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"1553:117:5"},{"body":{"nodeType":"YulBlock","src":"1721:81:5","statements":[{"nodeType":"YulAssignment","src":"1731:65:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1746:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"1753:42:5","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1742:3:5"},"nodeType":"YulFunctionCall","src":"1742:54:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1731:7:5"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1703:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1713:7:5","type":""}],"src":"1676:126:5"},{"body":{"nodeType":"YulBlock","src":"1853:51:5","statements":[{"nodeType":"YulAssignment","src":"1863:35:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1892:5:5"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"1874:17:5"},"nodeType":"YulFunctionCall","src":"1874:24:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1863:7:5"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1835:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1845:7:5","type":""}],"src":"1808:96:5"},{"body":{"nodeType":"YulBlock","src":"1953:79:5","statements":[{"body":{"nodeType":"YulBlock","src":"2010:16:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2019:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2022:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2012:6:5"},"nodeType":"YulFunctionCall","src":"2012:12:5"},"nodeType":"YulExpressionStatement","src":"2012:12:5"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1976:5:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2001:5:5"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1983:17:5"},"nodeType":"YulFunctionCall","src":"1983:24:5"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1973:2:5"},"nodeType":"YulFunctionCall","src":"1973:35:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1966:6:5"},"nodeType":"YulFunctionCall","src":"1966:43:5"},"nodeType":"YulIf","src":"1963:63:5"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1946:5:5","type":""}],"src":"1910:122:5"},{"body":{"nodeType":"YulBlock","src":"2090:87:5","statements":[{"nodeType":"YulAssignment","src":"2100:29:5","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2122:6:5"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2109:12:5"},"nodeType":"YulFunctionCall","src":"2109:20:5"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2100:5:5"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2165:5:5"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"2138:26:5"},"nodeType":"YulFunctionCall","src":"2138:33:5"},"nodeType":"YulExpressionStatement","src":"2138:33:5"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2068:6:5","type":""},{"name":"end","nodeType":"YulTypedName","src":"2076:3:5","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2084:5:5","type":""}],"src":"2038:139:5"},{"body":{"nodeType":"YulBlock","src":"2228:32:5","statements":[{"nodeType":"YulAssignment","src":"2238:16:5","value":{"name":"value","nodeType":"YulIdentifier","src":"2249:5:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2238:7:5"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2210:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2220:7:5","type":""}],"src":"2183:77:5"},{"body":{"nodeType":"YulBlock","src":"2309:79:5","statements":[{"body":{"nodeType":"YulBlock","src":"2366:16:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2375:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2378:1:5","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2368:6:5"},"nodeType":"YulFunctionCall","src":"2368:12:5"},"nodeType":"YulExpressionStatement","src":"2368:12:5"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2332:5:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2357:5:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2339:17:5"},"nodeType":"YulFunctionCall","src":"2339:24:5"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2329:2:5"},"nodeType":"YulFunctionCall","src":"2329:35:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2322:6:5"},"nodeType":"YulFunctionCall","src":"2322:43:5"},"nodeType":"YulIf","src":"2319:63:5"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2302:5:5","type":""}],"src":"2266:122:5"},{"body":{"nodeType":"YulBlock","src":"2446:87:5","statements":[{"nodeType":"YulAssignment","src":"2456:29:5","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2478:6:5"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2465:12:5"},"nodeType":"YulFunctionCall","src":"2465:20:5"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2456:5:5"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2521:5:5"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"2494:26:5"},"nodeType":"YulFunctionCall","src":"2494:33:5"},"nodeType":"YulExpressionStatement","src":"2494:33:5"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2424:6:5","type":""},{"name":"end","nodeType":"YulTypedName","src":"2432:3:5","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2440:5:5","type":""}],"src":"2394:139:5"},{"body":{"nodeType":"YulBlock","src":"2622:391:5","statements":[{"body":{"nodeType":"YulBlock","src":"2668:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2670:77:5"},"nodeType":"YulFunctionCall","src":"2670:79:5"},"nodeType":"YulExpressionStatement","src":"2670:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2643:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"2652:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2639:3:5"},"nodeType":"YulFunctionCall","src":"2639:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"2664:2:5","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2635:3:5"},"nodeType":"YulFunctionCall","src":"2635:32:5"},"nodeType":"YulIf","src":"2632:119:5"},{"nodeType":"YulBlock","src":"2761:117:5","statements":[{"nodeType":"YulVariableDeclaration","src":"2776:15:5","value":{"kind":"number","nodeType":"YulLiteral","src":"2790:1:5","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2780:6:5","type":""}]},{"nodeType":"YulAssignment","src":"2805:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2840:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"2851:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2836:3:5"},"nodeType":"YulFunctionCall","src":"2836:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2860:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2815:20:5"},"nodeType":"YulFunctionCall","src":"2815:53:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2805:6:5"}]}]},{"nodeType":"YulBlock","src":"2888:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"2903:16:5","value":{"kind":"number","nodeType":"YulLiteral","src":"2917:2:5","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2907:6:5","type":""}]},{"nodeType":"YulAssignment","src":"2933:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2968:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"2979:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2964:3:5"},"nodeType":"YulFunctionCall","src":"2964:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2988:7:5"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"2943:20:5"},"nodeType":"YulFunctionCall","src":"2943:53:5"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2933:6:5"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2584:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2595:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2607:6:5","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2615:6:5","type":""}],"src":"2539:474:5"},{"body":{"nodeType":"YulBlock","src":"3061:48:5","statements":[{"nodeType":"YulAssignment","src":"3071:32:5","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3096:5:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3089:6:5"},"nodeType":"YulFunctionCall","src":"3089:13:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3082:6:5"},"nodeType":"YulFunctionCall","src":"3082:21:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3071:7:5"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3043:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3053:7:5","type":""}],"src":"3019:90:5"},{"body":{"nodeType":"YulBlock","src":"3174:50:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3191:3:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3211:5:5"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"3196:14:5"},"nodeType":"YulFunctionCall","src":"3196:21:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3184:6:5"},"nodeType":"YulFunctionCall","src":"3184:34:5"},"nodeType":"YulExpressionStatement","src":"3184:34:5"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3162:5:5","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3169:3:5","type":""}],"src":"3115:109:5"},{"body":{"nodeType":"YulBlock","src":"3322:118:5","statements":[{"nodeType":"YulAssignment","src":"3332:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3344:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"3355:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3340:3:5"},"nodeType":"YulFunctionCall","src":"3340:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3332:4:5"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3406:6:5"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3419:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"3430:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3415:3:5"},"nodeType":"YulFunctionCall","src":"3415:17:5"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"3368:37:5"},"nodeType":"YulFunctionCall","src":"3368:65:5"},"nodeType":"YulExpressionStatement","src":"3368:65:5"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3294:9:5","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3306:6:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3317:4:5","type":""}],"src":"3230:210:5"},{"body":{"nodeType":"YulBlock","src":"3511:53:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3551:5:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3533:17:5"},"nodeType":"YulFunctionCall","src":"3533:24:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3521:6:5"},"nodeType":"YulFunctionCall","src":"3521:37:5"},"nodeType":"YulExpressionStatement","src":"3521:37:5"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3499:5:5","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3506:3:5","type":""}],"src":"3446:118:5"},{"body":{"nodeType":"YulBlock","src":"3668:124:5","statements":[{"nodeType":"YulAssignment","src":"3678:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3690:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"3701:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3686:3:5"},"nodeType":"YulFunctionCall","src":"3686:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3678:4:5"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3758:6:5"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3771:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"3782:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3767:3:5"},"nodeType":"YulFunctionCall","src":"3767:17:5"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"3714:43:5"},"nodeType":"YulFunctionCall","src":"3714:71:5"},"nodeType":"YulExpressionStatement","src":"3714:71:5"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3640:9:5","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3652:6:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3663:4:5","type":""}],"src":"3570:222:5"},{"body":{"nodeType":"YulBlock","src":"3898:519:5","statements":[{"body":{"nodeType":"YulBlock","src":"3944:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3946:77:5"},"nodeType":"YulFunctionCall","src":"3946:79:5"},"nodeType":"YulExpressionStatement","src":"3946:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3919:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"3928:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3915:3:5"},"nodeType":"YulFunctionCall","src":"3915:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"3940:2:5","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3911:3:5"},"nodeType":"YulFunctionCall","src":"3911:32:5"},"nodeType":"YulIf","src":"3908:119:5"},{"nodeType":"YulBlock","src":"4037:117:5","statements":[{"nodeType":"YulVariableDeclaration","src":"4052:15:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4066:1:5","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4056:6:5","type":""}]},{"nodeType":"YulAssignment","src":"4081:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4116:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"4127:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4112:3:5"},"nodeType":"YulFunctionCall","src":"4112:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4136:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4091:20:5"},"nodeType":"YulFunctionCall","src":"4091:53:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4081:6:5"}]}]},{"nodeType":"YulBlock","src":"4164:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"4179:16:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4193:2:5","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4183:6:5","type":""}]},{"nodeType":"YulAssignment","src":"4209:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4244:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"4255:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4240:3:5"},"nodeType":"YulFunctionCall","src":"4240:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4264:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4219:20:5"},"nodeType":"YulFunctionCall","src":"4219:53:5"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4209:6:5"}]}]},{"nodeType":"YulBlock","src":"4292:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"4307:16:5","value":{"kind":"number","nodeType":"YulLiteral","src":"4321:2:5","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4311:6:5","type":""}]},{"nodeType":"YulAssignment","src":"4337:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4372:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"4383:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4368:3:5"},"nodeType":"YulFunctionCall","src":"4368:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4392:7:5"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4347:20:5"},"nodeType":"YulFunctionCall","src":"4347:53:5"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4337:6:5"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3852:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3863:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3875:6:5","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3883:6:5","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3891:6:5","type":""}],"src":"3798:619:5"},{"body":{"nodeType":"YulBlock","src":"4466:43:5","statements":[{"nodeType":"YulAssignment","src":"4476:27:5","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4491:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"4498:4:5","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4487:3:5"},"nodeType":"YulFunctionCall","src":"4487:16:5"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4476:7:5"}]}]},"name":"cleanup_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4448:5:5","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4458:7:5","type":""}],"src":"4423:86:5"},{"body":{"nodeType":"YulBlock","src":"4576:51:5","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4593:3:5"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4614:5:5"}],"functionName":{"name":"cleanup_t_uint8","nodeType":"YulIdentifier","src":"4598:15:5"},"nodeType":"YulFunctionCall","src":"4598:22:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4586:6:5"},"nodeType":"YulFunctionCall","src":"4586:35:5"},"nodeType":"YulExpressionStatement","src":"4586:35:5"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4564:5:5","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4571:3:5","type":""}],"src":"4515:112:5"},{"body":{"nodeType":"YulBlock","src":"4727:120:5","statements":[{"nodeType":"YulAssignment","src":"4737:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4749:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"4760:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4745:3:5"},"nodeType":"YulFunctionCall","src":"4745:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4737:4:5"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4813:6:5"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4826:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"4837:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4822:3:5"},"nodeType":"YulFunctionCall","src":"4822:17:5"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nodeType":"YulIdentifier","src":"4773:39:5"},"nodeType":"YulFunctionCall","src":"4773:67:5"},"nodeType":"YulExpressionStatement","src":"4773:67:5"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4699:9:5","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4711:6:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4722:4:5","type":""}],"src":"4633:214:5"},{"body":{"nodeType":"YulBlock","src":"4919:263:5","statements":[{"body":{"nodeType":"YulBlock","src":"4965:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4967:77:5"},"nodeType":"YulFunctionCall","src":"4967:79:5"},"nodeType":"YulExpressionStatement","src":"4967:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4940:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"4949:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4936:3:5"},"nodeType":"YulFunctionCall","src":"4936:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"4961:2:5","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4932:3:5"},"nodeType":"YulFunctionCall","src":"4932:32:5"},"nodeType":"YulIf","src":"4929:119:5"},{"nodeType":"YulBlock","src":"5058:117:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5073:15:5","value":{"kind":"number","nodeType":"YulLiteral","src":"5087:1:5","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5077:6:5","type":""}]},{"nodeType":"YulAssignment","src":"5102:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5137:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"5148:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5133:3:5"},"nodeType":"YulFunctionCall","src":"5133:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5157:7:5"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5112:20:5"},"nodeType":"YulFunctionCall","src":"5112:53:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5102:6:5"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4889:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4900:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4912:6:5","type":""}],"src":"4853:329:5"},{"body":{"nodeType":"YulBlock","src":"5254:263:5","statements":[{"body":{"nodeType":"YulBlock","src":"5300:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5302:77:5"},"nodeType":"YulFunctionCall","src":"5302:79:5"},"nodeType":"YulExpressionStatement","src":"5302:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5275:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"5284:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5271:3:5"},"nodeType":"YulFunctionCall","src":"5271:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"5296:2:5","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5267:3:5"},"nodeType":"YulFunctionCall","src":"5267:32:5"},"nodeType":"YulIf","src":"5264:119:5"},{"nodeType":"YulBlock","src":"5393:117:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5408:15:5","value":{"kind":"number","nodeType":"YulLiteral","src":"5422:1:5","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5412:6:5","type":""}]},{"nodeType":"YulAssignment","src":"5437:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5472:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"5483:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5468:3:5"},"nodeType":"YulFunctionCall","src":"5468:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5492:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5447:20:5"},"nodeType":"YulFunctionCall","src":"5447:53:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5437:6:5"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5224:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5235:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5247:6:5","type":""}],"src":"5188:329:5"},{"body":{"nodeType":"YulBlock","src":"5606:391:5","statements":[{"body":{"nodeType":"YulBlock","src":"5652:83:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5654:77:5"},"nodeType":"YulFunctionCall","src":"5654:79:5"},"nodeType":"YulExpressionStatement","src":"5654:79:5"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5627:7:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"5636:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5623:3:5"},"nodeType":"YulFunctionCall","src":"5623:23:5"},{"kind":"number","nodeType":"YulLiteral","src":"5648:2:5","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5619:3:5"},"nodeType":"YulFunctionCall","src":"5619:32:5"},"nodeType":"YulIf","src":"5616:119:5"},{"nodeType":"YulBlock","src":"5745:117:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5760:15:5","value":{"kind":"number","nodeType":"YulLiteral","src":"5774:1:5","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5764:6:5","type":""}]},{"nodeType":"YulAssignment","src":"5789:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5824:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"5835:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5820:3:5"},"nodeType":"YulFunctionCall","src":"5820:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5844:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5799:20:5"},"nodeType":"YulFunctionCall","src":"5799:53:5"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5789:6:5"}]}]},{"nodeType":"YulBlock","src":"5872:118:5","statements":[{"nodeType":"YulVariableDeclaration","src":"5887:16:5","value":{"kind":"number","nodeType":"YulLiteral","src":"5901:2:5","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5891:6:5","type":""}]},{"nodeType":"YulAssignment","src":"5917:63:5","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5952:9:5"},{"name":"offset","nodeType":"YulIdentifier","src":"5963:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5948:3:5"},"nodeType":"YulFunctionCall","src":"5948:22:5"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5972:7:5"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5927:20:5"},"nodeType":"YulFunctionCall","src":"5927:53:5"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5917:6:5"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5568:9:5","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5579:7:5","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5591:6:5","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5599:6:5","type":""}],"src":"5523:474:5"},{"body":{"nodeType":"YulBlock","src":"6031:152:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6048:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6051:77:5","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6041:6:5"},"nodeType":"YulFunctionCall","src":"6041:88:5"},"nodeType":"YulExpressionStatement","src":"6041:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6145:1:5","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6148:4:5","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6138:6:5"},"nodeType":"YulFunctionCall","src":"6138:15:5"},"nodeType":"YulExpressionStatement","src":"6138:15:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6169:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6172:4:5","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6162:6:5"},"nodeType":"YulFunctionCall","src":"6162:15:5"},"nodeType":"YulExpressionStatement","src":"6162:15:5"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"6003:180:5"},{"body":{"nodeType":"YulBlock","src":"6240:269:5","statements":[{"nodeType":"YulAssignment","src":"6250:22:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6264:4:5"},{"kind":"number","nodeType":"YulLiteral","src":"6270:1:5","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6260:3:5"},"nodeType":"YulFunctionCall","src":"6260:12:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6250:6:5"}]},{"nodeType":"YulVariableDeclaration","src":"6281:38:5","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"6311:4:5"},{"kind":"number","nodeType":"YulLiteral","src":"6317:1:5","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6307:3:5"},"nodeType":"YulFunctionCall","src":"6307:12:5"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"6285:18:5","type":""}]},{"body":{"nodeType":"YulBlock","src":"6358:51:5","statements":[{"nodeType":"YulAssignment","src":"6372:27:5","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6386:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"6394:4:5","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6382:3:5"},"nodeType":"YulFunctionCall","src":"6382:17:5"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6372:6:5"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6338:18:5"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6331:6:5"},"nodeType":"YulFunctionCall","src":"6331:26:5"},"nodeType":"YulIf","src":"6328:81:5"},{"body":{"nodeType":"YulBlock","src":"6461:42:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"6475:16:5"},"nodeType":"YulFunctionCall","src":"6475:18:5"},"nodeType":"YulExpressionStatement","src":"6475:18:5"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"6425:18:5"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6448:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"6456:2:5","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6445:2:5"},"nodeType":"YulFunctionCall","src":"6445:14:5"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6422:2:5"},"nodeType":"YulFunctionCall","src":"6422:38:5"},"nodeType":"YulIf","src":"6419:84:5"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"6224:4:5","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6233:6:5","type":""}],"src":"6189:320:5"},{"body":{"nodeType":"YulBlock","src":"6543:152:5","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6560:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6563:77:5","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6553:6:5"},"nodeType":"YulFunctionCall","src":"6553:88:5"},"nodeType":"YulExpressionStatement","src":"6553:88:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6657:1:5","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6660:4:5","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6650:6:5"},"nodeType":"YulFunctionCall","src":"6650:15:5"},"nodeType":"YulExpressionStatement","src":"6650:15:5"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6681:1:5","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6684:4:5","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6674:6:5"},"nodeType":"YulFunctionCall","src":"6674:15:5"},"nodeType":"YulExpressionStatement","src":"6674:15:5"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6515:180:5"},{"body":{"nodeType":"YulBlock","src":"6745:147:5","statements":[{"nodeType":"YulAssignment","src":"6755:25:5","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6778:1:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6760:17:5"},"nodeType":"YulFunctionCall","src":"6760:20:5"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"6755:1:5"}]},{"nodeType":"YulAssignment","src":"6789:25:5","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"6812:1:5"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6794:17:5"},"nodeType":"YulFunctionCall","src":"6794:20:5"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"6789:1:5"}]},{"nodeType":"YulAssignment","src":"6823:16:5","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6834:1:5"},{"name":"y","nodeType":"YulIdentifier","src":"6837:1:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6830:3:5"},"nodeType":"YulFunctionCall","src":"6830:9:5"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"6823:3:5"}]},{"body":{"nodeType":"YulBlock","src":"6863:22:5","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"6865:16:5"},"nodeType":"YulFunctionCall","src":"6865:18:5"},"nodeType":"YulExpressionStatement","src":"6865:18:5"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6855:1:5"},{"name":"sum","nodeType":"YulIdentifier","src":"6858:3:5"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6852:2:5"},"nodeType":"YulFunctionCall","src":"6852:10:5"},"nodeType":"YulIf","src":"6849:36:5"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"6732:1:5","type":""},{"name":"y","nodeType":"YulTypedName","src":"6735:1:5","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"6741:3:5","type":""}],"src":"6701:191:5"},{"body":{"nodeType":"YulBlock","src":"7004:69:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7026:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"7034:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7022:3:5"},"nodeType":"YulFunctionCall","src":"7022:14:5"},{"hexValue":"4d6f636b555344433a204e6f7468696e6720746f206275726e","kind":"string","nodeType":"YulLiteral","src":"7038:27:5","type":"","value":"MockUSDC: Nothing to burn"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7015:6:5"},"nodeType":"YulFunctionCall","src":"7015:51:5"},"nodeType":"YulExpressionStatement","src":"7015:51:5"}]},"name":"store_literal_in_memory_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"6996:6:5","type":""}],"src":"6898:175:5"},{"body":{"nodeType":"YulBlock","src":"7225:220:5","statements":[{"nodeType":"YulAssignment","src":"7235:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7301:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"7306:2:5","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7242:58:5"},"nodeType":"YulFunctionCall","src":"7242:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7235:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7407:3:5"}],"functionName":{"name":"store_literal_in_memory_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98","nodeType":"YulIdentifier","src":"7318:88:5"},"nodeType":"YulFunctionCall","src":"7318:93:5"},"nodeType":"YulExpressionStatement","src":"7318:93:5"},{"nodeType":"YulAssignment","src":"7420:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7431:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"7436:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7427:3:5"},"nodeType":"YulFunctionCall","src":"7427:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7420:3:5"}]}]},"name":"abi_encode_t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7213:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7221:3:5","type":""}],"src":"7079:366:5"},{"body":{"nodeType":"YulBlock","src":"7622:248:5","statements":[{"nodeType":"YulAssignment","src":"7632:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7644:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"7655:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7640:3:5"},"nodeType":"YulFunctionCall","src":"7640:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7632:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7679:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"7690:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7675:3:5"},"nodeType":"YulFunctionCall","src":"7675:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7698:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"7704:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7694:3:5"},"nodeType":"YulFunctionCall","src":"7694:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7668:6:5"},"nodeType":"YulFunctionCall","src":"7668:47:5"},"nodeType":"YulExpressionStatement","src":"7668:47:5"},{"nodeType":"YulAssignment","src":"7724:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7858:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7732:124:5"},"nodeType":"YulFunctionCall","src":"7732:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7724:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7602:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7617:4:5","type":""}],"src":"7451:419:5"},{"body":{"nodeType":"YulBlock","src":"7982:118:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8004:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"8012:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8000:3:5"},"nodeType":"YulFunctionCall","src":"8000:14:5"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"8016:34:5","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7993:6:5"},"nodeType":"YulFunctionCall","src":"7993:58:5"},"nodeType":"YulExpressionStatement","src":"7993:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8072:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"8080:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8068:3:5"},"nodeType":"YulFunctionCall","src":"8068:15:5"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"8085:7:5","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8061:6:5"},"nodeType":"YulFunctionCall","src":"8061:32:5"},"nodeType":"YulExpressionStatement","src":"8061:32:5"}]},"name":"store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7974:6:5","type":""}],"src":"7876:224:5"},{"body":{"nodeType":"YulBlock","src":"8252:220:5","statements":[{"nodeType":"YulAssignment","src":"8262:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8328:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"8333:2:5","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8269:58:5"},"nodeType":"YulFunctionCall","src":"8269:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8262:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8434:3:5"}],"functionName":{"name":"store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","nodeType":"YulIdentifier","src":"8345:88:5"},"nodeType":"YulFunctionCall","src":"8345:93:5"},"nodeType":"YulExpressionStatement","src":"8345:93:5"},{"nodeType":"YulAssignment","src":"8447:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8458:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"8463:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:5"},"nodeType":"YulFunctionCall","src":"8454:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8447:3:5"}]}]},"name":"abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8240:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8248:3:5","type":""}],"src":"8106:366:5"},{"body":{"nodeType":"YulBlock","src":"8649:248:5","statements":[{"nodeType":"YulAssignment","src":"8659:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8671:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"8682:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8667:3:5"},"nodeType":"YulFunctionCall","src":"8667:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8659:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8706:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"8717:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8702:3:5"},"nodeType":"YulFunctionCall","src":"8702:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"8725:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"8731:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8721:3:5"},"nodeType":"YulFunctionCall","src":"8721:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8695:6:5"},"nodeType":"YulFunctionCall","src":"8695:47:5"},"nodeType":"YulExpressionStatement","src":"8695:47:5"},{"nodeType":"YulAssignment","src":"8751:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"8885:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8759:124:5"},"nodeType":"YulFunctionCall","src":"8759:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8751:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8629:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8644:4:5","type":""}],"src":"8478:419:5"},{"body":{"nodeType":"YulBlock","src":"9009:117:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9031:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"9039:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9027:3:5"},"nodeType":"YulFunctionCall","src":"9027:14:5"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"9043:34:5","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9020:6:5"},"nodeType":"YulFunctionCall","src":"9020:58:5"},"nodeType":"YulExpressionStatement","src":"9020:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9099:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"9107:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9095:3:5"},"nodeType":"YulFunctionCall","src":"9095:15:5"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"9112:6:5","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9088:6:5"},"nodeType":"YulFunctionCall","src":"9088:31:5"},"nodeType":"YulExpressionStatement","src":"9088:31:5"}]},"name":"store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"9001:6:5","type":""}],"src":"8903:223:5"},{"body":{"nodeType":"YulBlock","src":"9278:220:5","statements":[{"nodeType":"YulAssignment","src":"9288:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9354:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"9359:2:5","type":"","value":"36"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9295:58:5"},"nodeType":"YulFunctionCall","src":"9295:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9288:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9460:3:5"}],"functionName":{"name":"store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","nodeType":"YulIdentifier","src":"9371:88:5"},"nodeType":"YulFunctionCall","src":"9371:93:5"},"nodeType":"YulExpressionStatement","src":"9371:93:5"},{"nodeType":"YulAssignment","src":"9473:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9484:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"9489:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9480:3:5"},"nodeType":"YulFunctionCall","src":"9480:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9473:3:5"}]}]},"name":"abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9266:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9274:3:5","type":""}],"src":"9132:366:5"},{"body":{"nodeType":"YulBlock","src":"9675:248:5","statements":[{"nodeType":"YulAssignment","src":"9685:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9697:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"9708:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9693:3:5"},"nodeType":"YulFunctionCall","src":"9693:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9685:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9732:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"9743:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9728:3:5"},"nodeType":"YulFunctionCall","src":"9728:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"9751:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"9757:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9747:3:5"},"nodeType":"YulFunctionCall","src":"9747:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9721:6:5"},"nodeType":"YulFunctionCall","src":"9721:47:5"},"nodeType":"YulExpressionStatement","src":"9721:47:5"},{"nodeType":"YulAssignment","src":"9777:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"9911:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9785:124:5"},"nodeType":"YulFunctionCall","src":"9785:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9777:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9655:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9670:4:5","type":""}],"src":"9504:419:5"},{"body":{"nodeType":"YulBlock","src":"10035:115:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10057:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"10065:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10053:3:5"},"nodeType":"YulFunctionCall","src":"10053:14:5"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"10069:34:5","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10046:6:5"},"nodeType":"YulFunctionCall","src":"10046:58:5"},"nodeType":"YulExpressionStatement","src":"10046:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10125:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"10133:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10121:3:5"},"nodeType":"YulFunctionCall","src":"10121:15:5"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"10138:4:5","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10114:6:5"},"nodeType":"YulFunctionCall","src":"10114:29:5"},"nodeType":"YulExpressionStatement","src":"10114:29:5"}]},"name":"store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"10027:6:5","type":""}],"src":"9929:221:5"},{"body":{"nodeType":"YulBlock","src":"10302:220:5","statements":[{"nodeType":"YulAssignment","src":"10312:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10378:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"10383:2:5","type":"","value":"34"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10319:58:5"},"nodeType":"YulFunctionCall","src":"10319:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10312:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10484:3:5"}],"functionName":{"name":"store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","nodeType":"YulIdentifier","src":"10395:88:5"},"nodeType":"YulFunctionCall","src":"10395:93:5"},"nodeType":"YulExpressionStatement","src":"10395:93:5"},{"nodeType":"YulAssignment","src":"10497:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10508:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"10513:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10504:3:5"},"nodeType":"YulFunctionCall","src":"10504:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10497:3:5"}]}]},"name":"abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10290:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10298:3:5","type":""}],"src":"10156:366:5"},{"body":{"nodeType":"YulBlock","src":"10699:248:5","statements":[{"nodeType":"YulAssignment","src":"10709:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10721:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"10732:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10717:3:5"},"nodeType":"YulFunctionCall","src":"10717:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10709:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10756:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"10767:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10752:3:5"},"nodeType":"YulFunctionCall","src":"10752:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10775:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"10781:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10771:3:5"},"nodeType":"YulFunctionCall","src":"10771:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10745:6:5"},"nodeType":"YulFunctionCall","src":"10745:47:5"},"nodeType":"YulExpressionStatement","src":"10745:47:5"},{"nodeType":"YulAssignment","src":"10801:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10935:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10809:124:5"},"nodeType":"YulFunctionCall","src":"10809:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10801:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10679:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10694:4:5","type":""}],"src":"10528:419:5"},{"body":{"nodeType":"YulBlock","src":"11059:73:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11081:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"11089:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11077:3:5"},"nodeType":"YulFunctionCall","src":"11077:14:5"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"11093:31:5","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11070:6:5"},"nodeType":"YulFunctionCall","src":"11070:55:5"},"nodeType":"YulExpressionStatement","src":"11070:55:5"}]},"name":"store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11051:6:5","type":""}],"src":"10953:179:5"},{"body":{"nodeType":"YulBlock","src":"11284:220:5","statements":[{"nodeType":"YulAssignment","src":"11294:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11360:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"11365:2:5","type":"","value":"29"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11301:58:5"},"nodeType":"YulFunctionCall","src":"11301:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11294:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11466:3:5"}],"functionName":{"name":"store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","nodeType":"YulIdentifier","src":"11377:88:5"},"nodeType":"YulFunctionCall","src":"11377:93:5"},"nodeType":"YulExpressionStatement","src":"11377:93:5"},{"nodeType":"YulAssignment","src":"11479:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11490:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"11495:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11486:3:5"},"nodeType":"YulFunctionCall","src":"11486:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11479:3:5"}]}]},"name":"abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11272:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11280:3:5","type":""}],"src":"11138:366:5"},{"body":{"nodeType":"YulBlock","src":"11681:248:5","statements":[{"nodeType":"YulAssignment","src":"11691:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11703:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"11714:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11699:3:5"},"nodeType":"YulFunctionCall","src":"11699:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11691:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11738:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"11749:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11734:3:5"},"nodeType":"YulFunctionCall","src":"11734:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11757:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"11763:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11753:3:5"},"nodeType":"YulFunctionCall","src":"11753:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11727:6:5"},"nodeType":"YulFunctionCall","src":"11727:47:5"},"nodeType":"YulExpressionStatement","src":"11727:47:5"},{"nodeType":"YulAssignment","src":"11783:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11917:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11791:124:5"},"nodeType":"YulFunctionCall","src":"11791:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11783:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11661:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11676:4:5","type":""}],"src":"11510:419:5"},{"body":{"nodeType":"YulBlock","src":"12041:118:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12063:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"12071:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12059:3:5"},"nodeType":"YulFunctionCall","src":"12059:14:5"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"12075:34:5","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12052:6:5"},"nodeType":"YulFunctionCall","src":"12052:58:5"},"nodeType":"YulExpressionStatement","src":"12052:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12131:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"12139:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12127:3:5"},"nodeType":"YulFunctionCall","src":"12127:15:5"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"12144:7:5","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12120:6:5"},"nodeType":"YulFunctionCall","src":"12120:32:5"},"nodeType":"YulExpressionStatement","src":"12120:32:5"}]},"name":"store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12033:6:5","type":""}],"src":"11935:224:5"},{"body":{"nodeType":"YulBlock","src":"12311:220:5","statements":[{"nodeType":"YulAssignment","src":"12321:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12387:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"12392:2:5","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12328:58:5"},"nodeType":"YulFunctionCall","src":"12328:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12321:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12493:3:5"}],"functionName":{"name":"store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","nodeType":"YulIdentifier","src":"12404:88:5"},"nodeType":"YulFunctionCall","src":"12404:93:5"},"nodeType":"YulExpressionStatement","src":"12404:93:5"},{"nodeType":"YulAssignment","src":"12506:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12517:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"12522:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12513:3:5"},"nodeType":"YulFunctionCall","src":"12513:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12506:3:5"}]}]},"name":"abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12299:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12307:3:5","type":""}],"src":"12165:366:5"},{"body":{"nodeType":"YulBlock","src":"12708:248:5","statements":[{"nodeType":"YulAssignment","src":"12718:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12730:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"12741:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12726:3:5"},"nodeType":"YulFunctionCall","src":"12726:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12718:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12765:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"12776:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12761:3:5"},"nodeType":"YulFunctionCall","src":"12761:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12784:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"12790:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12780:3:5"},"nodeType":"YulFunctionCall","src":"12780:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12754:6:5"},"nodeType":"YulFunctionCall","src":"12754:47:5"},"nodeType":"YulExpressionStatement","src":"12754:47:5"},{"nodeType":"YulAssignment","src":"12810:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12944:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12818:124:5"},"nodeType":"YulFunctionCall","src":"12818:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12810:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12688:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12703:4:5","type":""}],"src":"12537:419:5"},{"body":{"nodeType":"YulBlock","src":"13068:116:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13090:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"13098:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13086:3:5"},"nodeType":"YulFunctionCall","src":"13086:14:5"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"13102:34:5","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13079:6:5"},"nodeType":"YulFunctionCall","src":"13079:58:5"},"nodeType":"YulExpressionStatement","src":"13079:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13158:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"13166:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13154:3:5"},"nodeType":"YulFunctionCall","src":"13154:15:5"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"13171:5:5","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13147:6:5"},"nodeType":"YulFunctionCall","src":"13147:30:5"},"nodeType":"YulExpressionStatement","src":"13147:30:5"}]},"name":"store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"13060:6:5","type":""}],"src":"12962:222:5"},{"body":{"nodeType":"YulBlock","src":"13336:220:5","statements":[{"nodeType":"YulAssignment","src":"13346:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13412:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"13417:2:5","type":"","value":"35"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13353:58:5"},"nodeType":"YulFunctionCall","src":"13353:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13346:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13518:3:5"}],"functionName":{"name":"store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","nodeType":"YulIdentifier","src":"13429:88:5"},"nodeType":"YulFunctionCall","src":"13429:93:5"},"nodeType":"YulExpressionStatement","src":"13429:93:5"},{"nodeType":"YulAssignment","src":"13531:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13542:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"13547:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13538:3:5"},"nodeType":"YulFunctionCall","src":"13538:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13531:3:5"}]}]},"name":"abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13324:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13332:3:5","type":""}],"src":"13190:366:5"},{"body":{"nodeType":"YulBlock","src":"13733:248:5","statements":[{"nodeType":"YulAssignment","src":"13743:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13755:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"13766:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13751:3:5"},"nodeType":"YulFunctionCall","src":"13751:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13743:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13790:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"13801:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13786:3:5"},"nodeType":"YulFunctionCall","src":"13786:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13809:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"13815:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13805:3:5"},"nodeType":"YulFunctionCall","src":"13805:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13779:6:5"},"nodeType":"YulFunctionCall","src":"13779:47:5"},"nodeType":"YulExpressionStatement","src":"13779:47:5"},{"nodeType":"YulAssignment","src":"13835:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13969:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13843:124:5"},"nodeType":"YulFunctionCall","src":"13843:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13835:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13713:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13728:4:5","type":""}],"src":"13562:419:5"},{"body":{"nodeType":"YulBlock","src":"14093:119:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14115:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"14123:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14111:3:5"},"nodeType":"YulFunctionCall","src":"14111:14:5"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"14127:34:5","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14104:6:5"},"nodeType":"YulFunctionCall","src":"14104:58:5"},"nodeType":"YulExpressionStatement","src":"14104:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14183:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"14191:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14179:3:5"},"nodeType":"YulFunctionCall","src":"14179:15:5"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"14196:8:5","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14172:6:5"},"nodeType":"YulFunctionCall","src":"14172:33:5"},"nodeType":"YulExpressionStatement","src":"14172:33:5"}]},"name":"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14085:6:5","type":""}],"src":"13987:225:5"},{"body":{"nodeType":"YulBlock","src":"14364:220:5","statements":[{"nodeType":"YulAssignment","src":"14374:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14440:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"14445:2:5","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14381:58:5"},"nodeType":"YulFunctionCall","src":"14381:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14374:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14546:3:5"}],"functionName":{"name":"store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","nodeType":"YulIdentifier","src":"14457:88:5"},"nodeType":"YulFunctionCall","src":"14457:93:5"},"nodeType":"YulExpressionStatement","src":"14457:93:5"},{"nodeType":"YulAssignment","src":"14559:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14570:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"14575:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14566:3:5"},"nodeType":"YulFunctionCall","src":"14566:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14559:3:5"}]}]},"name":"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14352:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14360:3:5","type":""}],"src":"14218:366:5"},{"body":{"nodeType":"YulBlock","src":"14761:248:5","statements":[{"nodeType":"YulAssignment","src":"14771:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14783:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"14794:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14779:3:5"},"nodeType":"YulFunctionCall","src":"14779:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14771:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14818:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"14829:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14814:3:5"},"nodeType":"YulFunctionCall","src":"14814:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14837:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"14843:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14833:3:5"},"nodeType":"YulFunctionCall","src":"14833:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14807:6:5"},"nodeType":"YulFunctionCall","src":"14807:47:5"},"nodeType":"YulExpressionStatement","src":"14807:47:5"},{"nodeType":"YulAssignment","src":"14863:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14997:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14871:124:5"},"nodeType":"YulFunctionCall","src":"14871:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14863:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14741:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14756:4:5","type":""}],"src":"14590:419:5"},{"body":{"nodeType":"YulBlock","src":"15121:114:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15143:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"15151:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15139:3:5"},"nodeType":"YulFunctionCall","src":"15139:14:5"},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f20616464726573","kind":"string","nodeType":"YulLiteral","src":"15155:34:5","type":"","value":"ERC20: burn from the zero addres"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15132:6:5"},"nodeType":"YulFunctionCall","src":"15132:58:5"},"nodeType":"YulExpressionStatement","src":"15132:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15211:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"15219:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15207:3:5"},"nodeType":"YulFunctionCall","src":"15207:15:5"},{"hexValue":"73","kind":"string","nodeType":"YulLiteral","src":"15224:3:5","type":"","value":"s"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15200:6:5"},"nodeType":"YulFunctionCall","src":"15200:28:5"},"nodeType":"YulExpressionStatement","src":"15200:28:5"}]},"name":"store_literal_in_memory_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"15113:6:5","type":""}],"src":"15015:220:5"},{"body":{"nodeType":"YulBlock","src":"15387:220:5","statements":[{"nodeType":"YulAssignment","src":"15397:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15463:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"15468:2:5","type":"","value":"33"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15404:58:5"},"nodeType":"YulFunctionCall","src":"15404:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15397:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15569:3:5"}],"functionName":{"name":"store_literal_in_memory_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","nodeType":"YulIdentifier","src":"15480:88:5"},"nodeType":"YulFunctionCall","src":"15480:93:5"},"nodeType":"YulExpressionStatement","src":"15480:93:5"},{"nodeType":"YulAssignment","src":"15582:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15593:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"15598:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15589:3:5"},"nodeType":"YulFunctionCall","src":"15589:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15582:3:5"}]}]},"name":"abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15375:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15383:3:5","type":""}],"src":"15241:366:5"},{"body":{"nodeType":"YulBlock","src":"15784:248:5","statements":[{"nodeType":"YulAssignment","src":"15794:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15806:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"15817:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15802:3:5"},"nodeType":"YulFunctionCall","src":"15802:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15794:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15841:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"15852:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15837:3:5"},"nodeType":"YulFunctionCall","src":"15837:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15860:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"15866:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15856:3:5"},"nodeType":"YulFunctionCall","src":"15856:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15830:6:5"},"nodeType":"YulFunctionCall","src":"15830:47:5"},"nodeType":"YulExpressionStatement","src":"15830:47:5"},{"nodeType":"YulAssignment","src":"15886:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16020:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15894:124:5"},"nodeType":"YulFunctionCall","src":"15894:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15886:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15764:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15779:4:5","type":""}],"src":"15613:419:5"},{"body":{"nodeType":"YulBlock","src":"16144:115:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16166:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"16174:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16162:3:5"},"nodeType":"YulFunctionCall","src":"16162:14:5"},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e","kind":"string","nodeType":"YulLiteral","src":"16178:34:5","type":"","value":"ERC20: burn amount exceeds balan"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16155:6:5"},"nodeType":"YulFunctionCall","src":"16155:58:5"},"nodeType":"YulExpressionStatement","src":"16155:58:5"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16234:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"16242:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16230:3:5"},"nodeType":"YulFunctionCall","src":"16230:15:5"},{"hexValue":"6365","kind":"string","nodeType":"YulLiteral","src":"16247:4:5","type":"","value":"ce"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16223:6:5"},"nodeType":"YulFunctionCall","src":"16223:29:5"},"nodeType":"YulExpressionStatement","src":"16223:29:5"}]},"name":"store_literal_in_memory_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"16136:6:5","type":""}],"src":"16038:221:5"},{"body":{"nodeType":"YulBlock","src":"16411:220:5","statements":[{"nodeType":"YulAssignment","src":"16421:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16487:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"16492:2:5","type":"","value":"34"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16428:58:5"},"nodeType":"YulFunctionCall","src":"16428:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16421:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16593:3:5"}],"functionName":{"name":"store_literal_in_memory_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","nodeType":"YulIdentifier","src":"16504:88:5"},"nodeType":"YulFunctionCall","src":"16504:93:5"},"nodeType":"YulExpressionStatement","src":"16504:93:5"},{"nodeType":"YulAssignment","src":"16606:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16617:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"16622:2:5","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16613:3:5"},"nodeType":"YulFunctionCall","src":"16613:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16606:3:5"}]}]},"name":"abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16399:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16407:3:5","type":""}],"src":"16265:366:5"},{"body":{"nodeType":"YulBlock","src":"16808:248:5","statements":[{"nodeType":"YulAssignment","src":"16818:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16830:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"16841:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16826:3:5"},"nodeType":"YulFunctionCall","src":"16826:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16818:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16865:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"16876:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16861:3:5"},"nodeType":"YulFunctionCall","src":"16861:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16884:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"16890:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16880:3:5"},"nodeType":"YulFunctionCall","src":"16880:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16854:6:5"},"nodeType":"YulFunctionCall","src":"16854:47:5"},"nodeType":"YulExpressionStatement","src":"16854:47:5"},{"nodeType":"YulAssignment","src":"16910:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17044:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16918:124:5"},"nodeType":"YulFunctionCall","src":"16918:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16910:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16788:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16803:4:5","type":""}],"src":"16637:419:5"},{"body":{"nodeType":"YulBlock","src":"17168:75:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17190:6:5"},{"kind":"number","nodeType":"YulLiteral","src":"17198:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17186:3:5"},"nodeType":"YulFunctionCall","src":"17186:14:5"},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"17202:33:5","type":"","value":"ERC20: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17179:6:5"},"nodeType":"YulFunctionCall","src":"17179:57:5"},"nodeType":"YulExpressionStatement","src":"17179:57:5"}]},"name":"store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17160:6:5","type":""}],"src":"17062:181:5"},{"body":{"nodeType":"YulBlock","src":"17395:220:5","statements":[{"nodeType":"YulAssignment","src":"17405:74:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17471:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"17476:2:5","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17412:58:5"},"nodeType":"YulFunctionCall","src":"17412:67:5"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17405:3:5"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17577:3:5"}],"functionName":{"name":"store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","nodeType":"YulIdentifier","src":"17488:88:5"},"nodeType":"YulFunctionCall","src":"17488:93:5"},"nodeType":"YulExpressionStatement","src":"17488:93:5"},{"nodeType":"YulAssignment","src":"17590:19:5","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17601:3:5"},{"kind":"number","nodeType":"YulLiteral","src":"17606:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17597:3:5"},"nodeType":"YulFunctionCall","src":"17597:12:5"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17590:3:5"}]}]},"name":"abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17383:3:5","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17391:3:5","type":""}],"src":"17249:366:5"},{"body":{"nodeType":"YulBlock","src":"17792:248:5","statements":[{"nodeType":"YulAssignment","src":"17802:26:5","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17814:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"17825:2:5","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17810:3:5"},"nodeType":"YulFunctionCall","src":"17810:18:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17802:4:5"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17849:9:5"},{"kind":"number","nodeType":"YulLiteral","src":"17860:1:5","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17845:3:5"},"nodeType":"YulFunctionCall","src":"17845:17:5"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17868:4:5"},{"name":"headStart","nodeType":"YulIdentifier","src":"17874:9:5"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17864:3:5"},"nodeType":"YulFunctionCall","src":"17864:20:5"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17838:6:5"},"nodeType":"YulFunctionCall","src":"17838:47:5"},"nodeType":"YulExpressionStatement","src":"17838:47:5"},{"nodeType":"YulAssignment","src":"17894:139:5","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18028:4:5"}],"functionName":{"name":"abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17902:124:5"},"nodeType":"YulFunctionCall","src":"17902:131:5"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17894:4:5"}]}]},"name":"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17772:9:5","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17787:4:5","type":""}],"src":"17621:419:5"}]},"contents":"{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98(memPtr) {\n\n mstore(add(memPtr, 0), \"MockUSDC: Nothing to burn\")\n\n }\n\n function abi_encode_t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fc663b9e0879ab22f8901d8d43f566534e4b7ad1202b59b98b6d09e232057d98_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: decreased allowance below\")\n\n mstore(add(memPtr, 32), \" zero\")\n\n }\n\n function abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve from the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve to the zero addre\")\n\n mstore(add(memPtr, 32), \"ss\")\n\n }\n\n function abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: insufficient allowance\")\n\n }\n\n function abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer from the zero ad\")\n\n mstore(add(memPtr, 32), \"dress\")\n\n }\n\n function abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer to the zero addr\")\n\n mstore(add(memPtr, 32), \"ess\")\n\n }\n\n function abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds b\")\n\n mstore(add(memPtr, 32), \"alance\")\n\n }\n\n function abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: burn from the zero addres\")\n\n mstore(add(memPtr, 32), \"s\")\n\n }\n\n function abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: burn amount exceeds balan\")\n\n mstore(add(memPtr, 32), \"ce\")\n\n }\n\n function abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n store_literal_in_memory_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: mint to the zero address\")\n\n }\n\n function abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":5,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d681461024d578063a457c2d714610269578063a9059cbb14610299578063dd62ed3e146102c9576100ea565b806370a08231146101f557806395d89b41146102255780639975038c14610243576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806342966c68146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102f9565b6040516101049190610f29565b60405180910390f35b61012760048036038101906101229190610fe4565b61038b565b604051610134919061103f565b60405180910390f35b6101456103ae565b6040516101529190611069565b60405180910390f35b61017560048036038101906101709190611084565b6103b8565b604051610182919061103f565b60405180910390f35b6101936103e7565b6040516101a091906110f3565b60405180910390f35b6101c360048036038101906101be9190610fe4565b6103f0565b6040516101d0919061103f565b60405180910390f35b6101f360048036038101906101ee919061110e565b610427565b005b61020f600480360381019061020a919061113b565b610434565b60405161021c9190611069565b60405180910390f35b61022d61047c565b60405161023a9190610f29565b60405180910390f35b61024b61050e565b005b6102676004803603810190610262919061110e565b61056b565b005b610283600480360381019061027e9190610fe4565b610578565b604051610290919061103f565b60405180910390f35b6102b360048036038101906102ae9190610fe4565b6105ef565b6040516102c0919061103f565b60405180910390f35b6102e360048036038101906102de9190611168565b610612565b6040516102f09190611069565b60405180910390f35b606060038054610308906111d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610334906111d7565b80156103815780601f1061035657610100808354040283529160200191610381565b820191906000526020600020905b81548152906001019060200180831161036457829003601f168201915b5050505050905090565b600080610396610699565b90506103a38185856106a1565b600191505092915050565b6000600254905090565b6000806103c3610699565b90506103d085828561086a565b6103db8585856108f6565b60019150509392505050565b60006012905090565b6000806103fb610699565b905061041c81858561040d8589610612565b6104179190611237565b6106a1565b600191505092915050565b6104313382610b6c565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461048b906111d7565b80601f01602080910402602001604051908101604052809291908181526020018280546104b7906111d7565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061051933610434565b90506000811161055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906112b7565b60405180910390fd5b6105683382610b6c565b50565b6105753382610d39565b50565b600080610583610699565b905060006105918286610612565b9050838110156105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90611349565b60405180910390fd5b6105e382868684036106a1565b60019250505092915050565b6000806105fa610699565b90506106078185856108f6565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906113db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107769061146d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161085d9190611069565b60405180910390a3505050565b60006108768484610612565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108f057818110156108e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d9906114d9565b60405180910390fd5b6108ef84848484036106a1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c9061156b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb906115fd565b60405180910390fd5b6109df838383610e8f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c9061168f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b539190611069565b60405180910390a3610b66848484610e94565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290611721565b60405180910390fd5b610be782600083610e8f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c64906117b3565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d209190611069565b60405180910390a3610d3483600084610e94565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f9061181f565b60405180910390fd5b610db460008383610e8f565b8060026000828254610dc69190611237565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e779190611069565b60405180910390a3610e8b60008383610e94565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ed3578082015181840152602081019050610eb8565b60008484015250505050565b6000601f19601f8301169050919050565b6000610efb82610e99565b610f058185610ea4565b9350610f15818560208601610eb5565b610f1e81610edf565b840191505092915050565b60006020820190508181036000830152610f438184610ef0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f7b82610f50565b9050919050565b610f8b81610f70565b8114610f9657600080fd5b50565b600081359050610fa881610f82565b92915050565b6000819050919050565b610fc181610fae565b8114610fcc57600080fd5b50565b600081359050610fde81610fb8565b92915050565b60008060408385031215610ffb57610ffa610f4b565b5b600061100985828601610f99565b925050602061101a85828601610fcf565b9150509250929050565b60008115159050919050565b61103981611024565b82525050565b60006020820190506110546000830184611030565b92915050565b61106381610fae565b82525050565b600060208201905061107e600083018461105a565b92915050565b60008060006060848603121561109d5761109c610f4b565b5b60006110ab86828701610f99565b93505060206110bc86828701610f99565b92505060406110cd86828701610fcf565b9150509250925092565b600060ff82169050919050565b6110ed816110d7565b82525050565b600060208201905061110860008301846110e4565b92915050565b60006020828403121561112457611123610f4b565b5b600061113284828501610fcf565b91505092915050565b60006020828403121561115157611150610f4b565b5b600061115f84828501610f99565b91505092915050565b6000806040838503121561117f5761117e610f4b565b5b600061118d85828601610f99565b925050602061119e85828601610f99565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ef57607f821691505b602082108103611202576112016111a8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061124282610fae565b915061124d83610fae565b925082820190508082111561126557611264611208565b5b92915050565b7f4d6f636b555344433a204e6f7468696e6720746f206275726e00000000000000600082015250565b60006112a1601983610ea4565b91506112ac8261126b565b602082019050919050565b600060208201905081810360008301526112d081611294565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611333602583610ea4565b915061133e826112d7565b604082019050919050565b6000602082019050818103600083015261136281611326565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113c5602483610ea4565b91506113d082611369565b604082019050919050565b600060208201905081810360008301526113f4816113b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611457602283610ea4565b9150611462826113fb565b604082019050919050565b600060208201905081810360008301526114868161144a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006114c3601d83610ea4565b91506114ce8261148d565b602082019050919050565b600060208201905081810360008301526114f2816114b6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611555602583610ea4565b9150611560826114f9565b604082019050919050565b6000602082019050818103600083015261158481611548565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115e7602383610ea4565b91506115f28261158b565b604082019050919050565b60006020820190508181036000830152611616816115da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611679602683610ea4565b91506116848261161d565b604082019050919050565b600060208201905081810360008301526116a88161166c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061170b602183610ea4565b9150611716826116af565b604082019050919050565b6000602082019050818103600083015261173a816116fe565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061179d602283610ea4565b91506117a882611741565b604082019050919050565b600060208201905081810360008301526117cc81611790565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611809601f83610ea4565b9150611814826117d3565b602082019050919050565b60006020820190508181036000830152611838816117fc565b905091905056fea2646970667358221220db80c17952bbfdfde6337cbbe3fe3f03b3b28028fd799fb2393ebc5ad90036ce64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA0712D68 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x269 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2C9 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0x9975038C EQ PUSH2 0x243 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x1D9 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x13D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x122 SWAP2 SWAP1 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x134 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x145 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x152 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x175 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x170 SWAP2 SWAP1 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x182 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x10F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D0 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0x110E JUMP JUMPDEST PUSH2 0x427 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20A SWAP2 SWAP1 PUSH2 0x113B JUMP JUMPDEST PUSH2 0x434 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH2 0x47C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23A SWAP2 SWAP1 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH2 0x50E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x267 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x262 SWAP2 SWAP1 PUSH2 0x110E JUMP JUMPDEST PUSH2 0x56B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x283 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x27E SWAP2 SWAP1 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x578 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x290 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2AE SWAP2 SWAP1 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x5EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C0 SWAP2 SWAP1 PUSH2 0x103F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DE SWAP2 SWAP1 PUSH2 0x1168 JUMP JUMPDEST PUSH2 0x612 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F0 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x308 SWAP1 PUSH2 0x11D7 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x334 SWAP1 PUSH2 0x11D7 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x381 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x356 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x381 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x364 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x396 PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH2 0x3A3 DUP2 DUP6 DUP6 PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3C3 PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH2 0x3D0 DUP6 DUP3 DUP6 PUSH2 0x86A JUMP JUMPDEST PUSH2 0x3DB DUP6 DUP6 DUP6 PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3FB PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH2 0x41C DUP2 DUP6 DUP6 PUSH2 0x40D DUP6 DUP10 PUSH2 0x612 JUMP JUMPDEST PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x1237 JUMP JUMPDEST PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x431 CALLER DUP3 PUSH2 0xB6C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x48B SWAP1 PUSH2 0x11D7 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x4B7 SWAP1 PUSH2 0x11D7 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x504 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4D9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x504 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4E7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519 CALLER PUSH2 0x434 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x55E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x555 SWAP1 PUSH2 0x12B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x568 CALLER DUP3 PUSH2 0xB6C JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x575 CALLER DUP3 PUSH2 0xD39 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x583 PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x591 DUP3 DUP7 PUSH2 0x612 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CD SWAP1 PUSH2 0x1349 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E3 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5FA PUSH2 0x699 JUMP JUMPDEST SWAP1 POP PUSH2 0x607 DUP2 DUP6 DUP6 PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x710 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x707 SWAP1 PUSH2 0x13DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x77F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x776 SWAP1 PUSH2 0x146D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD PUSH2 0x85D SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x876 DUP5 DUP5 PUSH2 0x612 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x8F0 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D9 SWAP1 PUSH2 0x14D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8EF DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x6A1 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x965 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x95C SWAP1 PUSH2 0x156B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9D4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9CB SWAP1 PUSH2 0x15FD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9DF DUP4 DUP4 DUP4 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xA65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA5C SWAP1 PUSH2 0x168F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xB53 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xB66 DUP5 DUP5 DUP5 PUSH2 0xE94 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBD2 SWAP1 PUSH2 0x1721 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBE7 DUP3 PUSH1 0x0 DUP4 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC64 SWAP1 PUSH2 0x17B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xD20 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xD34 DUP4 PUSH1 0x0 DUP5 PUSH2 0xE94 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xDA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD9F SWAP1 PUSH2 0x181F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDB4 PUSH1 0x0 DUP4 DUP4 PUSH2 0xE8F JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xDC6 SWAP2 SWAP1 PUSH2 0x1237 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xE77 SWAP2 SWAP1 PUSH2 0x1069 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xE8B PUSH1 0x0 DUP4 DUP4 PUSH2 0xE94 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xED3 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xEB8 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEFB DUP3 PUSH2 0xE99 JUMP JUMPDEST PUSH2 0xF05 DUP2 DUP6 PUSH2 0xEA4 JUMP JUMPDEST SWAP4 POP PUSH2 0xF15 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xEB5 JUMP JUMPDEST PUSH2 0xF1E DUP2 PUSH2 0xEDF JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF43 DUP2 DUP5 PUSH2 0xEF0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7B DUP3 PUSH2 0xF50 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF8B DUP2 PUSH2 0xF70 JUMP JUMPDEST DUP2 EQ PUSH2 0xF96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xFA8 DUP2 PUSH2 0xF82 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFC1 DUP2 PUSH2 0xFAE JUMP JUMPDEST DUP2 EQ PUSH2 0xFCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xFDE DUP2 PUSH2 0xFB8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFFB JUMPI PUSH2 0xFFA PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1009 DUP6 DUP3 DUP7 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x101A DUP6 DUP3 DUP7 ADD PUSH2 0xFCF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1039 DUP2 PUSH2 0x1024 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1054 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1030 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1063 DUP2 PUSH2 0xFAE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x107E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x105A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x109D JUMPI PUSH2 0x109C PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x10AB DUP7 DUP3 DUP8 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x10BC DUP7 DUP3 DUP8 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x10CD DUP7 DUP3 DUP8 ADD PUSH2 0xFCF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x10ED DUP2 PUSH2 0x10D7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1108 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x10E4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1124 JUMPI PUSH2 0x1123 PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1132 DUP5 DUP3 DUP6 ADD PUSH2 0xFCF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1151 JUMPI PUSH2 0x1150 PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x115F DUP5 DUP3 DUP6 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x117F JUMPI PUSH2 0x117E PUSH2 0xF4B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x118D DUP6 DUP3 DUP7 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x119E DUP6 DUP3 DUP7 ADD PUSH2 0xF99 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x11EF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1202 JUMPI PUSH2 0x1201 PUSH2 0x11A8 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1242 DUP3 PUSH2 0xFAE JUMP JUMPDEST SWAP2 POP PUSH2 0x124D DUP4 PUSH2 0xFAE JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1265 JUMPI PUSH2 0x1264 PUSH2 0x1208 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4D6F636B555344433A204E6F7468696E6720746F206275726E00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12A1 PUSH1 0x19 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x12AC DUP3 PUSH2 0x126B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x12D0 DUP2 PUSH2 0x1294 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1333 PUSH1 0x25 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x133E DUP3 PUSH2 0x12D7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1362 DUP2 PUSH2 0x1326 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C5 PUSH1 0x24 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x13D0 DUP3 PUSH2 0x1369 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x13F4 DUP2 PUSH2 0x13B8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1457 PUSH1 0x22 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1462 DUP3 PUSH2 0x13FB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1486 DUP2 PUSH2 0x144A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C3 PUSH1 0x1D DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x14CE DUP3 PUSH2 0x148D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x14F2 DUP2 PUSH2 0x14B6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1555 PUSH1 0x25 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1560 DUP3 PUSH2 0x14F9 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1584 DUP2 PUSH2 0x1548 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E7 PUSH1 0x23 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x15F2 DUP3 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1616 DUP2 PUSH2 0x15DA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1679 PUSH1 0x26 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1684 DUP3 PUSH2 0x161D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x16A8 DUP2 PUSH2 0x166C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x170B PUSH1 0x21 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1716 DUP3 PUSH2 0x16AF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x173A DUP2 PUSH2 0x16FE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x179D PUSH1 0x22 DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x17A8 DUP3 PUSH2 0x1741 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x17CC DUP2 PUSH2 0x1790 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1809 PUSH1 0x1F DUP4 PUSH2 0xEA4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1814 DUP3 PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1838 DUP2 PUSH2 0x17FC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB DUP1 0xC1 PUSH26 0x52BBFDFDE6337CBBE3FE3F03B3B28028FD799FB2393EBC5AD900 CALLDATASIZE 0xCE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"161:496:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3242:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5190:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3091:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;378:83:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3406:125:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2365:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;467:188:4;;;:::i;:::-;;289:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6592:427:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3727:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3974:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2154:98;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;4530:13;4546:12;:10;:12::i;:::-;4530:28;;4568:32;4577:5;4584:7;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;:::o;3242:106::-;3303:7;3329:12;;3322:19;;3242:106;:::o;5190:286::-;5317:4;5333:15;5351:12;:10;:12::i;:::-;5333:30;;5373:38;5389:4;5395:7;5404:6;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;5465:4;5458:11;;;5190:286;;;;;:::o;3091:91::-;3149:5;3173:2;3166:9;;3091:91;:::o;5871:234::-;5959:4;5975:13;5991:12;:10;:12::i;:::-;5975:28;;6013:64;6022:5;6029:7;6066:10;6038:25;6048:5;6055:7;6038:9;:25::i;:::-;:38;;;;:::i;:::-;6013:8;:64::i;:::-;6094:4;6087:11;;;5871:234;;;;:::o;378:83:4:-;428:26;434:10;446:7;428:5;:26::i;:::-;378:83;:::o;3406:125:0:-;3480:7;3506:9;:18;3516:7;3506:18;;;;;;;;;;;;;;;;3499:25;;3406:125;;;:::o;2365:102::-;2421:13;2453:7;2446:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:102;:::o;467:188:4:-;505:18;526:21;536:10;526:9;:21::i;:::-;505:42;;578:1;565:10;:14;557:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;619:29;625:10;637;619:5;:29::i;:::-;495:160;467:188::o;289:83::-;339:26;345:10;357:7;339:5;:26::i;:::-;289:83;:::o;6592:427:0:-;6685:4;6701:13;6717:12;:10;:12::i;:::-;6701:28;;6739:24;6766:25;6776:5;6783:7;6766:9;:25::i;:::-;6739:52;;6829:15;6809:16;:35;;6801:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;:::-;7008:4;7001:11;;;;6592:427;;;;:::o;3727:189::-;3806:4;3822:13;3838:12;:10;:12::i;:::-;3822:28;;3860;3870:5;3877:2;3881:6;3860:9;:28::i;:::-;3905:4;3898:11;;;3727:189;;;;:::o;3974:149::-;4063:7;4089:11;:18;4101:5;4089:18;;;;;;;;;;;;;;;:27;4108:7;4089:27;;;;;;;;;;;;;;;;4082:34;;3974:149;;;;:::o;640:96:3:-;693:7;719:10;712:17;;640:96;:::o;10504:370:0:-;10652:1;10635:19;;:5;:19;;;10627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10732:1;10713:21;;:7;:21;;;10705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10814:6;10784:11;:18;10796:5;10784:18;;;;;;;;;;;;;;;:27;10803:7;10784:27;;;;;;;;;;;;;;;:36;;;;10851:7;10835:32;;10844:5;10835:32;;;10860:6;10835:32;;;;;;:::i;:::-;;;;;;;;10504:370;;;:::o;11155:441::-;11285:24;11312:25;11322:5;11329:7;11312:9;:25::i;:::-;11285:52;;11371:17;11351:16;:37;11347:243;;11432:6;11412:16;:26;;11404:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11347:243;11275:321;11155:441;;;:::o;7473:818::-;7615:1;7599:18;;:4;:18;;;7591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7691:1;7677:16;;:2;:16;;;7669:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7744:38;7765:4;7771:2;7775:6;7744:20;:38::i;:::-;7793:19;7815:9;:15;7825:4;7815:15;;;;;;;;;;;;;;;;7793:37;;7863:6;7848:11;:21;;7840:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:6;7964:11;:20;7946:9;:15;7956:4;7946:15;;;;;;;;;;;;;;;:38;;;;8178:6;8161:9;:13;8171:2;8161:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8225:2;8210:26;;8219:4;8210:26;;;8229:6;8210:26;;;;;;:::i;:::-;;;;;;;;8247:37;8267:4;8273:2;8277:6;8247:19;:37::i;:::-;7581:710;7473:818;;;:::o;9422:659::-;9524:1;9505:21;;:7;:21;;;9497:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9575:49;9596:7;9613:1;9617:6;9575:20;:49::i;:::-;9635:22;9660:9;:18;9670:7;9660:18;;;;;;;;;;;;;;;;9635:43;;9714:6;9696:14;:24;;9688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9831:6;9814:14;:23;9793:9;:18;9803:7;9793:18;;;;;;;;;;;;;;;:44;;;;9946:6;9930:12;;:22;;;;;;;;;;;10004:1;9978:37;;9987:7;9978:37;;;10008:6;9978:37;;;;;;:::i;:::-;;;;;;;;10026:48;10046:7;10063:1;10067:6;10026:19;:48::i;:::-;9487:594;9422:659;;:::o;8567:535::-;8669:1;8650:21;;:7;:21;;;8642:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8718:49;8747:1;8751:7;8760:6;8718:20;:49::i;:::-;8794:6;8778:12;;:22;;;;;;;:::i;:::-;;;;;;;;8968:6;8946:9;:18;8956:7;8946:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;9020:7;8999:37;;9016:1;8999:37;;;9029:6;8999:37;;;;;;:::i;:::-;;;;;;;;9047:48;9075:1;9079:7;9088:6;9047:19;:48::i;:::-;8567:535;;:::o;12180:121::-;;;;:::o;12889:120::-;;;;:::o;7:99:5:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:474::-;5591:6;5599;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5901:2;5927:53;5972:7;5963:6;5952:9;5948:22;5927:53;:::i;:::-;5917:63;;5872:118;5523:474;;;;;:::o;6003:180::-;6051:77;6048:1;6041:88;6148:4;6145:1;6138:15;6172:4;6169:1;6162:15;6189:320;6233:6;6270:1;6264:4;6260:12;6250:22;;6317:1;6311:4;6307:12;6338:18;6328:81;;6394:4;6386:6;6382:17;6372:27;;6328:81;6456:2;6448:6;6445:14;6425:18;6422:38;6419:84;;6475:18;;:::i;:::-;6419:84;6240:269;6189:320;;;:::o;6515:180::-;6563:77;6560:1;6553:88;6660:4;6657:1;6650:15;6684:4;6681:1;6674:15;6701:191;6741:3;6760:20;6778:1;6760:20;:::i;:::-;6755:25;;6794:20;6812:1;6794:20;:::i;:::-;6789:25;;6837:1;6834;6830:9;6823:16;;6858:3;6855:1;6852:10;6849:36;;;6865:18;;:::i;:::-;6849:36;6701:191;;;;:::o;6898:175::-;7038:27;7034:1;7026:6;7022:14;7015:51;6898:175;:::o;7079:366::-;7221:3;7242:67;7306:2;7301:3;7242:67;:::i;:::-;7235:74;;7318:93;7407:3;7318:93;:::i;:::-;7436:2;7431:3;7427:12;7420:19;;7079:366;;;:::o;7451:419::-;7617:4;7655:2;7644:9;7640:18;7632:26;;7704:9;7698:4;7694:20;7690:1;7679:9;7675:17;7668:47;7732:131;7858:4;7732:131;:::i;:::-;7724:139;;7451:419;;;:::o;7876:224::-;8016:34;8012:1;8004:6;8000:14;7993:58;8085:7;8080:2;8072:6;8068:15;8061:32;7876:224;:::o;8106:366::-;8248:3;8269:67;8333:2;8328:3;8269:67;:::i;:::-;8262:74;;8345:93;8434:3;8345:93;:::i;:::-;8463:2;8458:3;8454:12;8447:19;;8106:366;;;:::o;8478:419::-;8644:4;8682:2;8671:9;8667:18;8659:26;;8731:9;8725:4;8721:20;8717:1;8706:9;8702:17;8695:47;8759:131;8885:4;8759:131;:::i;:::-;8751:139;;8478:419;;;:::o;8903:223::-;9043:34;9039:1;9031:6;9027:14;9020:58;9112:6;9107:2;9099:6;9095:15;9088:31;8903:223;:::o;9132:366::-;9274:3;9295:67;9359:2;9354:3;9295:67;:::i;:::-;9288:74;;9371:93;9460:3;9371:93;:::i;:::-;9489:2;9484:3;9480:12;9473:19;;9132:366;;;:::o;9504:419::-;9670:4;9708:2;9697:9;9693:18;9685:26;;9757:9;9751:4;9747:20;9743:1;9732:9;9728:17;9721:47;9785:131;9911:4;9785:131;:::i;:::-;9777:139;;9504:419;;;:::o;9929:221::-;10069:34;10065:1;10057:6;10053:14;10046:58;10138:4;10133:2;10125:6;10121:15;10114:29;9929:221;:::o;10156:366::-;10298:3;10319:67;10383:2;10378:3;10319:67;:::i;:::-;10312:74;;10395:93;10484:3;10395:93;:::i;:::-;10513:2;10508:3;10504:12;10497:19;;10156:366;;;:::o;10528:419::-;10694:4;10732:2;10721:9;10717:18;10709:26;;10781:9;10775:4;10771:20;10767:1;10756:9;10752:17;10745:47;10809:131;10935:4;10809:131;:::i;:::-;10801:139;;10528:419;;;:::o;10953:179::-;11093:31;11089:1;11081:6;11077:14;11070:55;10953:179;:::o;11138:366::-;11280:3;11301:67;11365:2;11360:3;11301:67;:::i;:::-;11294:74;;11377:93;11466:3;11377:93;:::i;:::-;11495:2;11490:3;11486:12;11479:19;;11138:366;;;:::o;11510:419::-;11676:4;11714:2;11703:9;11699:18;11691:26;;11763:9;11757:4;11753:20;11749:1;11738:9;11734:17;11727:47;11791:131;11917:4;11791:131;:::i;:::-;11783:139;;11510:419;;;:::o;11935:224::-;12075:34;12071:1;12063:6;12059:14;12052:58;12144:7;12139:2;12131:6;12127:15;12120:32;11935:224;:::o;12165:366::-;12307:3;12328:67;12392:2;12387:3;12328:67;:::i;:::-;12321:74;;12404:93;12493:3;12404:93;:::i;:::-;12522:2;12517:3;12513:12;12506:19;;12165:366;;;:::o;12537:419::-;12703:4;12741:2;12730:9;12726:18;12718:26;;12790:9;12784:4;12780:20;12776:1;12765:9;12761:17;12754:47;12818:131;12944:4;12818:131;:::i;:::-;12810:139;;12537:419;;;:::o;12962:222::-;13102:34;13098:1;13090:6;13086:14;13079:58;13171:5;13166:2;13158:6;13154:15;13147:30;12962:222;:::o;13190:366::-;13332:3;13353:67;13417:2;13412:3;13353:67;:::i;:::-;13346:74;;13429:93;13518:3;13429:93;:::i;:::-;13547:2;13542:3;13538:12;13531:19;;13190:366;;;:::o;13562:419::-;13728:4;13766:2;13755:9;13751:18;13743:26;;13815:9;13809:4;13805:20;13801:1;13790:9;13786:17;13779:47;13843:131;13969:4;13843:131;:::i;:::-;13835:139;;13562:419;;;:::o;13987:225::-;14127:34;14123:1;14115:6;14111:14;14104:58;14196:8;14191:2;14183:6;14179:15;14172:33;13987:225;:::o;14218:366::-;14360:3;14381:67;14445:2;14440:3;14381:67;:::i;:::-;14374:74;;14457:93;14546:3;14457:93;:::i;:::-;14575:2;14570:3;14566:12;14559:19;;14218:366;;;:::o;14590:419::-;14756:4;14794:2;14783:9;14779:18;14771:26;;14843:9;14837:4;14833:20;14829:1;14818:9;14814:17;14807:47;14871:131;14997:4;14871:131;:::i;:::-;14863:139;;14590:419;;;:::o;15015:220::-;15155:34;15151:1;15143:6;15139:14;15132:58;15224:3;15219:2;15211:6;15207:15;15200:28;15015:220;:::o;15241:366::-;15383:3;15404:67;15468:2;15463:3;15404:67;:::i;:::-;15397:74;;15480:93;15569:3;15480:93;:::i;:::-;15598:2;15593:3;15589:12;15582:19;;15241:366;;;:::o;15613:419::-;15779:4;15817:2;15806:9;15802:18;15794:26;;15866:9;15860:4;15856:20;15852:1;15841:9;15837:17;15830:47;15894:131;16020:4;15894:131;:::i;:::-;15886:139;;15613:419;;;:::o;16038:221::-;16178:34;16174:1;16166:6;16162:14;16155:58;16247:4;16242:2;16234:6;16230:15;16223:29;16038:221;:::o;16265:366::-;16407:3;16428:67;16492:2;16487:3;16428:67;:::i;:::-;16421:74;;16504:93;16593:3;16504:93;:::i;:::-;16622:2;16617:3;16613:12;16606:19;;16265:366;;;:::o;16637:419::-;16803:4;16841:2;16830:9;16826:18;16818:26;;16890:9;16884:4;16880:20;16876:1;16865:9;16861:17;16854:47;16918:131;17044:4;16918:131;:::i;:::-;16910:139;;16637:419;;;:::o;17062:181::-;17202:33;17198:1;17190:6;17186:14;17179:57;17062:181;:::o;17249:366::-;17391:3;17412:67;17476:2;17471:3;17412:67;:::i;:::-;17405:74;;17488:93;17577:3;17488:93;:::i;:::-;17606:2;17601:3;17597:12;17590:19;;17249:366;;;:::o;17621:419::-;17787:4;17825:2;17814:9;17810:18;17802:26;;17874:9;17868:4;17864:20;17860:1;17849:9;17845:17;17838:47;17902:131;18028:4;17902:131;:::i;:::-;17894:139;;17621:419;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"1252200","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"infinite","balanceOf(address)":"2864","burn(uint256)":"infinite","burnAll()":"36156","decimals()":"388","decreaseAllowance(address,uint256)":"infinite","increaseAllowance(address,uint256)":"infinite","mint(uint256)":"infinite","name()":"infinite","symbol()":"infinite","totalSupply()":"2505","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnAll()":"9975038c","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","mint(uint256)":"a0712d68","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Mock mintable USDC\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/MockUSDC.sol\":\"MockUSDC\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n mapping(address => uint256) private _balances;\\n\\n mapping(address => mapping(address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * The default value of {decimals} is 18. To select a different value for\\n * {decimals} you should overload it.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n * overridden;\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) public virtual override returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, amount);\\n _transfer(from, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, allowance(owner, spender) + addedValue);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n uint256 currentAllowance = allowance(owner, spender);\\n require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - subtractedValue);\\n }\\n\\n return true;\\n }\\n\\n /**\\n * @dev Moves `amount` of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {\\n require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, amount);\\n\\n uint256 fromBalance = _balances[from];\\n require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n unchecked {\\n _balances[from] = fromBalance - amount;\\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\\n // decrementing then incrementing.\\n _balances[to] += amount;\\n }\\n\\n emit Transfer(from, to, amount);\\n\\n _afterTokenTransfer(from, to, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply += amount;\\n unchecked {\\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\\n _balances[account] += amount;\\n }\\n emit Transfer(address(0), account, amount);\\n\\n _afterTokenTransfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n uint256 accountBalance = _balances[account];\\n require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[account] = accountBalance - amount;\\n // Overflow not possible: amount <= accountBalance <= totalSupply.\\n _totalSupply -= amount;\\n }\\n\\n emit Transfer(account, address(0), amount);\\n\\n _afterTokenTransfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(\\n address owner,\\n address spender,\\n uint256 amount\\n ) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n *\\n * Does not update the allowance amount in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Might emit an {Approval} event.\\n */\\n function _spendAllowance(\\n address owner,\\n address spender,\\n uint256 amount\\n ) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - amount);\\n }\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * will be transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * has been transferred to `to`.\\n * - when `from` is zero, `amount` tokens have been minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 amount\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/mocks/MockUSDC.sol\":{\"content\":\"//SPDX-License-Identifier: UNLICENSED\\npragma solidity 0.8.18;\\n\\nimport {ERC20} from \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\n\\n/// @dev Mock mintable USDC\\ncontract MockUSDC is ERC20 {\\n constructor() ERC20(\\\"MockUDSC\\\", \\\"MUSDC\\\") {\\n _mint(msg.sender, 1_000_000E18);\\n }\\n\\n function mint(uint256 _amount) external {\\n _mint(msg.sender, _amount);\\n }\\n\\n function burn(uint256 _amount) external {\\n _burn(msg.sender, _amount);\\n }\\n\\n function burnAll() external {\\n uint256 _balanceOf = balanceOf(msg.sender);\\n require(_balanceOf > 0, \\\"MockUSDC: Nothing to burn\\\");\\n _burn(msg.sender, _balanceOf);\\n }\\n}\\n\",\"keccak256\":\"0x61bfaf33e40f454343e9596b92d243cef6ee3004b64eabf67895c8117d1ce6a5\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":15,"contract":"contracts/mocks/MockUSDC.sol:MockUSDC","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":21,"contract":"contracts/mocks/MockUSDC.sol:MockUSDC","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":23,"contract":"contracts/mocks/MockUSDC.sol:MockUSDC","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":25,"contract":"contracts/mocks/MockUSDC.sol:MockUSDC","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":27,"contract":"contracts/mocks/MockUSDC.sol:MockUSDC","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}}}}} \ No newline at end of file diff --git a/artifacts/contracts/Paycrest.sol/Paycrest.dbg.json b/artifacts/contracts/Paycrest.sol/Paycrest.dbg.json index 9af73ee..bbc8b09 100644 --- a/artifacts/contracts/Paycrest.sol/Paycrest.dbg.json +++ b/artifacts/contracts/Paycrest.sol/Paycrest.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/5175d152885cc005596ba10118454f6e.json" + "buildInfo": "../../build-info/c1e7e423d2b99f08521b07865d24a278.json" } diff --git a/artifacts/contracts/Paycrest.sol/Paycrest.json b/artifacts/contracts/Paycrest.sol/Paycrest.json index 120fcb9..9f7f388 100644 --- a/artifacts/contracts/Paycrest.sol/Paycrest.json +++ b/artifacts/contracts/Paycrest.sol/Paycrest.json @@ -94,15 +94,9 @@ "inputs": [ { "indexed": false, - "internalType": "uint128", + "internalType": "uint64", "name": "protocolFee", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "validatorFeePercent", - "type": "uint128" + "type": "uint64" } ], "name": "PaycrestFees", @@ -343,14 +337,9 @@ "name": "getFeeDetails", "outputs": [ { - "internalType": "uint128", - "name": "", - "type": "uint128" - }, - { - "internalType": "uint128", + "internalType": "uint64", "name": "", - "type": "uint128" + "type": "uint64" }, { "internalType": "uint256", @@ -654,11 +643,6 @@ "name": "_label", "type": "bytes32" }, - { - "internalType": "address[]", - "name": "_validators", - "type": "address[]" - }, { "internalType": "address", "name": "_liquidityProvider", @@ -738,14 +722,9 @@ { "inputs": [ { - "internalType": "uint128", + "internalType": "uint64", "name": "_protocolFeePercent", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "_validatorFeePercent", - "type": "uint128" + "type": "uint64" } ], "name": "updateProtocolFees", @@ -777,8 +756,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d2565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000175565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620000ec5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e39190620001b5565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015d602783620000ee565b91506200016a82620000ff565b604082019050919050565b6000602082019050818103600083015262000190816200014e565b9050919050565b600060ff82169050919050565b620001af8162000197565b82525050565b6000602082019050620001cc6000830184620001a4565b92915050565b61416180620001e26000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063d8e8de341161007c578063d8e8de341461034f578063d9caed121461037f578063e4683a791461039b578063e8d6e0de146103cb578063f2fde38b146103e9578063f5326b191461040557610137565b80638da5cb5b146102bd57806399e3c0b4146102db578063b810c636146102f7578063c4d66de814610317578063cb79455b1461033357610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb1461027157806387490d861461028d57610137565b8063026213381461013c578063137764fb1461016c5780632654ec7e1461019d57806332200882146101cd5780633ad59dbc146101e9575b600080fd5b61015660048036038101906101519190612780565b610421565b604051610163919061289a565b60405180910390f35b610186600480360381019061018191906129f7565b61055f565b604051610194929190612ad7565b60405180910390f35b6101b760048036038101906101b29190612bd0565b61096a565b6040516101c49190612cbb565b60405180910390f35b6101e760048036038101906101e29190612e7a565b610e42565b005b6101f1610f56565b6040516101fe9190612f55565b60405180910390f35b61020f610fe8565b005b61022b60048036038101906102269190612f77565b610ffc565b6040516102389190612fb3565b60405180910390f35b61025b60048036038101906102569190612780565b611052565b60405161026891906130c1565b60405180910390f35b61028b600480360381019061028691906130dd565b611283565b005b6102a760048036038101906102a29190612780565b6113d0565b6040516102b4919061314c565b60405180910390f35b6102c5611411565b6040516102d29190613167565b60405180910390f35b6102f560048036038101906102f09190613182565b61143b565b005b6102ff6115f0565b60405161030e9392919061320f565b60405180910390f35b610331600480360381019061032c9190612f77565b611641565b005b61034d6004803603810190610348919061329c565b611858565b005b61036960048036038101906103649190612f77565b6118af565b6040516103769190612fb3565b60405180910390f35b610399600480360381019061039491906132e9565b611905565b005b6103b560048036038101906103b0919061333c565b611991565b6040516103c29190612fb3565b60405180910390f35b6103d3611c3e565b6040516103e09190613167565b60405180910390f35b61040360048036038101906103fe9190612f77565b611c68565b005b61041f600480360381019061041a91906133a8565b611ceb565b005b60606000609e6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049e57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610458565b50505050905060008151905060008167ffffffffffffffff8111156104c6576104c5612ce7565b5b6040519080825280602002602001820160405280156104ff57816020015b6104ec612613565b8152602001906001900390816104e45790505b50905060005b82811015610553578381815181106105205761051f6133e8565b5b602002602001015182828151811061053b5761053a6133e8565b5b60200260200101819052508080600101915050610505565b50809350505050919050565b600080606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e990613474565b60405180910390fd5b60a060008a8152602001908152602001600020600401600c9054906101000a900460ff1615610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d906134e0565b60405180910390fd5b600060a060008b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff1660a060008c815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff166106d8919061352f565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600061071d8b8767ffffffffffffffff1687611da2565b9050600060a060008d815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036107bc57600160a060008d8152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a060008d81526020019081526020016000206003015411156107bb576107ba8b611f3d565b5b5b60008160000151111561086f578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b815260040161082a92919061356f565b6020604051808303816000875af1158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d91906135ad565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b81526004016108ae92919061356f565b6020604051808303816000875af11580156108cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f191906135ad565b506109028989848460400151612091565b8673ffffffffffffffffffffffffffffffffffffffff168b7ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268e8d8a60405161094d93929190613615565b60405180910390a38a829350935050509850989650505050505050565b60006109798b8b86898d6121db565b606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168b6109b8919061364c565b6109c291906136bd565b851115610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb9061373a565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610a419392919061375a565b6020604051808303816000875af1158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8491906135ad565b5060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610ad590613791565b91905055503360a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610b2c92919061356f565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b81525060a0600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610e2c959493929190613846565b60405180910390a49a9950505050505050505050565b610e4a6123ea565b60008151905060005b81811015610f5057609e6000858152602001908152602001600020838281518110610e8157610e806133e8565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610ee657610ee56133e8565b5b602002602001015160200151815260200185815250609f6000858481518110610f1257610f116133e8565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610e53565b50505050565b606060698054610f65906138c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f91906138c3565b8015610fde5780601f10610fb357610100808354040283529160200191610fde565b820191906000526020600020905b815481529060010190602001808311610fc157829003601f168201915b5050505050905090565b610ff06123ea565b610ffa6000612468565b565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61105a612633565b60a06000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b61128b6123ea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613940565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113635780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113cc5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113d86126f5565b609f6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114436123ea565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990613940565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036115315780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115b05780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516115e393929190613960565b60405180910390a1505050565b6000806000606660009054906101000a90046fffffffffffffffffffffffffffffffff16606660109054906101000a90046fffffffffffffffffffffffffffffffff16606554925092509250909192565b60008060019054906101000a900460ff161590508080156116725750600160008054906101000a900460ff1660ff16105b8061169f57506116813061252e565b15801561169e5750600160008054906101000a900460ff1660ff16145b5b6116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590613a09565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561171b576001600060016101000a81548160ff0219169083151502179055505b6001609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506101f4606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506117fb612551565b80156118545760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161184b9190613a71565b60405180910390a15b5050565b6118606123ea565b818160699182611871929190613c39565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516118a3929190613d36565b60405180910390a15050565b6000609d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61190d6123ea565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161194892919061356f565b6020604051808303816000875af1158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b91906135ad565b50505050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90613474565b60405180910390fd5b60a06000848152602001908152602001600020600401600c9054906101000a900460ff1615611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e906134e0565b60405180910390fd5b600160a06000858152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a0600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60a0600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660a06000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611bb992919061356f565b6020604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc91906135ad565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611c2c9190612cbb565b60405180910390a26001905092915050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c706123ea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613dcc565b60405180910390fd5b611ce881612468565b50565b611cf36123ea565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051611d96929190613dec565b60405180910390a15050565b611daa612715565b600060a0600086815260200190815260200160002060060154905060a060008681526020019081526020016000206003015481611de79190613e15565b9050606554846bffffffffffffffffffffffff1682611e06919061364c565b611e1091906136bd565b826020018181525050606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360200151611e5c919061364c565b611e6691906136bd565b82600001818152505081600001518260200151611e839190613e15565b826020018181525050606554606660109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360000151611ecf919061364c565b611ed991906136bd565b826040018181525050600082604001518360000151611ef89190613e15565b90508315611f29578083602001818151611f129190613e49565b915081815250506000836000018181525050611f34565b808360000181815250505b50509392505050565b600060a0600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060a0600084815260200190815260200160002060030154905060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161200492919061356f565b6020604051808303816000875af1158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906135ad565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b6000848490509050600081836120a791906136bd565b905060005b828110156121d2578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8888848181106120e3576120e26133e8565b5b90506020020160208101906120f89190612f77565b846040518363ffffffff1660e01b815260040161211692919061356f565b6020604051808303816000875af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215991906135ad565b508187878381811061216e5761216d6133e8565b5b90506020020160208101906121839190612f77565b73ffffffffffffffffffffffffffffffffffffffff167f61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c260405160405180910390a380806001019150506120ac565b50505050505050565b609c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225e90613ec9565b60405180910390fd5b600084116122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190613f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090613fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f90613fa1565b60405180910390fd5b6000801b609f600083815260200190815260200160002060000154036123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123da9061400d565b60405180910390fd5b5050505050565b6123f26125aa565b73ffffffffffffffffffffffffffffffffffffffff16612410611411565b73ffffffffffffffffffffffffffffffffffffffff1614612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614079565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166125a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125979061410b565b60405180910390fd5b6125a86125b2565b565b600033905090565b600060019054906101000a900460ff16612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f89061410b565b60405180910390fd5b61261161260c6125aa565b612468565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b60405180606001604052806000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61275d8161274a565b811461276857600080fd5b50565b60008135905061277a81612754565b92915050565b60006020828403121561279657612795612740565b5b60006127a48482850161276b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6127e28161274a565b82525050565b6040820160008201516127fe60008501826127d9565b50602082015161281160208501826127d9565b50505050565b600061282383836127e8565b60408301905092915050565b6000602082019050919050565b6000612847826127ad565b61285181856127b8565b935061285c836127c9565b8060005b8381101561288d5781516128748882612817565b975061287f8361282f565b925050600181019050612860565b5085935050505092915050565b600060208201905081810360008301526128b4818461283c565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126128e1576128e06128bc565b5b8235905067ffffffffffffffff8111156128fe576128fd6128c1565b5b60208301915083602082028301111561291a576129196128c6565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061294c82612921565b9050919050565b61295c81612941565b811461296757600080fd5b50565b60008135905061297981612953565b92915050565b600067ffffffffffffffff82169050919050565b61299c8161297f565b81146129a757600080fd5b50565b6000813590506129b981612993565b92915050565b60008115159050919050565b6129d4816129bf565b81146129df57600080fd5b50565b6000813590506129f1816129cb565b92915050565b60008060008060008060008060e0898b031215612a1757612a16612740565b5b6000612a258b828c0161276b565b9850506020612a368b828c0161276b565b9750506040612a478b828c0161276b565b965050606089013567ffffffffffffffff811115612a6857612a67612745565b5b612a748b828c016128cb565b95509550506080612a878b828c0161296a565b93505060a0612a988b828c016129aa565b92505060c0612aa98b828c016129e2565b9150509295985092959890939650565b612ac28161274a565b82525050565b612ad181612941565b82525050565b6000604082019050612aec6000830185612ab9565b612af96020830184612ac8565b9392505050565b6000819050919050565b612b1381612b00565b8114612b1e57600080fd5b50565b600081359050612b3081612b0a565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612b5781612b36565b8114612b6257600080fd5b50565b600081359050612b7481612b4e565b92915050565b60008083601f840112612b9057612b8f6128bc565b5b8235905067ffffffffffffffff811115612bad57612bac6128c1565b5b602083019150836001820283011115612bc957612bc86128c6565b5b9250929050565b6000806000806000806000806000806101208b8d031215612bf457612bf3612740565b5b6000612c028d828e0161296a565b9a50506020612c138d828e01612b21565b9950506040612c248d828e0161276b565b9850506060612c358d828e0161276b565b9750506080612c468d828e01612b65565b96505060a0612c578d828e0161296a565b95505060c0612c688d828e01612b21565b94505060e0612c798d828e0161296a565b9350506101008b013567ffffffffffffffff811115612c9b57612c9a612745565b5b612ca78d828e01612b7a565b92509250509295989b9194979a5092959850565b6000602082019050612cd06000830184612ab9565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d1f82612cd6565b810181811067ffffffffffffffff82111715612d3e57612d3d612ce7565b5b80604052505050565b6000612d51612736565b9050612d5d8282612d16565b919050565b600067ffffffffffffffff821115612d7d57612d7c612ce7565b5b602082029050602081019050919050565b600080fd5b600060408284031215612da957612da8612d8e565b5b612db36040612d47565b90506000612dc38482850161276b565b6000830152506020612dd78482850161276b565b60208301525092915050565b6000612df6612df184612d62565b612d47565b90508083825260208201905060408402830185811115612e1957612e186128c6565b5b835b81811015612e425780612e2e8882612d93565b845260208401935050604081019050612e1b565b5050509392505050565b600082601f830112612e6157612e606128bc565b5b8135612e71848260208601612de3565b91505092915050565b60008060408385031215612e9157612e90612740565b5b6000612e9f8582860161276b565b925050602083013567ffffffffffffffff811115612ec057612ebf612745565b5b612ecc85828601612e4c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f10578082015181840152602081019050612ef5565b60008484015250505050565b6000612f2782612ed6565b612f318185612ee1565b9350612f41818560208601612ef2565b612f4a81612cd6565b840191505092915050565b60006020820190508181036000830152612f6f8184612f1c565b905092915050565b600060208284031215612f8d57612f8c612740565b5b6000612f9b8482850161296a565b91505092915050565b612fad816129bf565b82525050565b6000602082019050612fc86000830184612fa4565b92915050565b612fd781612941565b82525050565b612fe681612b00565b82525050565b612ff581612b36565b82525050565b613004816129bf565b82525050565b610120820160008201516130216000850182612fce565b5060208201516130346020850182612fce565b5060408201516130476040850182612fce565b50606082015161305a6060850182612fdd565b50608082015161306d6080850182612fec565b5060a082015161308060a0850182612ffb565b5060c082015161309360c0850182612fce565b5060e08201516130a660e0850182612fec565b506101008201516130bb610100850182612fdd565b50505050565b6000610120820190506130d7600083018461300a565b92915050565b600080604083850312156130f4576130f3612740565b5b60006131028582860161276b565b92505060206131138582860161296a565b9150509250929050565b60408201600082015161313360008501826127d9565b50602082015161314660208501826127d9565b50505050565b6000604082019050613161600083018461311d565b92915050565b600060208201905061317c6000830184612ac8565b92915050565b60008060006060848603121561319b5761319a612740565b5b60006131a98682870161276b565b93505060206131ba8682870161296a565b92505060406131cb868287016129e2565b9150509250925092565b60006fffffffffffffffffffffffffffffffff82169050919050565b6131fa816131d5565b82525050565b61320981612b00565b82525050565b600060608201905061322460008301866131f1565b61323160208301856131f1565b61323e6040830184613200565b949350505050565b60008083601f84011261325c5761325b6128bc565b5b8235905067ffffffffffffffff811115613279576132786128c1565b5b602083019150836001820283011115613295576132946128c6565b5b9250929050565b600080602083850312156132b3576132b2612740565b5b600083013567ffffffffffffffff8111156132d1576132d0612745565b5b6132dd85828601613246565b92509250509250929050565b60008060006060848603121561330257613301612740565b5b60006133108682870161296a565b93505060206133218682870161296a565b925050604061333286828701612b21565b9150509250925092565b6000806040838503121561335357613352612740565b5b60006133618582860161276b565b92505060206133728582860161276b565b9150509250929050565b613385816131d5565b811461339057600080fd5b50565b6000813590506133a28161337c565b92915050565b600080604083850312156133bf576133be612740565b5b60006133cd85828601613393565b92505060206133de85828601613393565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b600061345e600e83613417565b915061346982613428565b602082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b60006134ca600e83613417565b91506134d582613494565b602082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353a82612b36565b915061354583612b36565b925082820390506bffffffffffffffffffffffff81111561356957613568613500565b5b92915050565b60006040820190506135846000830185612ac8565b6135916020830184613200565b9392505050565b6000815190506135a7816129cb565b92915050565b6000602082840312156135c3576135c2612740565b5b60006135d184828501613598565b91505092915050565b6000819050919050565b60006135ff6135fa6135f58461297f565b6135da565b612b36565b9050919050565b61360f816135e4565b82525050565b600060608201905061362a6000830186612ab9565b6136376020830185612ab9565b6136446040830184613606565b949350505050565b600061365782612b00565b915061366283612b00565b925082820261367081612b00565b9150828204841483151761368757613686613500565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136c882612b00565b91506136d383612b00565b9250826136e3576136e261368e565b5b828204905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b6000613724601083613417565b915061372f826136ee565b602082019050919050565b6000602082019050818103600083015261375381613717565b9050919050565b600060608201905061376f6000830186612ac8565b61377c6020830185612ac8565b6137896040830184613200565b949350505050565b600061379c82612b00565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137ce576137cd613500565b5b600182019050919050565b60006137f46137ef6137ea84612b36565b6135da565b612b00565b9050919050565b613804816137d9565b82525050565b82818337600083830152505050565b60006138258385613417565b935061383283858461380a565b61383b83612cd6565b840190509392505050565b600060808201905061385b60008301886137fb565b6138686020830187612ab9565b6138756040830186612ab9565b8181036060830152613888818486613819565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138db57607f821691505b6020821081036138ee576138ed613894565b5b50919050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b600061392a601683613417565b9150613935826138f4565b602082019050919050565b600060208201905081810360008301526139598161391d565b9050919050565b60006060820190506139756000830186612ab9565b6139826020830185612ac8565b61398f6040830184612fa4565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006139f3602e83613417565b91506139fe82613997565b604082019050919050565b60006020820190508181036000830152613a22816139e6565b9050919050565b6000819050919050565b600060ff82169050919050565b6000613a5b613a56613a5184613a29565b6135da565b613a33565b9050919050565b613a6b81613a40565b82525050565b6000602082019050613a866000830184613a62565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613af97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613abc565b613b038683613abc565b95508019841693508086168417925050509392505050565b6000613b36613b31613b2c84612b00565b6135da565b612b00565b9050919050565b6000819050919050565b613b5083613b1b565b613b64613b5c82613b3d565b848454613ac9565b825550505050565b600090565b613b79613b6c565b613b84818484613b47565b505050565b5b81811015613ba857613b9d600082613b71565b600181019050613b8a565b5050565b601f821115613bed57613bbe81613a97565b613bc784613aac565b81016020851015613bd6578190505b613bea613be285613aac565b830182613b89565b50505b505050565b600082821c905092915050565b6000613c1060001984600802613bf2565b1980831691505092915050565b6000613c298383613bff565b9150826002028217905092915050565b613c438383613a8c565b67ffffffffffffffff811115613c5c57613c5b612ce7565b5b613c6682546138c3565b613c71828285613bac565b6000601f831160018114613ca05760008415613c8e578287013590505b613c988582613c1d565b865550613d00565b601f198416613cae86613a97565b60005b82811015613cd657848901358255600182019150602085019450602081019050613cb1565b86831015613cf35784890135613cef601f891682613bff565b8355505b6001600288020188555050505b50505050505050565b6000613d158385612ee1565b9350613d2283858461380a565b613d2b83612cd6565b840190509392505050565b60006020820190508181036000830152613d51818486613d09565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613db6602683613417565b9150613dc182613d5a565b604082019050919050565b60006020820190508181036000830152613de581613da9565b9050919050565b6000604082019050613e0160008301856131f1565b613e0e60208301846131f1565b9392505050565b6000613e2082612b00565b9150613e2b83612b00565b9250828203905081811115613e4357613e42613500565b5b92915050565b6000613e5482612b00565b9150613e5f83612b00565b9250828201905080821115613e7757613e76613500565b5b92915050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613eb3601183613417565b9150613ebe82613e7d565b602082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613f1f600c83613417565b9150613f2a82613ee9565b602082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613f8b601083613417565b9150613f9682613f55565b602082019050919050565b60006020820190508181036000830152613fba81613f7e565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613ff7601683613417565b915061400282613fc1565b602082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614063602083613417565b915061406e8261402d565b602082019050919050565b6000602082019050818103600083015261409281614056565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006140f5602b83613417565b915061410082614099565b604082019050919050565b60006020820190508181036000830152614124816140e8565b905091905056fea26469706673582212208b3d52873e081656e3e1c7f7db950185305cc50b26459ed56e4b7d69aa27310664736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063d8e8de341161007c578063d8e8de341461034f578063d9caed121461037f578063e4683a791461039b578063e8d6e0de146103cb578063f2fde38b146103e9578063f5326b191461040557610137565b80638da5cb5b146102bd57806399e3c0b4146102db578063b810c636146102f7578063c4d66de814610317578063cb79455b1461033357610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb1461027157806387490d861461028d57610137565b8063026213381461013c578063137764fb1461016c5780632654ec7e1461019d57806332200882146101cd5780633ad59dbc146101e9575b600080fd5b61015660048036038101906101519190612780565b610421565b604051610163919061289a565b60405180910390f35b610186600480360381019061018191906129f7565b61055f565b604051610194929190612ad7565b60405180910390f35b6101b760048036038101906101b29190612bd0565b61096a565b6040516101c49190612cbb565b60405180910390f35b6101e760048036038101906101e29190612e7a565b610e42565b005b6101f1610f56565b6040516101fe9190612f55565b60405180910390f35b61020f610fe8565b005b61022b60048036038101906102269190612f77565b610ffc565b6040516102389190612fb3565b60405180910390f35b61025b60048036038101906102569190612780565b611052565b60405161026891906130c1565b60405180910390f35b61028b600480360381019061028691906130dd565b611283565b005b6102a760048036038101906102a29190612780565b6113d0565b6040516102b4919061314c565b60405180910390f35b6102c5611411565b6040516102d29190613167565b60405180910390f35b6102f560048036038101906102f09190613182565b61143b565b005b6102ff6115f0565b60405161030e9392919061320f565b60405180910390f35b610331600480360381019061032c9190612f77565b611641565b005b61034d6004803603810190610348919061329c565b611858565b005b61036960048036038101906103649190612f77565b6118af565b6040516103769190612fb3565b60405180910390f35b610399600480360381019061039491906132e9565b611905565b005b6103b560048036038101906103b0919061333c565b611991565b6040516103c29190612fb3565b60405180910390f35b6103d3611c3e565b6040516103e09190613167565b60405180910390f35b61040360048036038101906103fe9190612f77565b611c68565b005b61041f600480360381019061041a91906133a8565b611ceb565b005b60606000609e6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049e57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610458565b50505050905060008151905060008167ffffffffffffffff8111156104c6576104c5612ce7565b5b6040519080825280602002602001820160405280156104ff57816020015b6104ec612613565b8152602001906001900390816104e45790505b50905060005b82811015610553578381815181106105205761051f6133e8565b5b602002602001015182828151811061053b5761053a6133e8565b5b60200260200101819052508080600101915050610505565b50809350505050919050565b600080606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e990613474565b60405180910390fd5b60a060008a8152602001908152602001600020600401600c9054906101000a900460ff1615610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d906134e0565b60405180910390fd5b600060a060008b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff1660a060008c815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff166106d8919061352f565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600061071d8b8767ffffffffffffffff1687611da2565b9050600060a060008d815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036107bc57600160a060008d8152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a060008d81526020019081526020016000206003015411156107bb576107ba8b611f3d565b5b5b60008160000151111561086f578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b815260040161082a92919061356f565b6020604051808303816000875af1158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d91906135ad565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b81526004016108ae92919061356f565b6020604051808303816000875af11580156108cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f191906135ad565b506109028989848460400151612091565b8673ffffffffffffffffffffffffffffffffffffffff168b7ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268e8d8a60405161094d93929190613615565b60405180910390a38a829350935050509850989650505050505050565b60006109798b8b86898d6121db565b606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168b6109b8919061364c565b6109c291906136bd565b851115610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb9061373a565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610a419392919061375a565b6020604051808303816000875af1158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8491906135ad565b5060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610ad590613791565b91905055503360a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610b2c92919061356f565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b81525060a0600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610e2c959493929190613846565b60405180910390a49a9950505050505050505050565b610e4a6123ea565b60008151905060005b81811015610f5057609e6000858152602001908152602001600020838281518110610e8157610e806133e8565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610ee657610ee56133e8565b5b602002602001015160200151815260200185815250609f6000858481518110610f1257610f116133e8565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610e53565b50505050565b606060698054610f65906138c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f91906138c3565b8015610fde5780601f10610fb357610100808354040283529160200191610fde565b820191906000526020600020905b815481529060010190602001808311610fc157829003601f168201915b5050505050905090565b610ff06123ea565b610ffa6000612468565b565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61105a612633565b60a06000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b61128b6123ea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613940565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113635780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113cc5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113d86126f5565b609f6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114436123ea565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990613940565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036115315780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115b05780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516115e393929190613960565b60405180910390a1505050565b6000806000606660009054906101000a90046fffffffffffffffffffffffffffffffff16606660109054906101000a90046fffffffffffffffffffffffffffffffff16606554925092509250909192565b60008060019054906101000a900460ff161590508080156116725750600160008054906101000a900460ff1660ff16105b8061169f57506116813061252e565b15801561169e5750600160008054906101000a900460ff1660ff16145b5b6116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590613a09565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561171b576001600060016101000a81548160ff0219169083151502179055505b6001609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506101f4606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506117fb612551565b80156118545760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161184b9190613a71565b60405180910390a15b5050565b6118606123ea565b818160699182611871929190613c39565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516118a3929190613d36565b60405180910390a15050565b6000609d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61190d6123ea565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161194892919061356f565b6020604051808303816000875af1158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b91906135ad565b50505050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90613474565b60405180910390fd5b60a06000848152602001908152602001600020600401600c9054906101000a900460ff1615611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e906134e0565b60405180910390fd5b600160a06000858152602001908152602001600020600401600c6101000a81548160ff021916908315150217905550600060a0600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60a0600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660a06000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611bb992919061356f565b6020604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc91906135ad565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611c2c9190612cbb565b60405180910390a26001905092915050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c706123ea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690613dcc565b60405180910390fd5b611ce881612468565b50565b611cf36123ea565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051611d96929190613dec565b60405180910390a15050565b611daa612715565b600060a0600086815260200190815260200160002060060154905060a060008681526020019081526020016000206003015481611de79190613e15565b9050606554846bffffffffffffffffffffffff1682611e06919061364c565b611e1091906136bd565b826020018181525050606554606660009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360200151611e5c919061364c565b611e6691906136bd565b82600001818152505081600001518260200151611e839190613e15565b826020018181525050606554606660109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168360000151611ecf919061364c565b611ed991906136bd565b826040018181525050600082604001518360000151611ef89190613e15565b90508315611f29578083602001818151611f129190613e49565b915081815250506000836000018181525050611f34565b808360000181815250505b50509392505050565b600060a0600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060a0600084815260200190815260200160002060030154905060a0600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161200492919061356f565b6020604051808303816000875af1158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906135ad565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b6000848490509050600081836120a791906136bd565b905060005b828110156121d2578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8888848181106120e3576120e26133e8565b5b90506020020160208101906120f89190612f77565b846040518363ffffffff1660e01b815260040161211692919061356f565b6020604051808303816000875af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215991906135ad565b508187878381811061216e5761216d6133e8565b5b90506020020160208101906121839190612f77565b73ffffffffffffffffffffffffffffffffffffffff167f61dceb70b8f97239c33a3f9c0d0efc6c8759c7e9a808f75dd42b3a0f213186c260405160405180910390a380806001019150506120ac565b50505050505050565b609c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225e90613ec9565b60405180910390fd5b600084116122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190613f35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090613fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f90613fa1565b60405180910390fd5b6000801b609f600083815260200190815260200160002060000154036123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123da9061400d565b60405180910390fd5b5050505050565b6123f26125aa565b73ffffffffffffffffffffffffffffffffffffffff16612410611411565b73ffffffffffffffffffffffffffffffffffffffff1614612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614079565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166125a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125979061410b565b60405180910390fd5b6125a86125b2565b565b600033905090565b600060019054906101000a900460ff16612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f89061410b565b60405180910390fd5b61261161260c6125aa565b612468565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b60405180606001604052806000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61275d8161274a565b811461276857600080fd5b50565b60008135905061277a81612754565b92915050565b60006020828403121561279657612795612740565b5b60006127a48482850161276b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6127e28161274a565b82525050565b6040820160008201516127fe60008501826127d9565b50602082015161281160208501826127d9565b50505050565b600061282383836127e8565b60408301905092915050565b6000602082019050919050565b6000612847826127ad565b61285181856127b8565b935061285c836127c9565b8060005b8381101561288d5781516128748882612817565b975061287f8361282f565b925050600181019050612860565b5085935050505092915050565b600060208201905081810360008301526128b4818461283c565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126128e1576128e06128bc565b5b8235905067ffffffffffffffff8111156128fe576128fd6128c1565b5b60208301915083602082028301111561291a576129196128c6565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061294c82612921565b9050919050565b61295c81612941565b811461296757600080fd5b50565b60008135905061297981612953565b92915050565b600067ffffffffffffffff82169050919050565b61299c8161297f565b81146129a757600080fd5b50565b6000813590506129b981612993565b92915050565b60008115159050919050565b6129d4816129bf565b81146129df57600080fd5b50565b6000813590506129f1816129cb565b92915050565b60008060008060008060008060e0898b031215612a1757612a16612740565b5b6000612a258b828c0161276b565b9850506020612a368b828c0161276b565b9750506040612a478b828c0161276b565b965050606089013567ffffffffffffffff811115612a6857612a67612745565b5b612a748b828c016128cb565b95509550506080612a878b828c0161296a565b93505060a0612a988b828c016129aa565b92505060c0612aa98b828c016129e2565b9150509295985092959890939650565b612ac28161274a565b82525050565b612ad181612941565b82525050565b6000604082019050612aec6000830185612ab9565b612af96020830184612ac8565b9392505050565b6000819050919050565b612b1381612b00565b8114612b1e57600080fd5b50565b600081359050612b3081612b0a565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612b5781612b36565b8114612b6257600080fd5b50565b600081359050612b7481612b4e565b92915050565b60008083601f840112612b9057612b8f6128bc565b5b8235905067ffffffffffffffff811115612bad57612bac6128c1565b5b602083019150836001820283011115612bc957612bc86128c6565b5b9250929050565b6000806000806000806000806000806101208b8d031215612bf457612bf3612740565b5b6000612c028d828e0161296a565b9a50506020612c138d828e01612b21565b9950506040612c248d828e0161276b565b9850506060612c358d828e0161276b565b9750506080612c468d828e01612b65565b96505060a0612c578d828e0161296a565b95505060c0612c688d828e01612b21565b94505060e0612c798d828e0161296a565b9350506101008b013567ffffffffffffffff811115612c9b57612c9a612745565b5b612ca78d828e01612b7a565b92509250509295989b9194979a5092959850565b6000602082019050612cd06000830184612ab9565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d1f82612cd6565b810181811067ffffffffffffffff82111715612d3e57612d3d612ce7565b5b80604052505050565b6000612d51612736565b9050612d5d8282612d16565b919050565b600067ffffffffffffffff821115612d7d57612d7c612ce7565b5b602082029050602081019050919050565b600080fd5b600060408284031215612da957612da8612d8e565b5b612db36040612d47565b90506000612dc38482850161276b565b6000830152506020612dd78482850161276b565b60208301525092915050565b6000612df6612df184612d62565b612d47565b90508083825260208201905060408402830185811115612e1957612e186128c6565b5b835b81811015612e425780612e2e8882612d93565b845260208401935050604081019050612e1b565b5050509392505050565b600082601f830112612e6157612e606128bc565b5b8135612e71848260208601612de3565b91505092915050565b60008060408385031215612e9157612e90612740565b5b6000612e9f8582860161276b565b925050602083013567ffffffffffffffff811115612ec057612ebf612745565b5b612ecc85828601612e4c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f10578082015181840152602081019050612ef5565b60008484015250505050565b6000612f2782612ed6565b612f318185612ee1565b9350612f41818560208601612ef2565b612f4a81612cd6565b840191505092915050565b60006020820190508181036000830152612f6f8184612f1c565b905092915050565b600060208284031215612f8d57612f8c612740565b5b6000612f9b8482850161296a565b91505092915050565b612fad816129bf565b82525050565b6000602082019050612fc86000830184612fa4565b92915050565b612fd781612941565b82525050565b612fe681612b00565b82525050565b612ff581612b36565b82525050565b613004816129bf565b82525050565b610120820160008201516130216000850182612fce565b5060208201516130346020850182612fce565b5060408201516130476040850182612fce565b50606082015161305a6060850182612fdd565b50608082015161306d6080850182612fec565b5060a082015161308060a0850182612ffb565b5060c082015161309360c0850182612fce565b5060e08201516130a660e0850182612fec565b506101008201516130bb610100850182612fdd565b50505050565b6000610120820190506130d7600083018461300a565b92915050565b600080604083850312156130f4576130f3612740565b5b60006131028582860161276b565b92505060206131138582860161296a565b9150509250929050565b60408201600082015161313360008501826127d9565b50602082015161314660208501826127d9565b50505050565b6000604082019050613161600083018461311d565b92915050565b600060208201905061317c6000830184612ac8565b92915050565b60008060006060848603121561319b5761319a612740565b5b60006131a98682870161276b565b93505060206131ba8682870161296a565b92505060406131cb868287016129e2565b9150509250925092565b60006fffffffffffffffffffffffffffffffff82169050919050565b6131fa816131d5565b82525050565b61320981612b00565b82525050565b600060608201905061322460008301866131f1565b61323160208301856131f1565b61323e6040830184613200565b949350505050565b60008083601f84011261325c5761325b6128bc565b5b8235905067ffffffffffffffff811115613279576132786128c1565b5b602083019150836001820283011115613295576132946128c6565b5b9250929050565b600080602083850312156132b3576132b2612740565b5b600083013567ffffffffffffffff8111156132d1576132d0612745565b5b6132dd85828601613246565b92509250509250929050565b60008060006060848603121561330257613301612740565b5b60006133108682870161296a565b93505060206133218682870161296a565b925050604061333286828701612b21565b9150509250925092565b6000806040838503121561335357613352612740565b5b60006133618582860161276b565b92505060206133728582860161276b565b9150509250929050565b613385816131d5565b811461339057600080fd5b50565b6000813590506133a28161337c565b92915050565b600080604083850312156133bf576133be612740565b5b60006133cd85828601613393565b92505060206133de85828601613393565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b600061345e600e83613417565b915061346982613428565b602082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b60006134ca600e83613417565b91506134d582613494565b602082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353a82612b36565b915061354583612b36565b925082820390506bffffffffffffffffffffffff81111561356957613568613500565b5b92915050565b60006040820190506135846000830185612ac8565b6135916020830184613200565b9392505050565b6000815190506135a7816129cb565b92915050565b6000602082840312156135c3576135c2612740565b5b60006135d184828501613598565b91505092915050565b6000819050919050565b60006135ff6135fa6135f58461297f565b6135da565b612b36565b9050919050565b61360f816135e4565b82525050565b600060608201905061362a6000830186612ab9565b6136376020830185612ab9565b6136446040830184613606565b949350505050565b600061365782612b00565b915061366283612b00565b925082820261367081612b00565b9150828204841483151761368757613686613500565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136c882612b00565b91506136d383612b00565b9250826136e3576136e261368e565b5b828204905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b6000613724601083613417565b915061372f826136ee565b602082019050919050565b6000602082019050818103600083015261375381613717565b9050919050565b600060608201905061376f6000830186612ac8565b61377c6020830185612ac8565b6137896040830184613200565b949350505050565b600061379c82612b00565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137ce576137cd613500565b5b600182019050919050565b60006137f46137ef6137ea84612b36565b6135da565b612b00565b9050919050565b613804816137d9565b82525050565b82818337600083830152505050565b60006138258385613417565b935061383283858461380a565b61383b83612cd6565b840190509392505050565b600060808201905061385b60008301886137fb565b6138686020830187612ab9565b6138756040830186612ab9565b8181036060830152613888818486613819565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138db57607f821691505b6020821081036138ee576138ed613894565b5b50919050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b600061392a601683613417565b9150613935826138f4565b602082019050919050565b600060208201905081810360008301526139598161391d565b9050919050565b60006060820190506139756000830186612ab9565b6139826020830185612ac8565b61398f6040830184612fa4565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006139f3602e83613417565b91506139fe82613997565b604082019050919050565b60006020820190508181036000830152613a22816139e6565b9050919050565b6000819050919050565b600060ff82169050919050565b6000613a5b613a56613a5184613a29565b6135da565b613a33565b9050919050565b613a6b81613a40565b82525050565b6000602082019050613a866000830184613a62565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613af97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613abc565b613b038683613abc565b95508019841693508086168417925050509392505050565b6000613b36613b31613b2c84612b00565b6135da565b612b00565b9050919050565b6000819050919050565b613b5083613b1b565b613b64613b5c82613b3d565b848454613ac9565b825550505050565b600090565b613b79613b6c565b613b84818484613b47565b505050565b5b81811015613ba857613b9d600082613b71565b600181019050613b8a565b5050565b601f821115613bed57613bbe81613a97565b613bc784613aac565b81016020851015613bd6578190505b613bea613be285613aac565b830182613b89565b50505b505050565b600082821c905092915050565b6000613c1060001984600802613bf2565b1980831691505092915050565b6000613c298383613bff565b9150826002028217905092915050565b613c438383613a8c565b67ffffffffffffffff811115613c5c57613c5b612ce7565b5b613c6682546138c3565b613c71828285613bac565b6000601f831160018114613ca05760008415613c8e578287013590505b613c988582613c1d565b865550613d00565b601f198416613cae86613a97565b60005b82811015613cd657848901358255600182019150602085019450602081019050613cb1565b86831015613cf35784890135613cef601f891682613bff565b8355505b6001600288020188555050505b50505050505050565b6000613d158385612ee1565b9350613d2283858461380a565b613d2b83612cd6565b840190509392505050565b60006020820190508181036000830152613d51818486613d09565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613db6602683613417565b9150613dc182613d5a565b604082019050919050565b60006020820190508181036000830152613de581613da9565b9050919050565b6000604082019050613e0160008301856131f1565b613e0e60208301846131f1565b9392505050565b6000613e2082612b00565b9150613e2b83612b00565b9250828203905081811115613e4357613e42613500565b5b92915050565b6000613e5482612b00565b9150613e5f83612b00565b9250828201905080821115613e7757613e76613500565b5b92915050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613eb3601183613417565b9150613ebe82613e7d565b602082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613f1f600c83613417565b9150613f2a82613ee9565b602082019050919050565b60006020820190508181036000830152613f4e81613f12565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613f8b601083613417565b9150613f9682613f55565b602082019050919050565b60006020820190508181036000830152613fba81613f7e565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613ff7601683613417565b915061400282613fc1565b602082019050919050565b6000602082019050818103600083015261402681613fea565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614063602083613417565b915061406e8261402d565b602082019050919050565b6000602082019050818103600083015261409281614056565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006140f5602b83613417565b915061410082614099565b604082019050919050565b60006020820190508181036000830152614124816140e8565b905091905056fea26469706673582212208b3d52873e081656e3e1c7f7db950185305cc50b26459ed56e4b7d69aa27310664736f6c63430008120033", + "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d2565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000175565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620000ec5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e39190620001b5565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015d602783620000ee565b91506200016a82620000ff565b604082019050919050565b6000602082019050818103600083015262000190816200014e565b9050919050565b600060ff82169050919050565b620001af8162000197565b82525050565b6000602082019050620001cc6000830184620001a4565b92915050565b613d9e80620001e26000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806387490d86116100b8578063cb79455b1161007c578063cb79455b1461034e578063d8e8de341461036a578063d9caed121461039a578063e4683a79146103b6578063e8d6e0de146103e6578063f2fde38b1461040457610137565b806387490d86146102a95780638da5cb5b146102d957806399e3c0b4146102f7578063b810c63614610313578063c4d66de81461033257610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb14610271578063846307361461028d57610137565b8063026213381461013c5780632654ec7e1461016c578063322008821461019c5780633ad59dbc146101b85780635fe44cac146101d6575b600080fd5b610156600480360381019061015191906124bf565b610420565b60405161016391906125d9565b60405180910390f35b61018660048036038101906101819190612738565b61055e565b6040516101939190612832565b60405180910390f35b6101b660048036038101906101b191906129f1565b610a26565b005b6101c0610b3a565b6040516101cd9190612acc565b60405180910390f35b6101f060048036038101906101eb9190612b66565b610bcc565b6040516101fe929190612c02565b60405180910390f35b61020f610fc5565b005b61022b60048036038101906102269190612c2b565b610fd9565b6040516102389190612c67565b60405180910390f35b61025b600480360381019061025691906124bf565b61102f565b6040516102689190612d75565b60405180910390f35b61028b60048036038101906102869190612d91565b611260565b005b6102a760048036038101906102a29190612dd1565b6113ad565b005b6102c360048036038101906102be91906124bf565b611418565b6040516102d09190612e2d565b60405180910390f35b6102e1611459565b6040516102ee9190612e48565b60405180910390f35b610311600480360381019061030c9190612e63565b611483565b005b61031b611638565b604051610329929190612ed4565b60405180910390f35b61034c60048036038101906103479190612c2b565b61165d565b005b61036860048036038101906103639190612f53565b611829565b005b610384600480360381019061037f9190612c2b565b611880565b6040516103919190612c67565b60405180910390f35b6103b460048036038101906103af9190612fa0565b6118d6565b005b6103d060048036038101906103cb9190612ff3565b611962565b6040516103dd9190612c67565b60405180910390f35b6103ee611c0f565b6040516103fb9190612e48565b60405180910390f35b61041e60048036038101906104199190612c2b565b611c39565b005b60606000609d6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049d57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610457565b50505050905060008151905060008167ffffffffffffffff8111156104c5576104c461285e565b5b6040519080825280602002602001820160405280156104fe57816020015b6104eb612359565b8152602001906001900390816104e35790505b50905060005b828110156105525783818151811061051f5761051e613033565b5b602002602001015182828151811061053a57610539613033565b5b60200260200101819052508080600101915050610504565b50809350505050919050565b600061056d8b8b86898d611cbc565b606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168b61059c9190613091565b6105a69190613102565b8511156105e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105df90613190565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610625939291906131b0565b6020604051808303816000875af1158015610644573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066891906131fc565b5060a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906106b990613229565b91905055503360a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610710929190613271565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b815250609f600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610a10959493929190613311565b60405180910390a49a9950505050505050505050565b610a2e611ecb565b60008151905060005b81811015610b3457609d6000858152602001908152602001600020838281518110610a6557610a64613033565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610aca57610ac9613033565b5b602002602001015160200151815260200185815250609e6000858481518110610af657610af5613033565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610a37565b50505050565b606060688054610b499061338e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b759061338e565b8015610bc25780601f10610b9757610100808354040283529160200191610bc2565b820191906000526020600020905b815481529060010190602001808311610ba557829003601f168201915b5050505050905090565b600080606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c569061340b565b60405180910390fd5b609f6000888152602001908152602001600020600401600c9054906101000a900460ff1615610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90613477565b60405180910390fd5b6000609f600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff16609f60008a815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff16610d459190613497565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506000610d8a898767ffffffffffffffff1687611f49565b90506000609f60008b815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1603610e29576001609f60008b8152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f60008b8152602001908152602001600020600301541115610e2857610e278961205a565b5b5b600081600001511115610edc578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606660089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b8152600401610e97929190613271565b6020604051808303816000875af1158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda91906131fc565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b8152600401610f1b929190613271565b6020604051808303816000875af1158015610f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5e91906131fc565b508673ffffffffffffffffffffffffffffffffffffffff16897ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268c8b8a604051610faa93929190613508565b60405180910390a38882935093505050965096945050505050565b610fcd611ecb565b610fd760006121ae565b565b6000609b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611037612379565b609f6000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b611268611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce9061358b565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113405780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113a95780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113b5611ecb565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a98160405161140d91906135ab565b60405180910390a150565b61142061243b565b609e6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61148b611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f19061358b565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036115795780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115f85780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161162b939291906135c6565b60405180910390a1505050565b600080606660009054906101000a900467ffffffffffffffff16606554915091509091565b60008060019054906101000a900460ff1615905080801561168e5750600160008054906101000a900460ff1660ff16105b806116bb575061169d30612274565b1580156116ba5750600160008054906101000a900460ff1660ff16145b5b6116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f19061366f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611737576001600060016101000a81548160ff0219169083151502179055505b6001609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506117cc612297565b80156118255760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161181c91906136d7565b60405180910390a15b5050565b611831611ecb565b81816068918261184292919061389f565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef828260405161187492919061399c565b60405180910390a15050565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118de611ecb565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611919929190613271565b6020604051808303816000875af1158015611938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195c91906131fc565b50505050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb9061340b565b60405180910390fd5b609f6000848152602001908152602001600020600401600c9054906101000a900460ff1615611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90613477565b60405180910390fd5b6001609f6000858152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb609f600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609f6000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611b8a929190613271565b6020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd91906131fc565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611bfd9190612832565b60405180910390a26001905092915050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c41611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca790613a32565b60405180910390fd5b611cb9816121ae565b50565b609b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90613a9e565b60405180910390fd5b60008411611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613b0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190613b76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6090613b76565b60405180910390fd5b6000801b609e60008381526020019081526020016000206000015403611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb90613be2565b60405180910390fd5b5050505050565b611ed36122f0565b73ffffffffffffffffffffffffffffffffffffffff16611ef1611459565b73ffffffffffffffffffffffffffffffffffffffff1614611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613c4e565b60405180910390fd5b565b611f5161245b565b6000609f6000868152602001908152602001600020600601549050609f60008681526020019081526020016000206003015481611f8e9190613c6e565b9050606554846bffffffffffffffffffffffff1682611fad9190613091565b611fb79190613102565b826020018181525050606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168360200151611ff39190613091565b611ffd9190613102565b8260000181815250508160000151826020015161201a9190613c6e565b82602001818152505082156120525781600001518260200181815161203f9190613ca2565b9150818152505060008260000181815250505b509392505050565b6000609f600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000609f6000848152602001908152602001600020600301549050609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612121929190613271565b6020604051808303816000875af1158015612140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216491906131fc565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd90613d48565b60405180910390fd5b6122ee6122f8565b565b600033905090565b600060019054906101000a900460ff16612347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233e90613d48565b60405180910390fd5b6123576123526122f0565b6121ae565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61249c81612489565b81146124a757600080fd5b50565b6000813590506124b981612493565b92915050565b6000602082840312156124d5576124d461247f565b5b60006124e3848285016124aa565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61252181612489565b82525050565b60408201600082015161253d6000850182612518565b5060208201516125506020850182612518565b50505050565b60006125628383612527565b60408301905092915050565b6000602082019050919050565b6000612586826124ec565b61259081856124f7565b935061259b83612508565b8060005b838110156125cc5781516125b38882612556565b97506125be8361256e565b92505060018101905061259f565b5085935050505092915050565b600060208201905081810360008301526125f3818461257b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612626826125fb565b9050919050565b6126368161261b565b811461264157600080fd5b50565b6000813590506126538161262d565b92915050565b6000819050919050565b61266c81612659565b811461267757600080fd5b50565b60008135905061268981612663565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6126b08161268f565b81146126bb57600080fd5b50565b6000813590506126cd816126a7565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126f8576126f76126d3565b5b8235905067ffffffffffffffff811115612715576127146126d8565b5b602083019150836001820283011115612731576127306126dd565b5b9250929050565b6000806000806000806000806000806101208b8d03121561275c5761275b61247f565b5b600061276a8d828e01612644565b9a5050602061277b8d828e0161267a565b995050604061278c8d828e016124aa565b985050606061279d8d828e016124aa565b97505060806127ae8d828e016126be565b96505060a06127bf8d828e01612644565b95505060c06127d08d828e0161267a565b94505060e06127e18d828e01612644565b9350506101008b013567ffffffffffffffff81111561280357612802612484565b5b61280f8d828e016126e2565b92509250509295989b9194979a5092959850565b61282c81612489565b82525050565b60006020820190506128476000830184612823565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128968261284d565b810181811067ffffffffffffffff821117156128b5576128b461285e565b5b80604052505050565b60006128c8612475565b90506128d4828261288d565b919050565b600067ffffffffffffffff8211156128f4576128f361285e565b5b602082029050602081019050919050565b600080fd5b6000604082840312156129205761291f612905565b5b61292a60406128be565b9050600061293a848285016124aa565b600083015250602061294e848285016124aa565b60208301525092915050565b600061296d612968846128d9565b6128be565b905080838252602082019050604084028301858111156129905761298f6126dd565b5b835b818110156129b957806129a5888261290a565b845260208401935050604081019050612992565b5050509392505050565b600082601f8301126129d8576129d76126d3565b5b81356129e884826020860161295a565b91505092915050565b60008060408385031215612a0857612a0761247f565b5b6000612a16858286016124aa565b925050602083013567ffffffffffffffff811115612a3757612a36612484565b5b612a43858286016129c3565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a87578082015181840152602081019050612a6c565b60008484015250505050565b6000612a9e82612a4d565b612aa88185612a58565b9350612ab8818560208601612a69565b612ac18161284d565b840191505092915050565b60006020820190508181036000830152612ae68184612a93565b905092915050565b600067ffffffffffffffff82169050919050565b612b0b81612aee565b8114612b1657600080fd5b50565b600081359050612b2881612b02565b92915050565b60008115159050919050565b612b4381612b2e565b8114612b4e57600080fd5b50565b600081359050612b6081612b3a565b92915050565b60008060008060008060c08789031215612b8357612b8261247f565b5b6000612b9189828a016124aa565b9650506020612ba289828a016124aa565b9550506040612bb389828a016124aa565b9450506060612bc489828a01612644565b9350506080612bd589828a01612b19565b92505060a0612be689828a01612b51565b9150509295509295509295565b612bfc8161261b565b82525050565b6000604082019050612c176000830185612823565b612c246020830184612bf3565b9392505050565b600060208284031215612c4157612c4061247f565b5b6000612c4f84828501612644565b91505092915050565b612c6181612b2e565b82525050565b6000602082019050612c7c6000830184612c58565b92915050565b612c8b8161261b565b82525050565b612c9a81612659565b82525050565b612ca98161268f565b82525050565b612cb881612b2e565b82525050565b61012082016000820151612cd56000850182612c82565b506020820151612ce86020850182612c82565b506040820151612cfb6040850182612c82565b506060820151612d0e6060850182612c91565b506080820151612d216080850182612ca0565b5060a0820151612d3460a0850182612caf565b5060c0820151612d4760c0850182612c82565b5060e0820151612d5a60e0850182612ca0565b50610100820151612d6f610100850182612c91565b50505050565b600061012082019050612d8b6000830184612cbe565b92915050565b60008060408385031215612da857612da761247f565b5b6000612db6858286016124aa565b9250506020612dc785828601612644565b9150509250929050565b600060208284031215612de757612de661247f565b5b6000612df584828501612b19565b91505092915050565b604082016000820151612e146000850182612518565b506020820151612e276020850182612518565b50505050565b6000604082019050612e426000830184612dfe565b92915050565b6000602082019050612e5d6000830184612bf3565b92915050565b600080600060608486031215612e7c57612e7b61247f565b5b6000612e8a868287016124aa565b9350506020612e9b86828701612644565b9250506040612eac86828701612b51565b9150509250925092565b612ebf81612aee565b82525050565b612ece81612659565b82525050565b6000604082019050612ee96000830185612eb6565b612ef66020830184612ec5565b9392505050565b60008083601f840112612f1357612f126126d3565b5b8235905067ffffffffffffffff811115612f3057612f2f6126d8565b5b602083019150836001820283011115612f4c57612f4b6126dd565b5b9250929050565b60008060208385031215612f6a57612f6961247f565b5b600083013567ffffffffffffffff811115612f8857612f87612484565b5b612f9485828601612efd565b92509250509250929050565b600080600060608486031215612fb957612fb861247f565b5b6000612fc786828701612644565b9350506020612fd886828701612644565b9250506040612fe98682870161267a565b9150509250925092565b6000806040838503121561300a5761300961247f565b5b6000613018858286016124aa565b9250506020613029858286016124aa565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309c82612659565b91506130a783612659565b92508282026130b581612659565b915082820484148315176130cc576130cb613062565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061310d82612659565b915061311883612659565b925082613128576131276130d3565b5b828204905092915050565b600082825260208201905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b600061317a601083613133565b915061318582613144565b602082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b60006060820190506131c56000830186612bf3565b6131d26020830185612bf3565b6131df6040830184612ec5565b949350505050565b6000815190506131f681612b3a565b92915050565b6000602082840312156132125761321161247f565b5b6000613220848285016131e7565b91505092915050565b600061323482612659565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361326657613265613062565b5b600182019050919050565b60006040820190506132866000830185612bf3565b6132936020830184612ec5565b9392505050565b6000819050919050565b60006132bf6132ba6132b58461268f565b61329a565b612659565b9050919050565b6132cf816132a4565b82525050565b82818337600083830152505050565b60006132f08385613133565b93506132fd8385846132d5565b6133068361284d565b840190509392505050565b600060808201905061332660008301886132c6565b6133336020830187612823565b6133406040830186612823565b81810360608301526133538184866132e4565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133a657607f821691505b6020821081036133b9576133b861335f565b5b50919050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b60006133f5600e83613133565b9150613400826133bf565b602082019050919050565b60006020820190508181036000830152613424816133e8565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b6000613461600e83613133565b915061346c8261342b565b602082019050919050565b6000602082019050818103600083015261349081613454565b9050919050565b60006134a28261268f565b91506134ad8361268f565b925082820390506bffffffffffffffffffffffff8111156134d1576134d0613062565b5b92915050565b60006134f26134ed6134e884612aee565b61329a565b61268f565b9050919050565b613502816134d7565b82525050565b600060608201905061351d6000830186612823565b61352a6020830185612823565b61353760408301846134f9565b949350505050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000613575601683613133565b91506135808261353f565b602082019050919050565b600060208201905081810360008301526135a481613568565b9050919050565b60006020820190506135c06000830184612eb6565b92915050565b60006060820190506135db6000830186612823565b6135e86020830185612bf3565b6135f56040830184612c58565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613659602e83613133565b9150613664826135fd565b604082019050919050565b600060208201905081810360008301526136888161364c565b9050919050565b6000819050919050565b600060ff82169050919050565b60006136c16136bc6136b78461368f565b61329a565b613699565b9050919050565b6136d1816136a6565b82525050565b60006020820190506136ec60008301846136c8565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261375f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613722565b6137698683613722565b95508019841693508086168417925050509392505050565b600061379c61379761379284612659565b61329a565b612659565b9050919050565b6000819050919050565b6137b683613781565b6137ca6137c2826137a3565b84845461372f565b825550505050565b600090565b6137df6137d2565b6137ea8184846137ad565b505050565b5b8181101561380e576138036000826137d7565b6001810190506137f0565b5050565b601f82111561385357613824816136fd565b61382d84613712565b8101602085101561383c578190505b61385061384885613712565b8301826137ef565b50505b505050565b600082821c905092915050565b600061387660001984600802613858565b1980831691505092915050565b600061388f8383613865565b9150826002028217905092915050565b6138a983836136f2565b67ffffffffffffffff8111156138c2576138c161285e565b5b6138cc825461338e565b6138d7828285613812565b6000601f83116001811461390657600084156138f4578287013590505b6138fe8582613883565b865550613966565b601f198416613914866136fd565b60005b8281101561393c57848901358255600182019150602085019450602081019050613917565b868310156139595784890135613955601f891682613865565b8355505b6001600288020188555050505b50505050505050565b600061397b8385612a58565b93506139888385846132d5565b6139918361284d565b840190509392505050565b600060208201905081810360008301526139b781848661396f565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a1c602683613133565b9150613a27826139c0565b604082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613a88601183613133565b9150613a9382613a52565b602082019050919050565b60006020820190508181036000830152613ab781613a7b565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613af4600c83613133565b9150613aff82613abe565b602082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613b60601083613133565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613bcc601683613133565b9150613bd782613b96565b602082019050919050565b60006020820190508181036000830152613bfb81613bbf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c38602083613133565b9150613c4382613c02565b602082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b6000613c7982612659565b9150613c8483612659565b9250828203905081811115613c9c57613c9b613062565b5b92915050565b6000613cad82612659565b9150613cb883612659565b9250828201905080821115613cd057613ccf613062565b5b92915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613d32602b83613133565b9150613d3d82613cd6565b604082019050919050565b60006020820190508181036000830152613d6181613d25565b905091905056fea2646970667358221220f803c3247b0b726c64865b7a580dd6d825218d8aa6f111de58c8caa232a024ab64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c806387490d86116100b8578063cb79455b1161007c578063cb79455b1461034e578063d8e8de341461036a578063d9caed121461039a578063e4683a79146103b6578063e8d6e0de146103e6578063f2fde38b1461040457610137565b806387490d86146102a95780638da5cb5b146102d957806399e3c0b4146102f7578063b810c63614610313578063c4d66de81461033257610137565b8063715018a6116100ff578063715018a61461020757806375151b6314610211578063768c6ec01461024157806379a0effb14610271578063846307361461028d57610137565b8063026213381461013c5780632654ec7e1461016c578063322008821461019c5780633ad59dbc146101b85780635fe44cac146101d6575b600080fd5b610156600480360381019061015191906124bf565b610420565b60405161016391906125d9565b60405180910390f35b61018660048036038101906101819190612738565b61055e565b6040516101939190612832565b60405180910390f35b6101b660048036038101906101b191906129f1565b610a26565b005b6101c0610b3a565b6040516101cd9190612acc565b60405180910390f35b6101f060048036038101906101eb9190612b66565b610bcc565b6040516101fe929190612c02565b60405180910390f35b61020f610fc5565b005b61022b60048036038101906102269190612c2b565b610fd9565b6040516102389190612c67565b60405180910390f35b61025b600480360381019061025691906124bf565b61102f565b6040516102689190612d75565b60405180910390f35b61028b60048036038101906102869190612d91565b611260565b005b6102a760048036038101906102a29190612dd1565b6113ad565b005b6102c360048036038101906102be91906124bf565b611418565b6040516102d09190612e2d565b60405180910390f35b6102e1611459565b6040516102ee9190612e48565b60405180910390f35b610311600480360381019061030c9190612e63565b611483565b005b61031b611638565b604051610329929190612ed4565b60405180910390f35b61034c60048036038101906103479190612c2b565b61165d565b005b61036860048036038101906103639190612f53565b611829565b005b610384600480360381019061037f9190612c2b565b611880565b6040516103919190612c67565b60405180910390f35b6103b460048036038101906103af9190612fa0565b6118d6565b005b6103d060048036038101906103cb9190612ff3565b611962565b6040516103dd9190612c67565b60405180910390f35b6103ee611c0f565b6040516103fb9190612e48565b60405180910390f35b61041e60048036038101906104199190612c2b565b611c39565b005b60606000609d6000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561049d57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610457565b50505050905060008151905060008167ffffffffffffffff8111156104c5576104c461285e565b5b6040519080825280602002602001820160405280156104fe57816020015b6104eb612359565b8152602001906001900390816104e35790505b50905060005b828110156105525783818151811061051f5761051e613033565b5b602002602001015182828151811061053a57610539613033565b5b60200260200101819052508080600101915050610504565b50809350505050919050565b600061056d8b8b86898d611cbc565b606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168b61059c9190613091565b6105a69190613102565b8511156105e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105df90613190565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff1660e01b8152600401610625939291906131b0565b6020604051808303816000875af1158015610644573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066891906131fc565b5060a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906106b990613229565b91905055503360a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610710929190613271565b6040516020818303038152906040528051906020012090506040518061012001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001886bffffffffffffffffffffffff1681526020016000151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200160655467ffffffffffffffff166bffffffffffffffffffffffff1681526020018b815250609f600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060a082015181600401600c6101000a81548160ff02191690831515021790555060c08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101008201518160060155905050808a8c73ffffffffffffffffffffffffffffffffffffffff167f2c205f90c01160d42994a0eb521810056d94bb82a1fcb038d7179c4158a1f15b8a8d8d8989604051610a10959493929190613311565b60405180910390a49a9950505050505050505050565b610a2e611ecb565b60008151905060005b81811015610b3457609d6000858152602001908152602001600020838281518110610a6557610a64613033565b5b60200260200101519080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506040518060400160405280848381518110610aca57610ac9613033565b5b602002602001015160200151815260200185815250609e6000858481518110610af657610af5613033565b5b602002602001015160000151815260200190815260200160002060008201518160000155602082015181600101559050508080600101915050610a37565b50505050565b606060688054610b499061338e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b759061338e565b8015610bc25780601f10610b9757610100808354040283529160200191610bc2565b820191906000526020600020905b815481529060010190602001808311610ba557829003601f168201915b5050505050905090565b600080606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c569061340b565b60405180910390fd5b609f6000888152602001908152602001600020600401600c9054906101000a900460ff1615610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90613477565b60405180910390fd5b6000609f600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508467ffffffffffffffff16609f60008a815260200190815260200160002060050160148282829054906101000a90046bffffffffffffffffffffffff16610d459190613497565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506000610d8a898767ffffffffffffffff1687611f49565b90506000609f60008b815260200190815260200160002060050160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1603610e29576001609f60008b8152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f60008b8152602001908152602001600020600301541115610e2857610e278961205a565b5b5b600081600001511115610edc578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb606660089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001516040518363ffffffff1660e01b8152600401610e97929190613271565b6020604051808303816000875af1158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda91906131fc565b505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8883602001516040518363ffffffff1660e01b8152600401610f1b929190613271565b6020604051808303816000875af1158015610f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5e91906131fc565b508673ffffffffffffffffffffffffffffffffffffffff16897ff26de978cbaea68ea699627155a10ad53df3321b0f95a08264c0cfd6d4c053268c8b8a604051610faa93929190613508565b60405180910390a38882935093505050965096945050505050565b610fcd611ecb565b610fd760006121ae565b565b6000609b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611037612379565b609f6000838152602001908152602001600020604051806101200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160048201600c9054906101000a900460ff161515151581526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016006820154815250509050919050565b611268611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce9061358b565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036113405780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036113a95780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6113b5611ecb565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a98160405161140d91906135ab565b60405180910390a150565b61142061243b565b609e6000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61148b611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f19061358b565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036115795780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036115f85780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161162b939291906135c6565b60405180910390a1505050565b600080606660009054906101000a900467ffffffffffffffff16606554915091509091565b60008060019054906101000a900460ff1615905080801561168e5750600160008054906101000a900460ff1660ff16105b806116bb575061169d30612274565b1580156116ba5750600160008054906101000a900460ff1660ff16145b5b6116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f19061366f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611737576001600060016101000a81548160ff0219169083151502179055505b6001609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620186a0606581905550611388606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506117cc612297565b80156118255760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161181c91906136d7565b60405180910390a15b5050565b611831611ecb565b81816068918261184292919061389f565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef828260405161187492919061399c565b60405180910390a15050565b6000609c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118de611ecb565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611919929190613271565b6020604051808303816000875af1158015611938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195c91906131fc565b50505050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb9061340b565b60405180910390fd5b609f6000848152602001908152602001600020600401600c9054906101000a900460ff1615611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f90613477565b60405180910390fd5b6001609f6000858152602001908152602001600020600401600c6101000a81548160ff0219169083151502179055506000609f600085815260200190815260200160002060050160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb609f600086815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609f6000878152602001908152602001600020600601546040518363ffffffff1660e01b8152600401611b8a929190613271565b6020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd91906131fc565b50827e7c875846b687732a7579c19bb1dade66cd14e9f4f809565e2b2b5e76c72b4f83604051611bfd9190612832565b60405180910390a26001905092915050565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611c41611ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca790613a32565b60405180910390fd5b611cb9816121ae565b50565b609b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90613a9e565b60405180910390fd5b60008411611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613b0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190613b76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6090613b76565b60405180910390fd5b6000801b609e60008381526020019081526020016000206000015403611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb90613be2565b60405180910390fd5b5050505050565b611ed36122f0565b73ffffffffffffffffffffffffffffffffffffffff16611ef1611459565b73ffffffffffffffffffffffffffffffffffffffff1614611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613c4e565b60405180910390fd5b565b611f5161245b565b6000609f6000868152602001908152602001600020600601549050609f60008681526020019081526020016000206003015481611f8e9190613c6e565b9050606554846bffffffffffffffffffffffff1682611fad9190613091565b611fb79190613102565b826020018181525050606554606660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168360200151611ff39190613091565b611ffd9190613102565b8260000181815250508160000151826020015161201a9190613c6e565b82602001818152505082156120525781600001518260200181815161203f9190613ca2565b9150818152505060008260000181815250505b509392505050565b6000609f600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000609f6000848152602001908152602001600020600301549050609f600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612121929190613271565b6020604051808303816000875af1158015612140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216491906131fc565b50808273ffffffffffffffffffffffffffffffffffffffff167f96c76d5aec8a8c11a9c8e02768e3fa309347330d08961e0cf9fd43b349b684c260405160405180910390a3505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166122e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dd90613d48565b60405180910390fd5b6122ee6122f8565b565b600033905090565b600060019054906101000a900460ff16612347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233e90613d48565b60405180910390fd5b6123576123526122f0565b6121ae565b565b604051806040016040528060008019168152602001600080191681525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160006bffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600081525090565b604051806040016040528060008019168152602001600080191681525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61249c81612489565b81146124a757600080fd5b50565b6000813590506124b981612493565b92915050565b6000602082840312156124d5576124d461247f565b5b60006124e3848285016124aa565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61252181612489565b82525050565b60408201600082015161253d6000850182612518565b5060208201516125506020850182612518565b50505050565b60006125628383612527565b60408301905092915050565b6000602082019050919050565b6000612586826124ec565b61259081856124f7565b935061259b83612508565b8060005b838110156125cc5781516125b38882612556565b97506125be8361256e565b92505060018101905061259f565b5085935050505092915050565b600060208201905081810360008301526125f3818461257b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612626826125fb565b9050919050565b6126368161261b565b811461264157600080fd5b50565b6000813590506126538161262d565b92915050565b6000819050919050565b61266c81612659565b811461267757600080fd5b50565b60008135905061268981612663565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6126b08161268f565b81146126bb57600080fd5b50565b6000813590506126cd816126a7565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126f8576126f76126d3565b5b8235905067ffffffffffffffff811115612715576127146126d8565b5b602083019150836001820283011115612731576127306126dd565b5b9250929050565b6000806000806000806000806000806101208b8d03121561275c5761275b61247f565b5b600061276a8d828e01612644565b9a5050602061277b8d828e0161267a565b995050604061278c8d828e016124aa565b985050606061279d8d828e016124aa565b97505060806127ae8d828e016126be565b96505060a06127bf8d828e01612644565b95505060c06127d08d828e0161267a565b94505060e06127e18d828e01612644565b9350506101008b013567ffffffffffffffff81111561280357612802612484565b5b61280f8d828e016126e2565b92509250509295989b9194979a5092959850565b61282c81612489565b82525050565b60006020820190506128476000830184612823565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128968261284d565b810181811067ffffffffffffffff821117156128b5576128b461285e565b5b80604052505050565b60006128c8612475565b90506128d4828261288d565b919050565b600067ffffffffffffffff8211156128f4576128f361285e565b5b602082029050602081019050919050565b600080fd5b6000604082840312156129205761291f612905565b5b61292a60406128be565b9050600061293a848285016124aa565b600083015250602061294e848285016124aa565b60208301525092915050565b600061296d612968846128d9565b6128be565b905080838252602082019050604084028301858111156129905761298f6126dd565b5b835b818110156129b957806129a5888261290a565b845260208401935050604081019050612992565b5050509392505050565b600082601f8301126129d8576129d76126d3565b5b81356129e884826020860161295a565b91505092915050565b60008060408385031215612a0857612a0761247f565b5b6000612a16858286016124aa565b925050602083013567ffffffffffffffff811115612a3757612a36612484565b5b612a43858286016129c3565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a87578082015181840152602081019050612a6c565b60008484015250505050565b6000612a9e82612a4d565b612aa88185612a58565b9350612ab8818560208601612a69565b612ac18161284d565b840191505092915050565b60006020820190508181036000830152612ae68184612a93565b905092915050565b600067ffffffffffffffff82169050919050565b612b0b81612aee565b8114612b1657600080fd5b50565b600081359050612b2881612b02565b92915050565b60008115159050919050565b612b4381612b2e565b8114612b4e57600080fd5b50565b600081359050612b6081612b3a565b92915050565b60008060008060008060c08789031215612b8357612b8261247f565b5b6000612b9189828a016124aa565b9650506020612ba289828a016124aa565b9550506040612bb389828a016124aa565b9450506060612bc489828a01612644565b9350506080612bd589828a01612b19565b92505060a0612be689828a01612b51565b9150509295509295509295565b612bfc8161261b565b82525050565b6000604082019050612c176000830185612823565b612c246020830184612bf3565b9392505050565b600060208284031215612c4157612c4061247f565b5b6000612c4f84828501612644565b91505092915050565b612c6181612b2e565b82525050565b6000602082019050612c7c6000830184612c58565b92915050565b612c8b8161261b565b82525050565b612c9a81612659565b82525050565b612ca98161268f565b82525050565b612cb881612b2e565b82525050565b61012082016000820151612cd56000850182612c82565b506020820151612ce86020850182612c82565b506040820151612cfb6040850182612c82565b506060820151612d0e6060850182612c91565b506080820151612d216080850182612ca0565b5060a0820151612d3460a0850182612caf565b5060c0820151612d4760c0850182612c82565b5060e0820151612d5a60e0850182612ca0565b50610100820151612d6f610100850182612c91565b50505050565b600061012082019050612d8b6000830184612cbe565b92915050565b60008060408385031215612da857612da761247f565b5b6000612db6858286016124aa565b9250506020612dc785828601612644565b9150509250929050565b600060208284031215612de757612de661247f565b5b6000612df584828501612b19565b91505092915050565b604082016000820151612e146000850182612518565b506020820151612e276020850182612518565b50505050565b6000604082019050612e426000830184612dfe565b92915050565b6000602082019050612e5d6000830184612bf3565b92915050565b600080600060608486031215612e7c57612e7b61247f565b5b6000612e8a868287016124aa565b9350506020612e9b86828701612644565b9250506040612eac86828701612b51565b9150509250925092565b612ebf81612aee565b82525050565b612ece81612659565b82525050565b6000604082019050612ee96000830185612eb6565b612ef66020830184612ec5565b9392505050565b60008083601f840112612f1357612f126126d3565b5b8235905067ffffffffffffffff811115612f3057612f2f6126d8565b5b602083019150836001820283011115612f4c57612f4b6126dd565b5b9250929050565b60008060208385031215612f6a57612f6961247f565b5b600083013567ffffffffffffffff811115612f8857612f87612484565b5b612f9485828601612efd565b92509250509250929050565b600080600060608486031215612fb957612fb861247f565b5b6000612fc786828701612644565b9350506020612fd886828701612644565b9250506040612fe98682870161267a565b9150509250925092565b6000806040838503121561300a5761300961247f565b5b6000613018858286016124aa565b9250506020613029858286016124aa565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309c82612659565b91506130a783612659565b92508282026130b581612659565b915082820484148315176130cc576130cb613062565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061310d82612659565b915061311883612659565b925082613128576131276130d3565b5b828204905092915050565b600082825260208201905092915050565b7f53656e646572466565546f6f4869676800000000000000000000000000000000600082015250565b600061317a601083613133565b915061318582613144565b602082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b60006060820190506131c56000830186612bf3565b6131d26020830185612bf3565b6131df6040830184612ec5565b949350505050565b6000815190506131f681612b3a565b92915050565b6000602082840312156132125761321161247f565b5b6000613220848285016131e7565b91505092915050565b600061323482612659565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361326657613265613062565b5b600182019050919050565b60006040820190506132866000830185612bf3565b6132936020830184612ec5565b9392505050565b6000819050919050565b60006132bf6132ba6132b58461268f565b61329a565b612659565b9050919050565b6132cf816132a4565b82525050565b82818337600083830152505050565b60006132f08385613133565b93506132fd8385846132d5565b6133068361284d565b840190509392505050565b600060808201905061332660008301886132c6565b6133336020830187612823565b6133406040830186612823565b81810360608301526133538184866132e4565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133a657607f821691505b6020821081036133b9576133b861335f565b5b50919050565b7f4f6e6c7941676772656761746f72000000000000000000000000000000000000600082015250565b60006133f5600e83613133565b9150613400826133bf565b602082019050919050565b60006020820190508181036000830152613424816133e8565b9050919050565b7f4f7264657246756c66696c6c6564000000000000000000000000000000000000600082015250565b6000613461600e83613133565b915061346c8261342b565b602082019050919050565b6000602082019050818103600083015261349081613454565b9050919050565b60006134a28261268f565b91506134ad8361268f565b925082820390506bffffffffffffffffffffffff8111156134d1576134d0613062565b5b92915050565b60006134f26134ed6134e884612aee565b61329a565b61268f565b9050919050565b613502816134d7565b82525050565b600060608201905061351d6000830186612823565b61352a6020830185612823565b61353760408301846134f9565b949350505050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000613575601683613133565b91506135808261353f565b602082019050919050565b600060208201905081810360008301526135a481613568565b9050919050565b60006020820190506135c06000830184612eb6565b92915050565b60006060820190506135db6000830186612823565b6135e86020830185612bf3565b6135f56040830184612c58565b949350505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613659602e83613133565b9150613664826135fd565b604082019050919050565b600060208201905081810360008301526136888161364c565b9050919050565b6000819050919050565b600060ff82169050919050565b60006136c16136bc6136b78461368f565b61329a565b613699565b9050919050565b6136d1816136a6565b82525050565b60006020820190506136ec60008301846136c8565b92915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261375f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613722565b6137698683613722565b95508019841693508086168417925050509392505050565b600061379c61379761379284612659565b61329a565b612659565b9050919050565b6000819050919050565b6137b683613781565b6137ca6137c2826137a3565b84845461372f565b825550505050565b600090565b6137df6137d2565b6137ea8184846137ad565b505050565b5b8181101561380e576138036000826137d7565b6001810190506137f0565b5050565b601f82111561385357613824816136fd565b61382d84613712565b8101602085101561383c578190505b61385061384885613712565b8301826137ef565b50505b505050565b600082821c905092915050565b600061387660001984600802613858565b1980831691505092915050565b600061388f8383613865565b9150826002028217905092915050565b6138a983836136f2565b67ffffffffffffffff8111156138c2576138c161285e565b5b6138cc825461338e565b6138d7828285613812565b6000601f83116001811461390657600084156138f4578287013590505b6138fe8582613883565b865550613966565b601f198416613914866136fd565b60005b8281101561393c57848901358255600182019150602085019450602081019050613917565b868310156139595784890135613955601f891682613865565b8355505b6001600288020188555050505b50505050505050565b600061397b8385612a58565b93506139888385846132d5565b6139918361284d565b840190509392505050565b600060208201905081810360008301526139b781848661396f565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a1c602683613133565b9150613a27826139c0565b604082019050919050565b60006020820190508181036000830152613a4b81613a0f565b9050919050565b7f546f6b656e4e6f74537570706f72746564000000000000000000000000000000600082015250565b6000613a88601183613133565b9150613a9382613a52565b602082019050919050565b60006020820190508181036000830152613ab781613a7b565b9050919050565b7f416d6f756e7449735a65726f0000000000000000000000000000000000000000600082015250565b6000613af4600c83613133565b9150613aff82613abe565b602082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f5468726f775a65726f4164647265737300000000000000000000000000000000600082015250565b6000613b60601083613133565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f496e76616c6964496e737469747574696f6e436f646500000000000000000000600082015250565b6000613bcc601683613133565b9150613bd782613b96565b602082019050919050565b60006020820190508181036000830152613bfb81613bbf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c38602083613133565b9150613c4382613c02565b602082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b6000613c7982612659565b9150613c8483612659565b9250828203905081811115613c9c57613c9b613062565b5b92915050565b6000613cad82612659565b9150613cb883612659565b9250828201905080821115613cd057613ccf613062565b5b92915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613d32602b83613133565b9150613d3d82613cd6565b604082019050919050565b60006020820190508181036000830152613d6181613d25565b905091905056fea2646970667358221220f803c3247b0b726c64865b7a580dd6d825218d8aa6f111de58c8caa232a024ab64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/PaycrestSettingManager.sol/PaycrestSettingManager.dbg.json b/artifacts/contracts/PaycrestSettingManager.sol/PaycrestSettingManager.dbg.json index e9f1f08..8d1ca40 100644 --- a/artifacts/contracts/PaycrestSettingManager.sol/PaycrestSettingManager.dbg.json +++ b/artifacts/contracts/PaycrestSettingManager.sol/PaycrestSettingManager.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/ca9c3aad2893934d15dc9e3926dda80c.json" + "buildInfo": "../../build-info/ad4e1f20b6468568d873cd5ca3fdd61b.json" } diff --git a/artifacts/contracts/PaycrestSettingManager.sol/PaycrestSettingManager.json b/artifacts/contracts/PaycrestSettingManager.sol/PaycrestSettingManager.json index 5f7bbb3..282b24e 100644 --- a/artifacts/contracts/PaycrestSettingManager.sol/PaycrestSettingManager.json +++ b/artifacts/contracts/PaycrestSettingManager.sol/PaycrestSettingManager.json @@ -40,15 +40,9 @@ "inputs": [ { "indexed": false, - "internalType": "uint128", + "internalType": "uint64", "name": "protocolFee", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "validatorFeePercent", - "type": "uint128" + "type": "uint64" } ], "name": "PaycrestFees", @@ -225,14 +219,9 @@ { "inputs": [ { - "internalType": "uint128", + "internalType": "uint64", "name": "_protocolFeePercent", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "_validatorFeePercent", - "type": "uint128" + "type": "uint64" } ], "name": "updateProtocolFees", @@ -241,8 +230,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611361806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806399e3c0b41161005b57806399e3c0b4146100ed578063cb79455b14610109578063f2fde38b14610125578063f5326b191461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b35780638da5cb5b146100cf575b600080fd5b6100a760048036038101906100a29190610a86565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610b40565b610285565b005b6100d76103d2565b6040516100e49190610b8f565b60405180910390f35b61010760048036038101906101029190610be2565b6103fc565b005b610123600480360381019061011e9190610c90565b6105b1565b005b61013f600480360381019061013a9190610cdd565b610608565b005b61015b60048036038101906101569190610d52565b61068b565b005b610165610742565b60008151905060005b8181101561026b57609e600085815260200190815260200160002083828151811061019c5761019b610d92565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d92565b5b602002602001015160200151815260200185815250609f600085848151811061022d5761022c610d92565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b610279610742565b61028360006107c0565b565b61028d610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610e1e565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610404610742565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a90610e1e565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036104f25780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105715780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516105a493929190610e5c565b60405180910390a1505050565b6105b9610742565b8181606991826105ca9291906110b4565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516105fc9291906111d1565b60405180910390a15050565b610610610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361067f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067690611267565b60405180910390fd5b610688816107c0565b50565b610693610742565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051610736929190611296565b60405180910390a15050565b61074a610886565b73ffffffffffffffffffffffffffffffffffffffff166107686103d2565b73ffffffffffffffffffffffffffffffffffffffff16146107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b59061130b565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6108b5816108a2565b81146108c057600080fd5b50565b6000813590506108d2816108ac565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610926826108dd565b810181811067ffffffffffffffff82111715610945576109446108ee565b5b80604052505050565b600061095861088e565b9050610964828261091d565b919050565b600067ffffffffffffffff821115610984576109836108ee565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109b5576109b461099a565b5b6109bf604061094e565b905060006109cf848285016108c3565b60008301525060206109e3848285016108c3565b60208301525092915050565b6000610a026109fd84610969565b61094e565b90508083825260208201905060408402830185811115610a2557610a24610995565b5b835b81811015610a4e5780610a3a888261099f565b845260208401935050604081019050610a27565b5050509392505050565b600082601f830112610a6d57610a6c6108d8565b5b8135610a7d8482602086016109ef565b91505092915050565b60008060408385031215610a9d57610a9c610898565b5b6000610aab858286016108c3565b925050602083013567ffffffffffffffff811115610acc57610acb61089d565b5b610ad885828601610a58565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b0d82610ae2565b9050919050565b610b1d81610b02565b8114610b2857600080fd5b50565b600081359050610b3a81610b14565b92915050565b60008060408385031215610b5757610b56610898565b5b6000610b65858286016108c3565b9250506020610b7685828601610b2b565b9150509250929050565b610b8981610b02565b82525050565b6000602082019050610ba46000830184610b80565b92915050565b60008115159050919050565b610bbf81610baa565b8114610bca57600080fd5b50565b600081359050610bdc81610bb6565b92915050565b600080600060608486031215610bfb57610bfa610898565b5b6000610c09868287016108c3565b9350506020610c1a86828701610b2b565b9250506040610c2b86828701610bcd565b9150509250925092565b600080fd5b60008083601f840112610c5057610c4f6108d8565b5b8235905067ffffffffffffffff811115610c6d57610c6c610c35565b5b602083019150836001820283011115610c8957610c88610995565b5b9250929050565b60008060208385031215610ca757610ca6610898565b5b600083013567ffffffffffffffff811115610cc557610cc461089d565b5b610cd185828601610c3a565b92509250509250929050565b600060208284031215610cf357610cf2610898565b5b6000610d0184828501610b2b565b91505092915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b610d2f81610d0a565b8114610d3a57600080fd5b50565b600081359050610d4c81610d26565b92915050565b60008060408385031215610d6957610d68610898565b5b6000610d7785828601610d3d565b9250506020610d8885828601610d3d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610e08601683610dc1565b9150610e1382610dd2565b602082019050919050565b60006020820190508181036000830152610e3781610dfb565b9050919050565b610e47816108a2565b82525050565b610e5681610baa565b82525050565b6000606082019050610e716000830186610e3e565b610e7e6020830185610b80565b610e8b6040830184610e4d565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ee557607f821691505b602082108103610ef857610ef7610e9e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610f23565b610f6a8683610f23565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610fb1610fac610fa784610f82565b610f8c565b610f82565b9050919050565b6000819050919050565b610fcb83610f96565b610fdf610fd782610fb8565b848454610f30565b825550505050565b600090565b610ff4610fe7565b610fff818484610fc2565b505050565b5b8181101561102357611018600082610fec565b600181019050611005565b5050565b601f8211156110685761103981610efe565b61104284610f13565b81016020851015611051578190505b61106561105d85610f13565b830182611004565b50505b505050565b600082821c905092915050565b600061108b6000198460080261106d565b1980831691505092915050565b60006110a4838361107a565b9150826002028217905092915050565b6110be8383610e93565b67ffffffffffffffff8111156110d7576110d66108ee565b5b6110e18254610ecd565b6110ec828285611027565b6000601f83116001811461111b5760008415611109578287013590505b6111138582611098565b86555061117b565b601f19841661112986610efe565b60005b828110156111515784890135825560018201915060208501945060208101905061112c565b8683101561116e578489013561116a601f89168261107a565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111b08385611184565b93506111bd838584611195565b6111c6836108dd565b840190509392505050565b600060208201905081810360008301526111ec8184866111a4565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611251602683610dc1565b915061125c826111f5565b604082019050919050565b6000602082019050818103600083015261128081611244565b9050919050565b61129081610d0a565b82525050565b60006040820190506112ab6000830185611287565b6112b86020830184611287565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112f5602083610dc1565b9150611300826112bf565b602082019050919050565b60006020820190508181036000830152611324816112e8565b905091905056fea2646970667358221220cbcf63be5aea212b07add232a2fd1fea21e0a28d565c16921b2afe6d54e9534f64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806399e3c0b41161005b57806399e3c0b4146100ed578063cb79455b14610109578063f2fde38b14610125578063f5326b191461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b35780638da5cb5b146100cf575b600080fd5b6100a760048036038101906100a29190610a86565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610b40565b610285565b005b6100d76103d2565b6040516100e49190610b8f565b60405180910390f35b61010760048036038101906101029190610be2565b6103fc565b005b610123600480360381019061011e9190610c90565b6105b1565b005b61013f600480360381019061013a9190610cdd565b610608565b005b61015b60048036038101906101569190610d52565b61068b565b005b610165610742565b60008151905060005b8181101561026b57609e600085815260200190815260200160002083828151811061019c5761019b610d92565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d92565b5b602002602001015160200151815260200185815250609f600085848151811061022d5761022c610d92565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b610279610742565b61028360006107c0565b565b61028d610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610e1e565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610404610742565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a90610e1e565b60405180910390fd5b7f746f6b656e00000000000000000000000000000000000000000000000000000083036104f25780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105715780609d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace9308383836040516105a493929190610e5c565b60405180910390a1505050565b6105b9610742565b8181606991826105ca9291906110b4565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef82826040516105fc9291906111d1565b60405180910390a15050565b610610610742565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361067f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067690611267565b60405180910390fd5b610688816107c0565b50565b610693610742565b81606660006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080606660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fe38926c5806b98a6fd00c5d791a36fbd196537fe48d11c45c9f1d0acd1ea74df8282604051610736929190611296565b60405180910390a15050565b61074a610886565b73ffffffffffffffffffffffffffffffffffffffff166107686103d2565b73ffffffffffffffffffffffffffffffffffffffff16146107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b59061130b565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6108b5816108a2565b81146108c057600080fd5b50565b6000813590506108d2816108ac565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610926826108dd565b810181811067ffffffffffffffff82111715610945576109446108ee565b5b80604052505050565b600061095861088e565b9050610964828261091d565b919050565b600067ffffffffffffffff821115610984576109836108ee565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109b5576109b461099a565b5b6109bf604061094e565b905060006109cf848285016108c3565b60008301525060206109e3848285016108c3565b60208301525092915050565b6000610a026109fd84610969565b61094e565b90508083825260208201905060408402830185811115610a2557610a24610995565b5b835b81811015610a4e5780610a3a888261099f565b845260208401935050604081019050610a27565b5050509392505050565b600082601f830112610a6d57610a6c6108d8565b5b8135610a7d8482602086016109ef565b91505092915050565b60008060408385031215610a9d57610a9c610898565b5b6000610aab858286016108c3565b925050602083013567ffffffffffffffff811115610acc57610acb61089d565b5b610ad885828601610a58565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b0d82610ae2565b9050919050565b610b1d81610b02565b8114610b2857600080fd5b50565b600081359050610b3a81610b14565b92915050565b60008060408385031215610b5757610b56610898565b5b6000610b65858286016108c3565b9250506020610b7685828601610b2b565b9150509250929050565b610b8981610b02565b82525050565b6000602082019050610ba46000830184610b80565b92915050565b60008115159050919050565b610bbf81610baa565b8114610bca57600080fd5b50565b600081359050610bdc81610bb6565b92915050565b600080600060608486031215610bfb57610bfa610898565b5b6000610c09868287016108c3565b9350506020610c1a86828701610b2b565b9250506040610c2b86828701610bcd565b9150509250925092565b600080fd5b60008083601f840112610c5057610c4f6108d8565b5b8235905067ffffffffffffffff811115610c6d57610c6c610c35565b5b602083019150836001820283011115610c8957610c88610995565b5b9250929050565b60008060208385031215610ca757610ca6610898565b5b600083013567ffffffffffffffff811115610cc557610cc461089d565b5b610cd185828601610c3a565b92509250509250929050565b600060208284031215610cf357610cf2610898565b5b6000610d0184828501610b2b565b91505092915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b610d2f81610d0a565b8114610d3a57600080fd5b50565b600081359050610d4c81610d26565b92915050565b60008060408385031215610d6957610d68610898565b5b6000610d7785828601610d3d565b9250506020610d8885828601610d3d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610e08601683610dc1565b9150610e1382610dd2565b602082019050919050565b60006020820190508181036000830152610e3781610dfb565b9050919050565b610e47816108a2565b82525050565b610e5681610baa565b82525050565b6000606082019050610e716000830186610e3e565b610e7e6020830185610b80565b610e8b6040830184610e4d565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ee557607f821691505b602082108103610ef857610ef7610e9e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610f23565b610f6a8683610f23565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610fb1610fac610fa784610f82565b610f8c565b610f82565b9050919050565b6000819050919050565b610fcb83610f96565b610fdf610fd782610fb8565b848454610f30565b825550505050565b600090565b610ff4610fe7565b610fff818484610fc2565b505050565b5b8181101561102357611018600082610fec565b600181019050611005565b5050565b601f8211156110685761103981610efe565b61104284610f13565b81016020851015611051578190505b61106561105d85610f13565b830182611004565b50505b505050565b600082821c905092915050565b600061108b6000198460080261106d565b1980831691505092915050565b60006110a4838361107a565b9150826002028217905092915050565b6110be8383610e93565b67ffffffffffffffff8111156110d7576110d66108ee565b5b6110e18254610ecd565b6110ec828285611027565b6000601f83116001811461111b5760008415611109578287013590505b6111138582611098565b86555061117b565b601f19841661112986610efe565b60005b828110156111515784890135825560018201915060208501945060208101905061112c565b8683101561116e578489013561116a601f89168261107a565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111b08385611184565b93506111bd838584611195565b6111c6836108dd565b840190509392505050565b600060208201905081810360008301526111ec8184866111a4565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611251602683610dc1565b915061125c826111f5565b604082019050919050565b6000602082019050818103600083015261128081611244565b9050919050565b61129081610d0a565b82525050565b60006040820190506112ab6000830185611287565b6112b86020830184611287565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112f5602083610dc1565b9150611300826112bf565b602082019050919050565b60006020820190508181036000830152611324816112e8565b905091905056fea2646970667358221220cbcf63be5aea212b07add232a2fd1fea21e0a28d565c16921b2afe6d54e9534f64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506112ec806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100eb57806399e3c0b414610109578063cb79455b14610125578063f2fde38b1461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b357806384630736146100cf575b600080fd5b6100a760048036038101906100a29190610a3a565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610af4565b610285565b005b6100e960048036038101906100e49190610b74565b6103d2565b005b6100f361043d565b6040516101009190610bb0565b60405180910390f35b610123600480360381019061011e9190610c03565b610467565b005b61013f600480360381019061013a9190610cb1565b61061c565b005b61015b60048036038101906101569190610cfe565b610673565b005b6101656106f6565b60008151905060005b8181101561026b57609d600085815260200190815260200160002083828151811061019c5761019b610d2b565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d2b565b5b602002602001015160200151815260200185815250609e600085848151811061022d5761022c610d2b565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b6102796106f6565b6102836000610774565b565b61028d6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610db7565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6103da6106f6565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a9816040516104329190610de6565b60405180910390a150565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61046f6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d590610db7565b60405180910390fd5b7f746f6b656e000000000000000000000000000000000000000000000000000000830361055d5780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105dc5780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161060f93929190610e1f565b60405180910390a1505050565b6106246106f6565b818160689182610635929190611077565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051610667929190611194565b60405180910390a15050565b61067b6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e19061122a565b60405180910390fd5b6106f381610774565b50565b6106fe61083a565b73ffffffffffffffffffffffffffffffffffffffff1661071c61043d565b73ffffffffffffffffffffffffffffffffffffffff1614610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611296565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61086981610856565b811461087457600080fd5b50565b60008135905061088681610860565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6108da82610891565b810181811067ffffffffffffffff821117156108f9576108f86108a2565b5b80604052505050565b600061090c610842565b905061091882826108d1565b919050565b600067ffffffffffffffff821115610938576109376108a2565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109695761096861094e565b5b6109736040610902565b9050600061098384828501610877565b600083015250602061099784828501610877565b60208301525092915050565b60006109b66109b18461091d565b610902565b905080838252602082019050604084028301858111156109d9576109d8610949565b5b835b81811015610a0257806109ee8882610953565b8452602084019350506040810190506109db565b5050509392505050565b600082601f830112610a2157610a2061088c565b5b8135610a318482602086016109a3565b91505092915050565b60008060408385031215610a5157610a5061084c565b5b6000610a5f85828601610877565b925050602083013567ffffffffffffffff811115610a8057610a7f610851565b5b610a8c85828601610a0c565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ac182610a96565b9050919050565b610ad181610ab6565b8114610adc57600080fd5b50565b600081359050610aee81610ac8565b92915050565b60008060408385031215610b0b57610b0a61084c565b5b6000610b1985828601610877565b9250506020610b2a85828601610adf565b9150509250929050565b600067ffffffffffffffff82169050919050565b610b5181610b34565b8114610b5c57600080fd5b50565b600081359050610b6e81610b48565b92915050565b600060208284031215610b8a57610b8961084c565b5b6000610b9884828501610b5f565b91505092915050565b610baa81610ab6565b82525050565b6000602082019050610bc56000830184610ba1565b92915050565b60008115159050919050565b610be081610bcb565b8114610beb57600080fd5b50565b600081359050610bfd81610bd7565b92915050565b600080600060608486031215610c1c57610c1b61084c565b5b6000610c2a86828701610877565b9350506020610c3b86828701610adf565b9250506040610c4c86828701610bee565b9150509250925092565b600080fd5b60008083601f840112610c7157610c7061088c565b5b8235905067ffffffffffffffff811115610c8e57610c8d610c56565b5b602083019150836001820283011115610caa57610ca9610949565b5b9250929050565b60008060208385031215610cc857610cc761084c565b5b600083013567ffffffffffffffff811115610ce657610ce5610851565b5b610cf285828601610c5b565b92509250509250929050565b600060208284031215610d1457610d1361084c565b5b6000610d2284828501610adf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610da1601683610d5a565b9150610dac82610d6b565b602082019050919050565b60006020820190508181036000830152610dd081610d94565b9050919050565b610de081610b34565b82525050565b6000602082019050610dfb6000830184610dd7565b92915050565b610e0a81610856565b82525050565b610e1981610bcb565b82525050565b6000606082019050610e346000830186610e01565b610e416020830185610ba1565b610e4e6040830184610e10565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ea857607f821691505b602082108103610ebb57610eba610e61565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610ee6565b610f2d8683610ee6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610f74610f6f610f6a84610f45565b610f4f565b610f45565b9050919050565b6000819050919050565b610f8e83610f59565b610fa2610f9a82610f7b565b848454610ef3565b825550505050565b600090565b610fb7610faa565b610fc2818484610f85565b505050565b5b81811015610fe657610fdb600082610faf565b600181019050610fc8565b5050565b601f82111561102b57610ffc81610ec1565b61100584610ed6565b81016020851015611014578190505b61102861102085610ed6565b830182610fc7565b50505b505050565b600082821c905092915050565b600061104e60001984600802611030565b1980831691505092915050565b6000611067838361103d565b9150826002028217905092915050565b6110818383610e56565b67ffffffffffffffff81111561109a576110996108a2565b5b6110a48254610e90565b6110af828285610fea565b6000601f8311600181146110de57600084156110cc578287013590505b6110d6858261105b565b86555061113e565b601f1984166110ec86610ec1565b60005b82811015611114578489013582556001820191506020850194506020810190506110ef565b86831015611131578489013561112d601f89168261103d565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111738385611147565b9350611180838584611158565b61118983610891565b840190509392505050565b600060208201905081810360008301526111af818486611167565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611214602683610d5a565b915061121f826111b8565b604082019050919050565b6000602082019050818103600083015261124381611207565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611280602083610d5a565b915061128b8261124a565b602082019050919050565b600060208201905081810360008301526112af81611273565b905091905056fea264697066735822122050b41f080926bf4f9f186583798e139b279542447fd028eba1d461cde298594564736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100eb57806399e3c0b414610109578063cb79455b14610125578063f2fde38b1461014157610088565b8063322008821461008d578063715018a6146100a957806379a0effb146100b357806384630736146100cf575b600080fd5b6100a760048036038101906100a29190610a3a565b61015d565b005b6100b1610271565b005b6100cd60048036038101906100c89190610af4565b610285565b005b6100e960048036038101906100e49190610b74565b6103d2565b005b6100f361043d565b6040516101009190610bb0565b60405180910390f35b610123600480360381019061011e9190610c03565b610467565b005b61013f600480360381019061013a9190610cb1565b61061c565b005b61015b60048036038101906101569190610cfe565b610673565b005b6101656106f6565b60008151905060005b8181101561026b57609d600085815260200190815260200160002083828151811061019c5761019b610d2b565b5b6020026020010151908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050604051806040016040528084838151811061020157610200610d2b565b5b602002602001015160200151815260200185815250609e600085848151811061022d5761022c610d2b565b5b60200260200101516000015181526020019081526020016000206000820151816000015560208201518160010155905050808060010191505061016e565b50505050565b6102796106f6565b6102836000610774565b565b61028d6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610db7565b60405180910390fd5b7f666565000000000000000000000000000000000000000000000000000000000082036103655780606660086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b7f61676772656761746f720000000000000000000000000000000000000000000082036103ce5780606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6103da6106f6565b80606660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc8ca786c100bc62a0dffbe768b5f0b770d84e8604c5de54b54197b9066bb42a9816040516104329190610de6565b60405180910390a150565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61046f6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d590610db7565b60405180910390fd5b7f746f6b656e000000000000000000000000000000000000000000000000000000830361055d5780609b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f77686974656c697374000000000000000000000000000000000000000000000083036105dc5780609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7fe22cadcc5ddbc0a185e8920eaa6825bcc06dcd6b432988e7e9912caa59ace93083838360405161060f93929190610e1f565b60405180910390a1505050565b6106246106f6565b818160689182610635929190611077565b507f6a6600b7242975868d8321b5e64d0c9f2fcc92eb1af72254a6357be77ee7dcef8282604051610667929190611194565b60405180910390a15050565b61067b6106f6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e19061122a565b60405180910390fd5b6106f381610774565b50565b6106fe61083a565b73ffffffffffffffffffffffffffffffffffffffff1661071c61043d565b73ffffffffffffffffffffffffffffffffffffffff1614610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611296565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61086981610856565b811461087457600080fd5b50565b60008135905061088681610860565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6108da82610891565b810181811067ffffffffffffffff821117156108f9576108f86108a2565b5b80604052505050565b600061090c610842565b905061091882826108d1565b919050565b600067ffffffffffffffff821115610938576109376108a2565b5b602082029050602081019050919050565b600080fd5b600080fd5b6000604082840312156109695761096861094e565b5b6109736040610902565b9050600061098384828501610877565b600083015250602061099784828501610877565b60208301525092915050565b60006109b66109b18461091d565b610902565b905080838252602082019050604084028301858111156109d9576109d8610949565b5b835b81811015610a0257806109ee8882610953565b8452602084019350506040810190506109db565b5050509392505050565b600082601f830112610a2157610a2061088c565b5b8135610a318482602086016109a3565b91505092915050565b60008060408385031215610a5157610a5061084c565b5b6000610a5f85828601610877565b925050602083013567ffffffffffffffff811115610a8057610a7f610851565b5b610a8c85828601610a0c565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ac182610a96565b9050919050565b610ad181610ab6565b8114610adc57600080fd5b50565b600081359050610aee81610ac8565b92915050565b60008060408385031215610b0b57610b0a61084c565b5b6000610b1985828601610877565b9250506020610b2a85828601610adf565b9150509250929050565b600067ffffffffffffffff82169050919050565b610b5181610b34565b8114610b5c57600080fd5b50565b600081359050610b6e81610b48565b92915050565b600060208284031215610b8a57610b8961084c565b5b6000610b9884828501610b5f565b91505092915050565b610baa81610ab6565b82525050565b6000602082019050610bc56000830184610ba1565b92915050565b60008115159050919050565b610be081610bcb565b8114610beb57600080fd5b50565b600081359050610bfd81610bd7565b92915050565b600080600060608486031215610c1c57610c1b61084c565b5b6000610c2a86828701610877565b9350506020610c3b86828701610adf565b9250506040610c4c86828701610bee565b9150509250925092565b600080fd5b60008083601f840112610c7157610c7061088c565b5b8235905067ffffffffffffffff811115610c8e57610c8d610c56565b5b602083019150836001820283011115610caa57610ca9610949565b5b9250929050565b60008060208385031215610cc857610cc761084c565b5b600083013567ffffffffffffffff811115610ce657610ce5610851565b5b610cf285828601610c5b565b92509250509250929050565b600060208284031215610d1457610d1361084c565b5b6000610d2284828501610adf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f50617963726573743a207a65726f206164647265737300000000000000000000600082015250565b6000610da1601683610d5a565b9150610dac82610d6b565b602082019050919050565b60006020820190508181036000830152610dd081610d94565b9050919050565b610de081610b34565b82525050565b6000602082019050610dfb6000830184610dd7565b92915050565b610e0a81610856565b82525050565b610e1981610bcb565b82525050565b6000606082019050610e346000830186610e01565b610e416020830185610ba1565b610e4e6040830184610e10565b949350505050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610ea857607f821691505b602082108103610ebb57610eba610e61565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610f237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610ee6565b610f2d8683610ee6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000610f74610f6f610f6a84610f45565b610f4f565b610f45565b9050919050565b6000819050919050565b610f8e83610f59565b610fa2610f9a82610f7b565b848454610ef3565b825550505050565b600090565b610fb7610faa565b610fc2818484610f85565b505050565b5b81811015610fe657610fdb600082610faf565b600181019050610fc8565b5050565b601f82111561102b57610ffc81610ec1565b61100584610ed6565b81016020851015611014578190505b61102861102085610ed6565b830182610fc7565b50505b505050565b600082821c905092915050565b600061104e60001984600802611030565b1980831691505092915050565b6000611067838361103d565b9150826002028217905092915050565b6110818383610e56565b67ffffffffffffffff81111561109a576110996108a2565b5b6110a48254610e90565b6110af828285610fea565b6000601f8311600181146110de57600084156110cc578287013590505b6110d6858261105b565b86555061113e565b601f1984166110ec86610ec1565b60005b82811015611114578489013582556001820191506020850194506020810190506110ef565b86831015611131578489013561112d601f89168261103d565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b82818337600083830152505050565b60006111738385611147565b9350611180838584611158565b61118983610891565b840190509392505050565b600060208201905081810360008301526111af818486611167565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611214602683610d5a565b915061121f826111b8565b604082019050919050565b6000602082019050818103600083015261124381611207565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611280602083610d5a565b915061128b8261124a565b602082019050919050565b600060208201905081810360008301526112af81611273565b905091905056fea264697066735822122050b41f080926bf4f9f186583798e139b279542447fd028eba1d461cde298594564736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/interface/IPaycrest.sol/IPaycrest.dbg.json b/artifacts/contracts/interface/IPaycrest.sol/IPaycrest.dbg.json index f413067..0995b06 100644 --- a/artifacts/contracts/interface/IPaycrest.sol/IPaycrest.dbg.json +++ b/artifacts/contracts/interface/IPaycrest.sol/IPaycrest.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/ca9c3aad2893934d15dc9e3926dda80c.json" + "buildInfo": "../../../build-info/c1e7e423d2b99f08521b07865d24a278.json" } diff --git a/artifacts/contracts/interface/IPaycrest.sol/IPaycrest.json b/artifacts/contracts/interface/IPaycrest.sol/IPaycrest.json index 7437ea3..f426ca4 100644 --- a/artifacts/contracts/interface/IPaycrest.sol/IPaycrest.json +++ b/artifacts/contracts/interface/IPaycrest.sol/IPaycrest.json @@ -236,14 +236,9 @@ "name": "getFeeDetails", "outputs": [ { - "internalType": "uint128", + "internalType": "uint64", "name": "protocolReward", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "validatorFeePercent", - "type": "uint128" + "type": "uint64" }, { "internalType": "uint256", @@ -399,11 +394,6 @@ "name": "_label", "type": "bytes32" }, - { - "internalType": "address[]", - "name": "_validators", - "type": "address[]" - }, { "internalType": "address", "name": "_liquidityProvider", diff --git a/artifacts/contracts/mocks/MockUSDC.sol/MockUSDC.dbg.json b/artifacts/contracts/mocks/MockUSDC.sol/MockUSDC.dbg.json index 678924d..7823844 100644 --- a/artifacts/contracts/mocks/MockUSDC.sol/MockUSDC.dbg.json +++ b/artifacts/contracts/mocks/MockUSDC.sol/MockUSDC.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/7da5f2fa90214690aa148f08bf87d386.json" + "buildInfo": "../../../build-info/db0d458556d1546ee8cdf3464fede1b0.json" } diff --git a/artifacts/contracts/mocks/MockUSDC.sol/MockUSDC.json b/artifacts/contracts/mocks/MockUSDC.sol/MockUSDC.json index 4f758c9..2f33494 100644 --- a/artifacts/contracts/mocks/MockUSDC.sol/MockUSDC.json +++ b/artifacts/contracts/mocks/MockUSDC.sol/MockUSDC.json @@ -312,8 +312,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600881526020017f4d6f636b554453430000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d5553444300000000000000000000000000000000000000000000000000000081525081600390816200008f9190620004b7565b508060049081620000a19190620004b7565b505050620000c03369d3c21bcecceda1000000620000c660201b60201c565b620006b9565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000138576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012f90620005ff565b60405180910390fd5b6200014c600083836200023360201b60201c565b806002600082825462000160919062000650565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200021391906200069c565b60405180910390a36200022f600083836200023860201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002bf57607f821691505b602082108103620002d557620002d462000277565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200033f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000300565b6200034b868362000300565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000398620003926200038c8462000363565b6200036d565b62000363565b9050919050565b6000819050919050565b620003b48362000377565b620003cc620003c3826200039f565b8484546200030d565b825550505050565b600090565b620003e3620003d4565b620003f0818484620003a9565b505050565b5b8181101562000418576200040c600082620003d9565b600181019050620003f6565b5050565b601f82111562000467576200043181620002db565b6200043c84620002f0565b810160208510156200044c578190505b620004646200045b85620002f0565b830182620003f5565b50505b505050565b600082821c905092915050565b60006200048c600019846008026200046c565b1980831691505092915050565b6000620004a7838362000479565b9150826002028217905092915050565b620004c2826200023d565b67ffffffffffffffff811115620004de57620004dd62000248565b5b620004ea8254620002a6565b620004f78282856200041c565b600060209050601f8311600181146200052f57600084156200051a578287015190505b62000526858262000499565b86555062000596565b601f1984166200053f86620002db565b60005b82811015620005695784890151825560018201915060208501945060208101905062000542565b8683101562000589578489015162000585601f89168262000479565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005e7601f836200059e565b9150620005f482620005af565b602082019050919050565b600060208201905081810360008301526200061a81620005d8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200065d8262000363565b91506200066a8362000363565b925082820190508082111562000685576200068462000621565b5b92915050565b620006968162000363565b82525050565b6000602082019050620006b360008301846200068b565b92915050565b61187580620006c96000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d681461024d578063a457c2d714610269578063a9059cbb14610299578063dd62ed3e146102c9576100ea565b806370a08231146101f557806395d89b41146102255780639975038c14610243576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806342966c68146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102f9565b6040516101049190610f29565b60405180910390f35b61012760048036038101906101229190610fe4565b61038b565b604051610134919061103f565b60405180910390f35b6101456103ae565b6040516101529190611069565b60405180910390f35b61017560048036038101906101709190611084565b6103b8565b604051610182919061103f565b60405180910390f35b6101936103e7565b6040516101a091906110f3565b60405180910390f35b6101c360048036038101906101be9190610fe4565b6103f0565b6040516101d0919061103f565b60405180910390f35b6101f360048036038101906101ee919061110e565b610427565b005b61020f600480360381019061020a919061113b565b610434565b60405161021c9190611069565b60405180910390f35b61022d61047c565b60405161023a9190610f29565b60405180910390f35b61024b61050e565b005b6102676004803603810190610262919061110e565b61056b565b005b610283600480360381019061027e9190610fe4565b610578565b604051610290919061103f565b60405180910390f35b6102b360048036038101906102ae9190610fe4565b6105ef565b6040516102c0919061103f565b60405180910390f35b6102e360048036038101906102de9190611168565b610612565b6040516102f09190611069565b60405180910390f35b606060038054610308906111d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610334906111d7565b80156103815780601f1061035657610100808354040283529160200191610381565b820191906000526020600020905b81548152906001019060200180831161036457829003601f168201915b5050505050905090565b600080610396610699565b90506103a38185856106a1565b600191505092915050565b6000600254905090565b6000806103c3610699565b90506103d085828561086a565b6103db8585856108f6565b60019150509392505050565b60006006905090565b6000806103fb610699565b905061041c81858561040d8589610612565b6104179190611237565b6106a1565b600191505092915050565b6104313382610b6c565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461048b906111d7565b80601f01602080910402602001604051908101604052809291908181526020018280546104b7906111d7565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061051933610434565b90506000811161055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906112b7565b60405180910390fd5b6105683382610b6c565b50565b6105753382610d39565b50565b600080610583610699565b905060006105918286610612565b9050838110156105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90611349565b60405180910390fd5b6105e382868684036106a1565b60019250505092915050565b6000806105fa610699565b90506106078185856108f6565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906113db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107769061146d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161085d9190611069565b60405180910390a3505050565b60006108768484610612565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108f057818110156108e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d9906114d9565b60405180910390fd5b6108ef84848484036106a1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c9061156b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb906115fd565b60405180910390fd5b6109df838383610e8f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c9061168f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b539190611069565b60405180910390a3610b66848484610e94565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290611721565b60405180910390fd5b610be782600083610e8f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c64906117b3565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d209190611069565b60405180910390a3610d3483600084610e94565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f9061181f565b60405180910390fd5b610db460008383610e8f565b8060026000828254610dc69190611237565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e779190611069565b60405180910390a3610e8b60008383610e94565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ed3578082015181840152602081019050610eb8565b60008484015250505050565b6000601f19601f8301169050919050565b6000610efb82610e99565b610f058185610ea4565b9350610f15818560208601610eb5565b610f1e81610edf565b840191505092915050565b60006020820190508181036000830152610f438184610ef0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f7b82610f50565b9050919050565b610f8b81610f70565b8114610f9657600080fd5b50565b600081359050610fa881610f82565b92915050565b6000819050919050565b610fc181610fae565b8114610fcc57600080fd5b50565b600081359050610fde81610fb8565b92915050565b60008060408385031215610ffb57610ffa610f4b565b5b600061100985828601610f99565b925050602061101a85828601610fcf565b9150509250929050565b60008115159050919050565b61103981611024565b82525050565b60006020820190506110546000830184611030565b92915050565b61106381610fae565b82525050565b600060208201905061107e600083018461105a565b92915050565b60008060006060848603121561109d5761109c610f4b565b5b60006110ab86828701610f99565b93505060206110bc86828701610f99565b92505060406110cd86828701610fcf565b9150509250925092565b600060ff82169050919050565b6110ed816110d7565b82525050565b600060208201905061110860008301846110e4565b92915050565b60006020828403121561112457611123610f4b565b5b600061113284828501610fcf565b91505092915050565b60006020828403121561115157611150610f4b565b5b600061115f84828501610f99565b91505092915050565b6000806040838503121561117f5761117e610f4b565b5b600061118d85828601610f99565b925050602061119e85828601610f99565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ef57607f821691505b602082108103611202576112016111a8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061124282610fae565b915061124d83610fae565b925082820190508082111561126557611264611208565b5b92915050565b7f4d6f636b555344433a204e6f7468696e6720746f206275726e00000000000000600082015250565b60006112a1601983610ea4565b91506112ac8261126b565b602082019050919050565b600060208201905081810360008301526112d081611294565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611333602583610ea4565b915061133e826112d7565b604082019050919050565b6000602082019050818103600083015261136281611326565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113c5602483610ea4565b91506113d082611369565b604082019050919050565b600060208201905081810360008301526113f4816113b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611457602283610ea4565b9150611462826113fb565b604082019050919050565b600060208201905081810360008301526114868161144a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006114c3601d83610ea4565b91506114ce8261148d565b602082019050919050565b600060208201905081810360008301526114f2816114b6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611555602583610ea4565b9150611560826114f9565b604082019050919050565b6000602082019050818103600083015261158481611548565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115e7602383610ea4565b91506115f28261158b565b604082019050919050565b60006020820190508181036000830152611616816115da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611679602683610ea4565b91506116848261161d565b604082019050919050565b600060208201905081810360008301526116a88161166c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061170b602183610ea4565b9150611716826116af565b604082019050919050565b6000602082019050818103600083015261173a816116fe565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061179d602283610ea4565b91506117a882611741565b604082019050919050565b600060208201905081810360008301526117cc81611790565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611809601f83610ea4565b9150611814826117d3565b602082019050919050565b60006020820190508181036000830152611838816117fc565b905091905056fea2646970667358221220045f13df3e5c1ccd70e5ac15a6c29c2254315f776edacda2166fadfb1b536d1864736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d681461024d578063a457c2d714610269578063a9059cbb14610299578063dd62ed3e146102c9576100ea565b806370a08231146101f557806395d89b41146102255780639975038c14610243576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806342966c68146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102f9565b6040516101049190610f29565b60405180910390f35b61012760048036038101906101229190610fe4565b61038b565b604051610134919061103f565b60405180910390f35b6101456103ae565b6040516101529190611069565b60405180910390f35b61017560048036038101906101709190611084565b6103b8565b604051610182919061103f565b60405180910390f35b6101936103e7565b6040516101a091906110f3565b60405180910390f35b6101c360048036038101906101be9190610fe4565b6103f0565b6040516101d0919061103f565b60405180910390f35b6101f360048036038101906101ee919061110e565b610427565b005b61020f600480360381019061020a919061113b565b610434565b60405161021c9190611069565b60405180910390f35b61022d61047c565b60405161023a9190610f29565b60405180910390f35b61024b61050e565b005b6102676004803603810190610262919061110e565b61056b565b005b610283600480360381019061027e9190610fe4565b610578565b604051610290919061103f565b60405180910390f35b6102b360048036038101906102ae9190610fe4565b6105ef565b6040516102c0919061103f565b60405180910390f35b6102e360048036038101906102de9190611168565b610612565b6040516102f09190611069565b60405180910390f35b606060038054610308906111d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610334906111d7565b80156103815780601f1061035657610100808354040283529160200191610381565b820191906000526020600020905b81548152906001019060200180831161036457829003601f168201915b5050505050905090565b600080610396610699565b90506103a38185856106a1565b600191505092915050565b6000600254905090565b6000806103c3610699565b90506103d085828561086a565b6103db8585856108f6565b60019150509392505050565b60006006905090565b6000806103fb610699565b905061041c81858561040d8589610612565b6104179190611237565b6106a1565b600191505092915050565b6104313382610b6c565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461048b906111d7565b80601f01602080910402602001604051908101604052809291908181526020018280546104b7906111d7565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061051933610434565b90506000811161055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906112b7565b60405180910390fd5b6105683382610b6c565b50565b6105753382610d39565b50565b600080610583610699565b905060006105918286610612565b9050838110156105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90611349565b60405180910390fd5b6105e382868684036106a1565b60019250505092915050565b6000806105fa610699565b90506106078185856108f6565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906113db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107769061146d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161085d9190611069565b60405180910390a3505050565b60006108768484610612565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108f057818110156108e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d9906114d9565b60405180910390fd5b6108ef84848484036106a1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c9061156b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb906115fd565b60405180910390fd5b6109df838383610e8f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c9061168f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b539190611069565b60405180910390a3610b66848484610e94565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290611721565b60405180910390fd5b610be782600083610e8f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c64906117b3565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d209190611069565b60405180910390a3610d3483600084610e94565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f9061181f565b60405180910390fd5b610db460008383610e8f565b8060026000828254610dc69190611237565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e779190611069565b60405180910390a3610e8b60008383610e94565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ed3578082015181840152602081019050610eb8565b60008484015250505050565b6000601f19601f8301169050919050565b6000610efb82610e99565b610f058185610ea4565b9350610f15818560208601610eb5565b610f1e81610edf565b840191505092915050565b60006020820190508181036000830152610f438184610ef0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f7b82610f50565b9050919050565b610f8b81610f70565b8114610f9657600080fd5b50565b600081359050610fa881610f82565b92915050565b6000819050919050565b610fc181610fae565b8114610fcc57600080fd5b50565b600081359050610fde81610fb8565b92915050565b60008060408385031215610ffb57610ffa610f4b565b5b600061100985828601610f99565b925050602061101a85828601610fcf565b9150509250929050565b60008115159050919050565b61103981611024565b82525050565b60006020820190506110546000830184611030565b92915050565b61106381610fae565b82525050565b600060208201905061107e600083018461105a565b92915050565b60008060006060848603121561109d5761109c610f4b565b5b60006110ab86828701610f99565b93505060206110bc86828701610f99565b92505060406110cd86828701610fcf565b9150509250925092565b600060ff82169050919050565b6110ed816110d7565b82525050565b600060208201905061110860008301846110e4565b92915050565b60006020828403121561112457611123610f4b565b5b600061113284828501610fcf565b91505092915050565b60006020828403121561115157611150610f4b565b5b600061115f84828501610f99565b91505092915050565b6000806040838503121561117f5761117e610f4b565b5b600061118d85828601610f99565b925050602061119e85828601610f99565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ef57607f821691505b602082108103611202576112016111a8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061124282610fae565b915061124d83610fae565b925082820190508082111561126557611264611208565b5b92915050565b7f4d6f636b555344433a204e6f7468696e6720746f206275726e00000000000000600082015250565b60006112a1601983610ea4565b91506112ac8261126b565b602082019050919050565b600060208201905081810360008301526112d081611294565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611333602583610ea4565b915061133e826112d7565b604082019050919050565b6000602082019050818103600083015261136281611326565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113c5602483610ea4565b91506113d082611369565b604082019050919050565b600060208201905081810360008301526113f4816113b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611457602283610ea4565b9150611462826113fb565b604082019050919050565b600060208201905081810360008301526114868161144a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006114c3601d83610ea4565b91506114ce8261148d565b602082019050919050565b600060208201905081810360008301526114f2816114b6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611555602583610ea4565b9150611560826114f9565b604082019050919050565b6000602082019050818103600083015261158481611548565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115e7602383610ea4565b91506115f28261158b565b604082019050919050565b60006020820190508181036000830152611616816115da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611679602683610ea4565b91506116848261161d565b604082019050919050565b600060208201905081810360008301526116a88161166c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061170b602183610ea4565b9150611716826116af565b604082019050919050565b6000602082019050818103600083015261173a816116fe565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061179d602283610ea4565b91506117a882611741565b604082019050919050565b600060208201905081810360008301526117cc81611790565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611809601f83610ea4565b9150611814826117d3565b602082019050919050565b60006020820190508181036000830152611838816117fc565b905091905056fea2646970667358221220045f13df3e5c1ccd70e5ac15a6c29c2254315f776edacda2166fadfb1b536d1864736f6c63430008120033", + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600881526020017f4d6f636b554453430000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d5553444300000000000000000000000000000000000000000000000000000081525081600390816200008f9190620004b7565b508060049081620000a19190620004b7565b505050620000c03369d3c21bcecceda1000000620000c660201b60201c565b620006b9565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000138576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012f90620005ff565b60405180910390fd5b6200014c600083836200023360201b60201c565b806002600082825462000160919062000650565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200021391906200069c565b60405180910390a36200022f600083836200023860201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002bf57607f821691505b602082108103620002d557620002d462000277565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200033f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000300565b6200034b868362000300565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000398620003926200038c8462000363565b6200036d565b62000363565b9050919050565b6000819050919050565b620003b48362000377565b620003cc620003c3826200039f565b8484546200030d565b825550505050565b600090565b620003e3620003d4565b620003f0818484620003a9565b505050565b5b8181101562000418576200040c600082620003d9565b600181019050620003f6565b5050565b601f82111562000467576200043181620002db565b6200043c84620002f0565b810160208510156200044c578190505b620004646200045b85620002f0565b830182620003f5565b50505b505050565b600082821c905092915050565b60006200048c600019846008026200046c565b1980831691505092915050565b6000620004a7838362000479565b9150826002028217905092915050565b620004c2826200023d565b67ffffffffffffffff811115620004de57620004dd62000248565b5b620004ea8254620002a6565b620004f78282856200041c565b600060209050601f8311600181146200052f57600084156200051a578287015190505b62000526858262000499565b86555062000596565b601f1984166200053f86620002db565b60005b82811015620005695784890151825560018201915060208501945060208101905062000542565b8683101562000589578489015162000585601f89168262000479565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005e7601f836200059e565b9150620005f482620005af565b602082019050919050565b600060208201905081810360008301526200061a81620005d8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200065d8262000363565b91506200066a8362000363565b925082820190508082111562000685576200068462000621565b5b92915050565b620006968162000363565b82525050565b6000602082019050620006b360008301846200068b565b92915050565b61187580620006c96000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d681461024d578063a457c2d714610269578063a9059cbb14610299578063dd62ed3e146102c9576100ea565b806370a08231146101f557806395d89b41146102255780639975038c14610243576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806342966c68146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102f9565b6040516101049190610f29565b60405180910390f35b61012760048036038101906101229190610fe4565b61038b565b604051610134919061103f565b60405180910390f35b6101456103ae565b6040516101529190611069565b60405180910390f35b61017560048036038101906101709190611084565b6103b8565b604051610182919061103f565b60405180910390f35b6101936103e7565b6040516101a091906110f3565b60405180910390f35b6101c360048036038101906101be9190610fe4565b6103f0565b6040516101d0919061103f565b60405180910390f35b6101f360048036038101906101ee919061110e565b610427565b005b61020f600480360381019061020a919061113b565b610434565b60405161021c9190611069565b60405180910390f35b61022d61047c565b60405161023a9190610f29565b60405180910390f35b61024b61050e565b005b6102676004803603810190610262919061110e565b61056b565b005b610283600480360381019061027e9190610fe4565b610578565b604051610290919061103f565b60405180910390f35b6102b360048036038101906102ae9190610fe4565b6105ef565b6040516102c0919061103f565b60405180910390f35b6102e360048036038101906102de9190611168565b610612565b6040516102f09190611069565b60405180910390f35b606060038054610308906111d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610334906111d7565b80156103815780601f1061035657610100808354040283529160200191610381565b820191906000526020600020905b81548152906001019060200180831161036457829003601f168201915b5050505050905090565b600080610396610699565b90506103a38185856106a1565b600191505092915050565b6000600254905090565b6000806103c3610699565b90506103d085828561086a565b6103db8585856108f6565b60019150509392505050565b60006012905090565b6000806103fb610699565b905061041c81858561040d8589610612565b6104179190611237565b6106a1565b600191505092915050565b6104313382610b6c565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461048b906111d7565b80601f01602080910402602001604051908101604052809291908181526020018280546104b7906111d7565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061051933610434565b90506000811161055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906112b7565b60405180910390fd5b6105683382610b6c565b50565b6105753382610d39565b50565b600080610583610699565b905060006105918286610612565b9050838110156105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90611349565b60405180910390fd5b6105e382868684036106a1565b60019250505092915050565b6000806105fa610699565b90506106078185856108f6565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906113db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107769061146d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161085d9190611069565b60405180910390a3505050565b60006108768484610612565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108f057818110156108e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d9906114d9565b60405180910390fd5b6108ef84848484036106a1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c9061156b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb906115fd565b60405180910390fd5b6109df838383610e8f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c9061168f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b539190611069565b60405180910390a3610b66848484610e94565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290611721565b60405180910390fd5b610be782600083610e8f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c64906117b3565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d209190611069565b60405180910390a3610d3483600084610e94565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f9061181f565b60405180910390fd5b610db460008383610e8f565b8060026000828254610dc69190611237565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e779190611069565b60405180910390a3610e8b60008383610e94565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ed3578082015181840152602081019050610eb8565b60008484015250505050565b6000601f19601f8301169050919050565b6000610efb82610e99565b610f058185610ea4565b9350610f15818560208601610eb5565b610f1e81610edf565b840191505092915050565b60006020820190508181036000830152610f438184610ef0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f7b82610f50565b9050919050565b610f8b81610f70565b8114610f9657600080fd5b50565b600081359050610fa881610f82565b92915050565b6000819050919050565b610fc181610fae565b8114610fcc57600080fd5b50565b600081359050610fde81610fb8565b92915050565b60008060408385031215610ffb57610ffa610f4b565b5b600061100985828601610f99565b925050602061101a85828601610fcf565b9150509250929050565b60008115159050919050565b61103981611024565b82525050565b60006020820190506110546000830184611030565b92915050565b61106381610fae565b82525050565b600060208201905061107e600083018461105a565b92915050565b60008060006060848603121561109d5761109c610f4b565b5b60006110ab86828701610f99565b93505060206110bc86828701610f99565b92505060406110cd86828701610fcf565b9150509250925092565b600060ff82169050919050565b6110ed816110d7565b82525050565b600060208201905061110860008301846110e4565b92915050565b60006020828403121561112457611123610f4b565b5b600061113284828501610fcf565b91505092915050565b60006020828403121561115157611150610f4b565b5b600061115f84828501610f99565b91505092915050565b6000806040838503121561117f5761117e610f4b565b5b600061118d85828601610f99565b925050602061119e85828601610f99565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ef57607f821691505b602082108103611202576112016111a8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061124282610fae565b915061124d83610fae565b925082820190508082111561126557611264611208565b5b92915050565b7f4d6f636b555344433a204e6f7468696e6720746f206275726e00000000000000600082015250565b60006112a1601983610ea4565b91506112ac8261126b565b602082019050919050565b600060208201905081810360008301526112d081611294565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611333602583610ea4565b915061133e826112d7565b604082019050919050565b6000602082019050818103600083015261136281611326565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113c5602483610ea4565b91506113d082611369565b604082019050919050565b600060208201905081810360008301526113f4816113b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611457602283610ea4565b9150611462826113fb565b604082019050919050565b600060208201905081810360008301526114868161144a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006114c3601d83610ea4565b91506114ce8261148d565b602082019050919050565b600060208201905081810360008301526114f2816114b6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611555602583610ea4565b9150611560826114f9565b604082019050919050565b6000602082019050818103600083015261158481611548565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115e7602383610ea4565b91506115f28261158b565b604082019050919050565b60006020820190508181036000830152611616816115da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611679602683610ea4565b91506116848261161d565b604082019050919050565b600060208201905081810360008301526116a88161166c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061170b602183610ea4565b9150611716826116af565b604082019050919050565b6000602082019050818103600083015261173a816116fe565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061179d602283610ea4565b91506117a882611741565b604082019050919050565b600060208201905081810360008301526117cc81611790565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611809601f83610ea4565b9150611814826117d3565b602082019050919050565b60006020820190508181036000830152611838816117fc565b905091905056fea2646970667358221220db80c17952bbfdfde6337cbbe3fe3f03b3b28028fd799fb2393ebc5ad90036ce64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d681461024d578063a457c2d714610269578063a9059cbb14610299578063dd62ed3e146102c9576100ea565b806370a08231146101f557806395d89b41146102255780639975038c14610243576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806342966c68146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102f9565b6040516101049190610f29565b60405180910390f35b61012760048036038101906101229190610fe4565b61038b565b604051610134919061103f565b60405180910390f35b6101456103ae565b6040516101529190611069565b60405180910390f35b61017560048036038101906101709190611084565b6103b8565b604051610182919061103f565b60405180910390f35b6101936103e7565b6040516101a091906110f3565b60405180910390f35b6101c360048036038101906101be9190610fe4565b6103f0565b6040516101d0919061103f565b60405180910390f35b6101f360048036038101906101ee919061110e565b610427565b005b61020f600480360381019061020a919061113b565b610434565b60405161021c9190611069565b60405180910390f35b61022d61047c565b60405161023a9190610f29565b60405180910390f35b61024b61050e565b005b6102676004803603810190610262919061110e565b61056b565b005b610283600480360381019061027e9190610fe4565b610578565b604051610290919061103f565b60405180910390f35b6102b360048036038101906102ae9190610fe4565b6105ef565b6040516102c0919061103f565b60405180910390f35b6102e360048036038101906102de9190611168565b610612565b6040516102f09190611069565b60405180910390f35b606060038054610308906111d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610334906111d7565b80156103815780601f1061035657610100808354040283529160200191610381565b820191906000526020600020905b81548152906001019060200180831161036457829003601f168201915b5050505050905090565b600080610396610699565b90506103a38185856106a1565b600191505092915050565b6000600254905090565b6000806103c3610699565b90506103d085828561086a565b6103db8585856108f6565b60019150509392505050565b60006012905090565b6000806103fb610699565b905061041c81858561040d8589610612565b6104179190611237565b6106a1565b600191505092915050565b6104313382610b6c565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461048b906111d7565b80601f01602080910402602001604051908101604052809291908181526020018280546104b7906111d7565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061051933610434565b90506000811161055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906112b7565b60405180910390fd5b6105683382610b6c565b50565b6105753382610d39565b50565b600080610583610699565b905060006105918286610612565b9050838110156105d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cd90611349565b60405180910390fd5b6105e382868684036106a1565b60019250505092915050565b6000806105fa610699565b90506106078185856108f6565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906113db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107769061146d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161085d9190611069565b60405180910390a3505050565b60006108768484610612565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108f057818110156108e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d9906114d9565b60405180910390fd5b6108ef84848484036106a1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c9061156b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb906115fd565b60405180910390fd5b6109df838383610e8f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c9061168f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b539190611069565b60405180910390a3610b66848484610e94565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290611721565b60405180910390fd5b610be782600083610e8f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c64906117b3565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d209190611069565b60405180910390a3610d3483600084610e94565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f9061181f565b60405180910390fd5b610db460008383610e8f565b8060026000828254610dc69190611237565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e779190611069565b60405180910390a3610e8b60008383610e94565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ed3578082015181840152602081019050610eb8565b60008484015250505050565b6000601f19601f8301169050919050565b6000610efb82610e99565b610f058185610ea4565b9350610f15818560208601610eb5565b610f1e81610edf565b840191505092915050565b60006020820190508181036000830152610f438184610ef0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f7b82610f50565b9050919050565b610f8b81610f70565b8114610f9657600080fd5b50565b600081359050610fa881610f82565b92915050565b6000819050919050565b610fc181610fae565b8114610fcc57600080fd5b50565b600081359050610fde81610fb8565b92915050565b60008060408385031215610ffb57610ffa610f4b565b5b600061100985828601610f99565b925050602061101a85828601610fcf565b9150509250929050565b60008115159050919050565b61103981611024565b82525050565b60006020820190506110546000830184611030565b92915050565b61106381610fae565b82525050565b600060208201905061107e600083018461105a565b92915050565b60008060006060848603121561109d5761109c610f4b565b5b60006110ab86828701610f99565b93505060206110bc86828701610f99565b92505060406110cd86828701610fcf565b9150509250925092565b600060ff82169050919050565b6110ed816110d7565b82525050565b600060208201905061110860008301846110e4565b92915050565b60006020828403121561112457611123610f4b565b5b600061113284828501610fcf565b91505092915050565b60006020828403121561115157611150610f4b565b5b600061115f84828501610f99565b91505092915050565b6000806040838503121561117f5761117e610f4b565b5b600061118d85828601610f99565b925050602061119e85828601610f99565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111ef57607f821691505b602082108103611202576112016111a8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061124282610fae565b915061124d83610fae565b925082820190508082111561126557611264611208565b5b92915050565b7f4d6f636b555344433a204e6f7468696e6720746f206275726e00000000000000600082015250565b60006112a1601983610ea4565b91506112ac8261126b565b602082019050919050565b600060208201905081810360008301526112d081611294565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611333602583610ea4565b915061133e826112d7565b604082019050919050565b6000602082019050818103600083015261136281611326565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006113c5602483610ea4565b91506113d082611369565b604082019050919050565b600060208201905081810360008301526113f4816113b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611457602283610ea4565b9150611462826113fb565b604082019050919050565b600060208201905081810360008301526114868161144a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006114c3601d83610ea4565b91506114ce8261148d565b602082019050919050565b600060208201905081810360008301526114f2816114b6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611555602583610ea4565b9150611560826114f9565b604082019050919050565b6000602082019050818103600083015261158481611548565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006115e7602383610ea4565b91506115f28261158b565b604082019050919050565b60006020820190508181036000830152611616816115da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611679602683610ea4565b91506116848261161d565b604082019050919050565b600060208201905081810360008301526116a88161166c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061170b602183610ea4565b9150611716826116af565b604082019050919050565b6000602082019050818103600083015261173a816116fe565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061179d602283610ea4565b91506117a882611741565b604082019050919050565b600060208201905081810360008301526117cc81611790565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611809601f83610ea4565b9150611814826117d3565b602082019050919050565b60006020820190508181036000830152611838816117fc565b905091905056fea2646970667358221220db80c17952bbfdfde6337cbbe3fe3f03b3b28028fd799fb2393ebc5ad90036ce64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/Paycrest.sol b/contracts/Paycrest.sol index c5a7021..ecc66f2 100644 --- a/contracts/Paycrest.sol +++ b/contracts/Paycrest.sol @@ -10,7 +10,6 @@ contract Paycrest is IPaycrest, PaycrestSettingManager { struct fee { uint256 protocolFee; uint256 liquidityProviderAmount; - uint256 validatorsReward; } mapping(bytes32 => Order) private order; mapping(address => uint256) private _nonce; @@ -24,7 +23,6 @@ contract Paycrest is IPaycrest, PaycrestSettingManager { _isTokenSupported[_usdc] = true; MAX_BPS = 100_000; protocolFeePercent = 5000; // 5% - validatorFeePercent = 500; // 0.5% __Ownable_init(); } @@ -93,7 +91,6 @@ contract Paycrest is IPaycrest, PaycrestSettingManager { bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, - address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner @@ -122,27 +119,12 @@ contract Paycrest is IPaycrest, PaycrestSettingManager { } // // transfer to liquidity provider IERC20(token).transfer(_liquidityProvider, _feeParams.liquidityProviderAmount); - // // transfer to validators - rewardValidators(_validators, token, _feeParams.validatorsReward); // emit event emit Settled(_splitOrderId, _orderId, _label, _liquidityProvider, _settlePercent); return (_orderId, token); } - function rewardValidators(address[] calldata _validators, address token, uint256 _validatorsRewards) internal { - uint256 length = _validators.length; - uint256 _validatorReward = _validatorsRewards / length; - for(uint256 i = 0; i < length; ) { - IERC20(token).transfer(_validators[i], _validatorReward); - // emit event - emit RewardValidator(_validators[i], _validatorReward); - unchecked { - i++; - } - } - } - function transferSenderFee(bytes32 _orderId) internal { address recipient = order[_orderId].senderFeeRecipient; uint256 _fee = order[_orderId].senderFee; @@ -177,15 +159,10 @@ contract Paycrest is IPaycrest, PaycrestSettingManager { _feeParams.protocolFee = (_feeParams.liquidityProviderAmount * protocolFeePercent) / MAX_BPS; // substract total fees from the new amount after getting the scheduled amount _feeParams.liquidityProviderAmount = (_feeParams.liquidityProviderAmount - _feeParams.protocolFee); - // get primary validators fees primaryValidatorsReward - _feeParams.validatorsReward = (_feeParams.protocolFee * validatorFeePercent) / MAX_BPS; // if (_isPartner) protocol fee should be 0, and the whole protocol fee should be added to liquidity provider - uint256 protocolFeeAmount = (_feeParams.protocolFee - _feeParams.validatorsReward); if (_isPartner) { - _feeParams.liquidityProviderAmount += protocolFeeAmount; + _feeParams.liquidityProviderAmount += _feeParams.protocolFee; _feeParams.protocolFee = 0; - } else { - _feeParams.protocolFee = protocolFeeAmount; } } @@ -224,11 +201,10 @@ contract Paycrest is IPaycrest, PaycrestSettingManager { /** @dev See {getFeeDetails-IPaycrest}. */ function getFeeDetails() external view returns( - uint128, - uint128, + uint64, uint256 ) { - return(protocolFeePercent, validatorFeePercent, MAX_BPS); + return(protocolFeePercent, MAX_BPS); } /** @dev See {getAggregatorAddress-IPaycrest}. */ diff --git a/contracts/PaycrestSettingManager.sol b/contracts/PaycrestSettingManager.sol index d2ebbe6..f6a2aa4 100644 --- a/contracts/PaycrestSettingManager.sol +++ b/contracts/PaycrestSettingManager.sol @@ -12,8 +12,7 @@ contract PaycrestSettingManager is OwnableUpgradeable { bytes32 currency; } uint256 internal MAX_BPS; - uint128 internal protocolFeePercent; // 5% - uint128 internal validatorFeePercent; // 0.5% + uint64 internal protocolFeePercent; // 5% address internal feeRecipient; address internal _aggregatorAddress; bytes internal _aggregator; @@ -28,10 +27,9 @@ contract PaycrestSettingManager is OwnableUpgradeable { mapping(bytes32 => InstitutionByCode) internal supportedInstitutionsByCode; event SettingManagerBool(bytes32 what, address value, bool status); - event PaycrestFees(uint128 protocolFee, uint128 validatorFeePercent); + event PaycrestFees(uint64 protocolFee); event SetAggregator(bytes aggregator); event SetFeeRecipient(address feeRecipient); - /* ################################################################## OWNER FUNCTIONS @@ -57,10 +55,9 @@ contract PaycrestSettingManager is OwnableUpgradeable { } } - function updateProtocolFees(uint128 _protocolFeePercent, uint128 _validatorFeePercent) external onlyOwner { + function updateProtocolFees(uint64 _protocolFeePercent) external onlyOwner { protocolFeePercent = _protocolFeePercent; - validatorFeePercent = _validatorFeePercent; - emit PaycrestFees(_protocolFeePercent, _validatorFeePercent); + emit PaycrestFees(_protocolFeePercent); } function updateProtocolAddresses(bytes32 what, address value) external onlyOwner { diff --git a/contracts/interface/IPaycrest.sol b/contracts/interface/IPaycrest.sol index 953564c..21d25ec 100644 --- a/contracts/interface/IPaycrest.sol +++ b/contracts/interface/IPaycrest.sol @@ -87,12 +87,11 @@ interface IPaycrest { /// `_refundable` refundable address must not be zero address /// @param _orderId transaction Id. /// @param _label reference of the sender. - /// @param _validators arrays of secondary validators. /// @param _liquidityProvider address of the liquidity provider. /// @param _settlePercent rate at which the transaction is settled. /// @param _isPartner is the liquidity provider a partner. /// @return return the status of transaction {bool} - function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address[] calldata _validators, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address); + function settle(bytes32 _splitOrderId, bytes32 _orderId, bytes32 _label, address _liquidityProvider, uint64 _settlePercent, bool _isPartner) external returns(bytes32, address); /// @notice refund to the specified refundable address. /// Requirements: @@ -116,11 +115,9 @@ interface IPaycrest { /// @notice get every rewards and address on Paycrest. /// @return protocolReward amount that will be taken in percentage on all trade. - /// @return validatorFeePercent amount that will be given to primary validator in percentage from `protocolReward` /// @return max_bps maximum amount in bps "100% == 100_000". function getFeeDetails() external view returns( - uint128 protocolReward, - uint128 validatorFeePercent, + uint64 protocolReward, uint256 max_bps ); diff --git a/contracts/mocks/MockUSDC.sol b/contracts/mocks/MockUSDC.sol index 643a49d..f0a5a8b 100644 --- a/contracts/mocks/MockUSDC.sol +++ b/contracts/mocks/MockUSDC.sol @@ -9,10 +9,6 @@ contract MockUSDC is ERC20 { _mint(msg.sender, 1_000_000E18); } - function decimals() public view virtual override returns (uint8) { - return 6; - } - function mint(uint256 _amount) external { _mint(msg.sender, _amount); } diff --git a/hardhat.config.js b/hardhat.config.js index 95ead0c..fb29a8f 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -26,19 +26,19 @@ module.exports = { }, mumbai: { url: "https://polygon-mumbai.infura.io/v3/4458cf4d1689497b9a38b1d6bbf05e78", //process.env.POLYGON_MUMBAI_RPC_URL, //"https://rpc-mumbai.maticvigil.com/", - accounts: DEPLOYER_PRIVATE_KEY, + accounts: [DEPLOYER_PRIVATE_KEY], chainId: 80001, saveDeployments: true, }, bscTestnet: { url: "https://data-seed-prebsc-1-s3.binance.org:8545/", - accounts: DEPLOYER_PRIVATE_KEY, + accounts: [DEPLOYER_PRIVATE_KEY], chainId: 97, saveDeployments: true, }, baseGoerli: { url: "https://goerli.base.org", - accounts: DEPLOYER_PRIVATE_KEY, + accounts: [DEPLOYER_PRIVATE_KEY], chainId: 84531, gasPrice: 1000000000, saveDeployments: true, diff --git a/scripts/paycrest.js b/scripts/paycrest.js index 2a29c4c..fe5731a 100644 --- a/scripts/paycrest.js +++ b/scripts/paycrest.js @@ -8,17 +8,17 @@ const crypto = globalThis.crypto; async function main() { const { deployer } = await getNamedAccounts(); - const _mockUSDC = "0xe6123B5A202868cFe59d829b2E1F9A320B8E0f4A"; - // const _paycrest = "0x566dEA5BB1888C33bD3F1274168E0Fa91b9d51C8"; - // const _paycrestValidator = "0x5151739085Ad69b21b374A03A7c4AE6450A43B52"; + const _mockUSDC = "0x5219273AD683d068b35ccD59F81A20f7bE233229"; + const baseTestUSDC = "0x8f5f9Be9193B2421143f1904FB543F4DD0c47477"; + const basePaycrest = "0xd7BD20A48430F6207d87D75E037820F63C174b96"; + const _paycrest = "0x3fE1246CbC4eDf2A4f51f7CF442277bA863823e1"; // const DERC20_Token = "0xfe4F5145f6e09952a5ba9e956ED0C25e3Fa4c7F1"; - // // const payCrestValidator = "0x69Afc555868Db29C6514Aea195210DeEeB72B8b2"; - const mockUSDC = await ethers.getContractAt("MockUSDC", _mockUSDC); + // const mockUSDC = await ethers.getContractAt("MockUSDC", _mockUSDC); // deploy MockUSDC contract - // const MockUSDC = await ethers.getContractFactory("MockUSDC"); - // const mockUSDC = await MockUSDC.deploy(); + const MockUSDC = await ethers.getContractFactory("MockUSDC"); + const mockUSDC = await MockUSDC.deploy(); console.log("mockUSDC deployed to:", mockUSDC.address); console.log("✅ Deployed MockUSDC."); @@ -34,29 +34,12 @@ async function main() { console.log("paycrest deployed to:", await paycrest.address); console.log("✅ Deployed Paycrest."); - const PaycrestValidator = await ethers.getContractFactory( - "PaycrestValidator" - ); - - // const paycrestValidator = await ethers.getContractAt( - // "PaycrestValidator", - // _paycrestValidator - // ); - const paycrestValidator = await upgrades.deployProxy(PaycrestValidator, [ - paycrest.address, - ]); - // const paycrest = await ethers.getContractAt( // "Paycrest", // "0x8759Aa5d49CcBC659F7c62C6458EbEAD2E188cC9" // ); - console.log("paycrestValidator deployed to:", paycrestValidator.address); - console.log("✅ Deployed paycrestValidator."); - const protocolFeePercent = BigNumber.from(10_000); - const validatorFeePercent = BigNumber.from(5_000); // 5% - const usdcMinimumStakeAmount = ethers.utils.parseUnits("1", 12); // not usdc has 6 decimals const currency = ethers.utils.formatBytes32String("NGN"); @@ -97,14 +80,13 @@ async function main() { "======================================================= SETTING MANAGER FOR PROTOCOL FEES RECIPIENTS =======================================================" ); - await paycrest.updateProtocolFees(protocolFeePercent, validatorFeePercent); + await paycrest.updateProtocolFees(protocolFeePercent); console.log( "======================================================= SETTING MANAGER FOR PROTOCOL ADDRESSES =======================================================" ); const fee = ethers.utils.formatBytes32String("fee"); const aggregatorInit = ethers.utils.formatBytes32String("aggregator"); - const stakeContract = ethers.utils.formatBytes32String("stake"); await paycrest.updateProtocolAddresses(fee, deployer); await paycrest.updateProtocolAddresses(aggregatorInit, deployer); @@ -113,13 +95,6 @@ async function main() { "======================================================= SETTING MANAGER FOR MINIMUM AND MAXIMUM ON PAYCREST VALIDATOR=======================================================" ); - const whitelist = ethers.utils.formatBytes32String("whitelist"); - - await paycrestValidator.setMinimumAmountForTokens( - DERC20_Contract_Instance.address, - usdcMinimumStakeAmount - ); - // deployer approving paycrest contract to spend DERC20_Contract_Instance await mockUSDC.approve(paycrest.address, deployerBalance); @@ -147,7 +122,7 @@ async function main() { }); await paycrest.updateProtocolAggregator( - "04a968c0e48766755767c887d84bed248f3b671e2400fb08402a03b231d11960d60a3078cbe0c21d5c7c6d0ba8d9cabfe12f1d3230af048b58fea6831719fe1b17" + "0x04a968c0e48766755767c887d84bed248f3b671e2400fb08402a03b231d11960d60a3078cbe0c21d5c7c6d0ba8d9cabfe12f1d3230af048b58fea6831719fe1b17" ); const messageHash = diff --git a/test/Paycrest/paycrest.createorder.test.js b/test/Paycrest/paycrest.createorder.test.js index 9da2279..4e4c386 100644 --- a/test/Paycrest/paycrest.createorder.test.js +++ b/test/Paycrest/paycrest.createorder.test.js @@ -2,9 +2,7 @@ const { ethers } = require("hardhat"); const { BigNumber } = require("@ethersproject/bignumber"); const CryptoJS = require("crypto-js"); -const { - paycrestValidatorFixture, -} = require("../fixtures/paycrestValidator.js"); +const { paycrestFixture } = require("../fixtures/paycrest.js"); const { deployContract, @@ -32,13 +30,11 @@ describe("Paycrest create order", function () { ...this.accounts ] = await ethers.getSigners(); - ({ paycrestValidator, paycrest, mockUSDC } = - await paycrestValidatorFixture()); + ({ paycrest, mockUSDC } = await paycrestFixture()); this.mockUSDT = await deployContract("MockUSDC"); this.mockUSDC = mockUSDC; this.paycrest = paycrest; - this.paycrestValidator = paycrestValidator; this.mintAmount = ethers.utils.parseEther("1000100"); this.senderFee = ethers.utils.parseEther("100"); diff --git a/test/Paycrest/paycrest.ownable.test.js b/test/Paycrest/paycrest.ownable.test.js index 40525f8..638ffae 100644 --- a/test/Paycrest/paycrest.ownable.test.js +++ b/test/Paycrest/paycrest.ownable.test.js @@ -1,15 +1,12 @@ const { ethers } = require("hardhat"); const { BigNumber } = require("@ethersproject/bignumber"); -const { - paycrestValidatorFixture, -} = require("../fixtures/paycrestValidator.js"); +const { paycrestFixture } = require("../fixtures/paycrest.js"); require("dotenv").config(); const { Errors, Events } = require("../utils/utils.manager.js"); const { expect } = require("chai"); describe("Ownable settings", function () { - let paycrestValidator; let paycrest; let mockUSDC; let admin; @@ -22,8 +19,7 @@ describe("Ownable settings", function () { let Mark; async function setupAndResetFork() { - ({ paycrestValidator, paycrest, mockUSDC } = - await paycrestValidatorFixture()); + ({ paycrest, mockUSDC } = await paycrestFixture()); [admin, keeper, alice, hacker, sender, Mark, feeRecipient, aggregator] = await ethers.getSigners(); @@ -205,33 +201,29 @@ describe("Ownable settings", function () { await setupAndResetFork(); // charge 10% as protocol fee const protocolFeePercent = BigNumber.from(10_000); - const primaryValidatorsFees = BigNumber.from(5_000); // 5% - const secondaryValidatorsFees = BigNumber.from(3_000); // 3% await expect( paycrest .connect(admin) - .updateProtocolFees(protocolFeePercent, primaryValidatorsFees) + .updateProtocolFees(protocolFeePercent) ) .to.emit(paycrest, Events.Paycrest.PaycrestFees) - .withArgs(protocolFeePercent, primaryValidatorsFees); + .withArgs(protocolFeePercent); - [this.protocolFeePecent, this.primaryvalidatorPercent, this.MAXBPS] = + [this.protocolFeePecent, this.MAXBPS] = await paycrest.getFeeDetails(); expect(this.protocolFeePecent).to.eq(protocolFeePercent); - expect(this.primaryvalidatorPercent).to.eq(primaryValidatorsFees); }); it("should not be able to set protocol fees by non-owner", async function () { await setupAndResetFork(); // charge 10% as protocol fee const protocolFeePercent = BigNumber.from(10_000); - const primaryValidatorsFees = BigNumber.from(5_000); // 5% await expect( paycrest .connect(hacker) - .updateProtocolFees(protocolFeePercent, primaryValidatorsFees) + .updateProtocolFees(protocolFeePercent) ).to.be.revertedWith(Errors.Ownable.onlyOwner); }); diff --git a/test/Paycrest/paycrest.settleOrder.test.js b/test/Paycrest/paycrest.settleOrder.test.js index 8a5ee2e..e36ba5a 100644 --- a/test/Paycrest/paycrest.settleOrder.test.js +++ b/test/Paycrest/paycrest.settleOrder.test.js @@ -2,9 +2,7 @@ const { ethers } = require("hardhat"); const { BigNumber } = require("@ethersproject/bignumber"); const CryptoJS = require("crypto-js"); -const { - paycrestValidatorFixture, -} = require("../fixtures/paycrestValidator.js"); +const { paycrestFixture } = require("../fixtures/paycrest.js"); const label = ethers.utils.formatBytes32String("label"); @@ -35,11 +33,7 @@ describe("Paycrest create order", function () { ...this.accounts ] = await ethers.getSigners(); - ({ - paycrestValidator, - paycrest, - mockUSDC - } = await paycrestValidatorFixture()); + ({ paycrest, mockUSDC } = await paycrestFixture()); // this.mockUSDC = usdc; // this.mockUSDT = usdt; @@ -49,9 +43,8 @@ describe("Paycrest create order", function () { this.stakeAmount = ethers.utils.parseEther("1000000"); this.liquidityProviderAmount = ethers.utils.parseEther("950000"); - this.protocolFeeAmount = ethers.utils.parseEther("49750"); + this.protocolFeeAmount = ethers.utils.parseEther("50000"); this.rewards = ethers.utils.parseEther("250"); - this.primaryValidatorReward = ethers.utils.parseEther("250"); this.secondaryValidatorReward = ethers.utils.parseEther("250"); await mockUSDC.connect(this.alice).mint(this.mintAmount); @@ -81,16 +74,6 @@ describe("Paycrest create order", function () { expect(await mockUSDC.balanceOf(this.liquidityProvider.address)).to.eq( ZERO_AMOUNT ); - // this.paycrest = paycrest; - // console.log("before init"); - // this.paycrestValidator = paycrestValidator; - - expect( - await paycrestValidator.getValidatorInfo( - this.bob.address, - mockUSDC.address - ) - ).to.eq(ZERO_AMOUNT); const fee = ethers.utils.formatBytes32String("fee"); const aggregator = ethers.utils.formatBytes32String("aggregator"); @@ -107,12 +90,6 @@ describe("Paycrest create order", function () { await mockUSDC.allowance(this.alice.address, paycrest.address) ).to.equal(ZERO_AMOUNT); - expect( - await mockUSDC.allowance( - this.bob.address, - paycrestValidator.address - ) - ).to.equal(ZERO_AMOUNT); const whitelist = ethers.utils.formatBytes32String("whitelist"); @@ -136,17 +113,6 @@ describe("Paycrest create order", function () { await mockUSDC.allowance(this.sender.address, paycrest.address) ).to.equal(this.mintAmount); - await mockUSDC - .connect(this.bob) - .approve(paycrestValidator.address, this.stakeAmount); - - expect( - await mockUSDC.allowance( - this.bob.address, - paycrestValidator.address - ) - ).to.equal(this.stakeAmount); - const rate = 750; const institutionCode = ret.firstBank.code; const data = [ @@ -228,15 +194,6 @@ describe("Paycrest create order", function () { ).to.equal(ZERO_AMOUNT); // =================== Create Order =================== - await paycrestValidator - .connect(this.bob) - .stake(mockUSDC.address, this.stakeAmount); - expect( - await mockUSDC.allowance( - this.bob.address, - paycrestValidator.address - ) - ).to.equal(ZERO_AMOUNT); expect( await paycrest @@ -245,7 +202,6 @@ describe("Paycrest create order", function () { orderId, orderId, label, - [this.bob.address], this.liquidityProvider.address, MAX_BPS, false @@ -253,9 +209,8 @@ describe("Paycrest create order", function () { ) .to.emit(paycrest, Events.Paycrest.Settled) .withArgs(orderId, orderId, label, this.liquidityProvider.address, MAX_BPS); - expect(await mockUSDC.balanceOf(this.bob.address)).to.eq( - this.rewards - ); + + expect(await mockUSDC.balanceOf(this.bob.address)).to.eq(this.stakeAmount); expect(await mockUSDC.balanceOf(this.liquidityProvider.address)).to.eq( this.liquidityProviderAmount @@ -266,23 +221,6 @@ describe("Paycrest create order", function () { expect(await mockUSDC.balanceOf(paycrest.address)).to.eq( ZERO_AMOUNT ); - expect(await mockUSDC.balanceOf(paycrestValidator.address)).to.eq( - this.stakeAmount - ); - - expect( - await paycrestValidator.getValidatorInfo( - this.bob.address, - mockUSDC.address - ) - ).to.eq(this.stakeAmount); - - expect( - await paycrestValidator.getValidatorInfo( - this.primaryValidator.address, - mockUSDC.address - ) - ).to.eq(0); }); it("Should be able to create order by the sender and settled by liquidity aggregator when isPartner is true", async function () { @@ -296,14 +234,6 @@ describe("Paycrest create order", function () { await mockUSDC.allowance(this.sender.address, paycrest.address) ).to.equal(this.mintAmount); - await mockUSDC - .connect(this.bob) - .approve(paycrestValidator.address, this.stakeAmount); - - expect( - await mockUSDC.allowance(this.bob.address, paycrestValidator.address) - ).to.equal(this.stakeAmount); - const rate = 750; const institutionCode = ret.firstBank.code; const data = [ @@ -383,12 +313,6 @@ describe("Paycrest create order", function () { ).to.equal(ZERO_AMOUNT); // =================== Create Order =================== - await paycrestValidator - .connect(this.bob) - .stake(mockUSDC.address, this.stakeAmount); - expect( - await mockUSDC.allowance(this.bob.address, paycrestValidator.address) - ).to.equal(ZERO_AMOUNT); expect( await paycrest @@ -397,7 +321,6 @@ describe("Paycrest create order", function () { orderId, orderId, label, - [this.bob.address], this.liquidityProvider.address, MAX_BPS, true @@ -411,7 +334,7 @@ describe("Paycrest create order", function () { this.liquidityProvider.address, MAX_BPS ); - expect(await mockUSDC.balanceOf(this.bob.address)).to.eq(this.rewards); + expect(await mockUSDC.balanceOf(this.bob.address)).to.eq(this.stakeAmount); // 999,750 000000000000000000 expect(await mockUSDC.balanceOf(this.liquidityProvider.address)).to.eq( @@ -419,23 +342,7 @@ describe("Paycrest create order", function () { ); expect(await mockUSDC.balanceOf(this.feeRecipient.address)).to.eq(0); expect(await mockUSDC.balanceOf(paycrest.address)).to.eq(ZERO_AMOUNT); - expect(await mockUSDC.balanceOf(paycrestValidator.address)).to.eq( - this.stakeAmount - ); - expect( - await paycrestValidator.getValidatorInfo( - this.bob.address, - mockUSDC.address - ) - ).to.eq(this.stakeAmount); - - expect( - await paycrestValidator.getValidatorInfo( - this.primaryValidator.address, - mockUSDC.address - ) - ).to.eq(0); }); it("Should revert when trying to settle an already fulfilled order", async function () { @@ -449,14 +356,6 @@ describe("Paycrest create order", function () { await mockUSDC.allowance(this.sender.address, paycrest.address) ).to.equal(this.mintAmount); - await mockUSDC - .connect(this.bob) - .approve(paycrestValidator.address, this.stakeAmount); - - expect( - await mockUSDC.allowance(this.bob.address, paycrestValidator.address) - ).to.equal(this.stakeAmount); - const rate = 750; const institutionCode = ret.firstBank.code; const data = [ @@ -536,13 +435,6 @@ describe("Paycrest create order", function () { ).to.equal(ZERO_AMOUNT); // =================== Create Order =================== - await paycrestValidator - .connect(this.bob) - .stake(mockUSDC.address, this.stakeAmount); - expect( - await mockUSDC.allowance(this.bob.address, paycrestValidator.address) - ).to.equal(ZERO_AMOUNT); - expect( await paycrest .connect(this.aggregator) @@ -550,7 +442,6 @@ describe("Paycrest create order", function () { orderId, orderId, label, - [this.bob.address], this.liquidityProvider.address, MAX_BPS, false @@ -559,7 +450,7 @@ describe("Paycrest create order", function () { .to.emit(paycrest, Events.Paycrest.Settled) .withArgs(orderId, orderId, label, this.liquidityProvider.address, MAX_BPS); - expect(await mockUSDC.balanceOf(this.bob.address)).to.eq(this.rewards); + expect(await mockUSDC.balanceOf(this.bob.address)).to.eq(this.stakeAmount); expect(await mockUSDC.balanceOf(this.liquidityProvider.address)).to.eq( this.liquidityProviderAmount @@ -567,24 +458,8 @@ describe("Paycrest create order", function () { expect(await mockUSDC.balanceOf(this.feeRecipient.address)).to.eq( this.protocolFeeAmount ); - expect(await mockUSDC.balanceOf(paycrest.address)).to.eq(ZERO_AMOUNT); - expect(await mockUSDC.balanceOf(paycrestValidator.address)).to.eq( - this.stakeAmount - ); - - expect( - await paycrestValidator.getValidatorInfo( - this.bob.address, - mockUSDC.address - ) - ).to.eq(this.stakeAmount); + expect(await mockUSDC.balanceOf(paycrest.address)).to.eq(ZERO_AMOUNT); - expect( - await paycrestValidator.getValidatorInfo( - this.primaryValidator.address, - mockUSDC.address - ) - ).to.eq(0); }); }); diff --git a/test/fixtures/paycrestValidator.js b/test/fixtures/paycrestValidator.js deleted file mode 100644 index 074c943..0000000 --- a/test/fixtures/paycrestValidator.js +++ /dev/null @@ -1,50 +0,0 @@ -const { ethers, upgrades } = require("hardhat"); -const hardhat = require("hardhat"); -const { NETWORKS } = require("../../scripts/config.js"); -const { BigNumber } = require("@ethersproject/bignumber"); -const { paycrestFixture } = require("./paycrest.js"); -const chainId = 42161; -const { USDC_ADDRESS, USDT_ADDRESS, IMPERSONATE_ACCOUNT } = NETWORKS[chainId]; - -async function paycrestValidator() { - const { paycrest, mockUSDC } = await paycrestFixture(); - // const [admin, feeRecipient, aggregator, ...users] = await hre.ethers.getSigners(); - const paycrestValidatorFactory = await hardhat.ethers.getContractFactory( - "PaycrestValidator" - ); - const paycrestValidator = await upgrades.deployProxy( - paycrestValidatorFactory, - [paycrest.address] - ); - await paycrestValidator.deployed(); - console.log("paycrest Validator deployed to:", paycrestValidator.address); - - // const usdt = await hardhat.ethers.getContractAt( - // "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", - // USDT_ADDRESS - // ); - - // const usdc = await hardhat.ethers.getContractAt( - // "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", - // USDC_ADDRESS - // ); - - // await hre.network.provider.request({ - // method: "hardhat_impersonateAccount", - // params: [IMPERSONATE_ACCOUNT], - // }); - // const impersonator = ethers.provider.getSigner(IMPERSONATE_ACCOUNT); - - return { - paycrestValidator, - paycrest, - mockUSDC - }; -} - -const paycrestValidatorFixture = - hardhat.deployments.createFixture(paycrestValidator); - -module.exports = { - paycrestValidatorFixture, -};